spv.simpleMat.vert

Linked vertex stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 44

                              Source GLSL 330
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Name 4  "main"
                              Name 10  "glPos"
                              Name 13  "mvp"
                              Name 16  "v"
                              Name 20  "f"
                              Name 24  "am3"
                              Name 35  "arraym"
                              Name 42  "gl_VertexID"
                              Name 43  "gl_InstanceID"
                              Decorate 10(glPos) Smooth
                              Decorate 20(f) Smooth
                              Decorate 42(gl_VertexID) BuiltIn VertexId
                              Decorate 42(gl_VertexID) NoStaticUse
                              Decorate 43(gl_InstanceID) BuiltIn InstanceId
                              Decorate 43(gl_InstanceID) NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypeVector 7(float) 4
               9:             TypePointer Output 8(fvec4)
       10(glPos):      9(ptr) Variable Output
              11:             TypeMatrix 8(fvec4) 4
              12:             TypePointer UniformConstant 11
         13(mvp):     12(ptr) Variable UniformConstant
              15:             TypePointer Input 8(fvec4)
           16(v):     15(ptr) Variable Input
              19:             TypePointer Output 7(float)
           20(f):     19(ptr) Variable Output
              21:             TypeVector 7(float) 3
              22:             TypeMatrix 21(fvec3) 3
              23:             TypePointer Input 22
         24(am3):     23(ptr) Variable Input
              25:             TypeInt 32 1
              26:     25(int) Constant 2
              27:             TypePointer Input 21(fvec3)
              31:             TypeInt 32 0
              32:     31(int) Constant 3
              33:             TypeArray 11 32
              34:             TypePointer Input 33
      35(arraym):     34(ptr) Variable Input
              36:     25(int) Constant 1
              41:             TypePointer Input 25(int)
 42(gl_VertexID):     41(ptr) Variable Input
43(gl_InstanceID):     41(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              14:          11 Load 13(mvp)
              17:    8(fvec4) Load 16(v)
              18:    8(fvec4) MatrixTimesVector 14 17
                              Store 10(glPos) 18
              28:     27(ptr) AccessChain 24(am3) 26
              29:   21(fvec3) Load 28
              30:    7(float) CompositeExtract 29 1
              37:     15(ptr) AccessChain 35(arraym) 36 26
              38:    8(fvec4) Load 37
              39:    7(float) CompositeExtract 38 3
              40:    7(float) FAdd 30 39
                              Store 20(f) 40
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
