spv.nonSquare.vert

Linked vertex stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 91

                              Source GLSL 120
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Name 4  "main"
                              Name 10  "a"
                              Name 13  "v3"
                              Name 17  "m23"
                              Name 20  "b"
                              Name 23  "m32"
                              Name 29  "gl_Position"
                              Name 56  "v4"
                              Decorate 29(gl_Position) BuiltIn Position
                              Decorate 75 NoStaticUse
                              Decorate 79 NoStaticUse
                              Decorate 90 NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypeVector 7(float) 2
               9:             TypePointer Function 8(fvec2)
              11:             TypeVector 7(float) 3
              12:             TypePointer Input 11(fvec3)
          13(v3):     12(ptr) Variable Input
              15:             TypeMatrix 11(fvec3) 2
              16:             TypePointer Function 15
              21:             TypeMatrix 8(fvec2) 3
              22:             TypePointer UniformConstant 21
         23(m32):     22(ptr) Variable UniformConstant
              27:             TypeVector 7(float) 4
              28:             TypePointer Output 27(fvec4)
 29(gl_Position):     28(ptr) Variable Output
              32:             TypeMatrix 11(fvec3) 3
              36:    7(float) Constant 0
              41:             TypeMatrix 27(fvec4) 4
              42:    7(float) Constant 1077936128
              43:    7(float) Constant 1086324736
              44:   27(fvec4) ConstantComposite 42 43 36 36
              45:    7(float) Constant 1091567616
              46:    7(float) Constant 1094713344
              47:   27(fvec4) ConstantComposite 45 46 36 36
              48:    7(float) Constant 1097859072
              49:    7(float) Constant 1099956224
              50:   27(fvec4) ConstantComposite 48 49 36 36
              51:    7(float) Constant 1101529088
              52:    7(float) Constant 1103101952
              53:   27(fvec4) ConstantComposite 51 52 36 36
              54:          41 ConstantComposite 44 47 50 53
              55:             TypePointer Input 27(fvec4)
          56(v4):     55(ptr) Variable Input
              60:    7(float) Constant 1112014848
              61:    7(float) Constant 1121714176
              62:    7(float) Constant 1126825984
              63:    7(float) Constant 1130758144
              64:   27(fvec4) ConstantComposite 60 61 62 63
              66:    7(float) Constant 1106247680
              67:    7(float) Constant 1114636288
              68:   27(fvec4) ConstantComposite 66 67 36 36
              70:    7(float) Constant 1101004800
              71:    7(float) Constant 1092616192
              72:    7(float) Constant 1084227584
              73:   27(fvec4) ConstantComposite 70 71 43 72
              75:    8(fvec2) ConstantComposite 71 70
              76:             TypeMatrix 27(fvec4) 2
              77:   27(fvec4) ConstantComposite 42 36 36 36
              78:   27(fvec4) ConstantComposite 36 42 36 36
              79:          76 ConstantComposite 77 78
              80:             TypeMatrix 8(fvec2) 4
              81:    7(float) Constant 1065353216
              82:    7(float) Constant 1073741824
              83:    8(fvec2) ConstantComposite 81 82
              84:    7(float) Constant 1082130432
              85:    8(fvec2) ConstantComposite 42 84
              86:    8(fvec2) ConstantComposite 72 43
              87:    7(float) Constant 1088421888
              88:    7(float) Constant 1090519040
              89:    8(fvec2) ConstantComposite 87 88
              90:          80 ConstantComposite 83 85 86 89
         4(main):           2 Function None 3
               5:             Label
           10(a):      9(ptr) Variable Function
         17(m23):     16(ptr) Variable Function
           20(b):      9(ptr) Variable Function
              14:   11(fvec3) Load 13(v3)
              18:          15 Load 17(m23)
              19:    8(fvec2) VectorTimesMatrix 14 18
                              Store 10(a) 19
              24:          21 Load 23(m32)
              25:   11(fvec3) Load 13(v3)
              26:    8(fvec2) MatrixTimesVector 24 25
                              Store 20(b) 26
              30:          15 Load 17(m23)
              31:          21 Load 23(m32)
              33:          32 MatrixTimesMatrix 30 31
              34:   11(fvec3) Load 13(v3)
              35:   11(fvec3) MatrixTimesVector 33 34
              37:    7(float) CompositeExtract 35 0
              38:    7(float) CompositeExtract 35 1
              39:    7(float) CompositeExtract 35 2
              40:   27(fvec4) CompositeConstruct 37 38 39 36
              57:   27(fvec4) Load 56(v4)
              58:   27(fvec4) MatrixTimesVector 54 57
              59:   27(fvec4) FAdd 40 58
              65:   27(fvec4) FAdd 59 64
              69:   27(fvec4) FAdd 65 68
              74:   27(fvec4) FAdd 69 73
                              Store 29(gl_Position) 74
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
