spv.nonSquare.vert

Linked vertex stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 91

                              Source GLSL 120
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4
                              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
