spv.qualifiers.vert
Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.


Linked vertex stage:


// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 26

                              Source GLSL 430
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Name 4  "main"
                              Name 10  "outVc"
                              Name 12  "inV"
                              Name 14  "outVs"
                              Name 16  "outVf"
                              Name 18  "outVn"
                              Name 20  "outVcn"
                              Name 24  "gl_VertexID"
                              Name 25  "gl_InstanceID"
                              Decorate 10(outVc) Smooth
                              Decorate 14(outVs) Smooth
                              Decorate 16(outVf) Flat
                              Decorate 18(outVn) Noperspective
                              Decorate 20(outVcn) Noperspective
                              Decorate 24(gl_VertexID) BuiltIn VertexId
                              Decorate 24(gl_VertexID) NoStaticUse
                              Decorate 25(gl_InstanceID) BuiltIn InstanceId
                              Decorate 25(gl_InstanceID) NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypeVector 7(float) 4
               9:             TypePointer Output 8(fvec4)
       10(outVc):      9(ptr) Variable Output
              11:             TypePointer Input 8(fvec4)
         12(inV):     11(ptr) Variable Input
       14(outVs):      9(ptr) Variable Output
       16(outVf):      9(ptr) Variable Output
       18(outVn):      9(ptr) Variable Output
      20(outVcn):      9(ptr) Variable Output
              22:             TypeInt 32 1
              23:             TypePointer Input 22(int)
 24(gl_VertexID):     23(ptr) Variable Input
25(gl_InstanceID):     23(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              13:    8(fvec4) Load 12(inV)
                              Store 10(outVc) 13
              15:    8(fvec4) Load 12(inV)
                              Store 14(outVs) 15
              17:    8(fvec4) Load 12(inV)
                              Store 16(outVf) 17
              19:    8(fvec4) Load 12(inV)
                              Store 18(outVn) 19
              21:    8(fvec4) Load 12(inV)
                              Store 20(outVcn) 21
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
