spv.300BuiltIns.vert
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.


Linked vertex stage:


// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 42

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 10 14 21 34
                              Source ESSL 310
                              Name 4  "main"
                              Name 8  "gl_PerVertex"
                              MemberName 8(gl_PerVertex) 0  "gl_Position"
                              MemberName 8(gl_PerVertex) 1  "gl_PointSize"
                              Name 10  ""
                              Name 14  "ps"
                              Name 21  "gl_VertexIndex"
                              Name 34  "gl_InstanceIndex"
                              MemberDecorate 8(gl_PerVertex) 0 Invariant
                              MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize
                              Decorate 8(gl_PerVertex) Block
                              Decorate 14(ps) RelaxedPrecision
                              Decorate 15 RelaxedPrecision
                              Decorate 21(gl_VertexIndex) BuiltIn VertexIndex
                              Decorate 30 RelaxedPrecision
                              Decorate 34(gl_InstanceIndex) BuiltIn InstanceIndex
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
 8(gl_PerVertex):             TypeStruct 7(fvec4) 6(float)
               9:             TypePointer Output 8(gl_PerVertex)
              10:      9(ptr) Variable Output
              11:             TypeInt 32 1
              12:     11(int) Constant 0
              13:             TypePointer Input 6(float)
          14(ps):     13(ptr) Variable Input
              17:             TypePointer Output 7(fvec4)
              19:     11(int) Constant 4
              20:             TypePointer Input 11(int)
21(gl_VertexIndex):     20(ptr) Variable Input
              29:     11(int) Constant 1
              31:             TypePointer Output 6(float)
              33:     11(int) Constant 5
34(gl_InstanceIndex):     20(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              15:    6(float) Load 14(ps)
              16:    7(fvec4) CompositeConstruct 15 15 15 15
              18:     17(ptr) AccessChain 10 12
                              Store 18 16
              22:     11(int) Load 21(gl_VertexIndex)
              23:     11(int) ISub 19 22
              24:    6(float) ConvertSToF 23
              25:     17(ptr) AccessChain 10 12
              26:    7(fvec4) Load 25
              27:    7(fvec4) VectorTimesScalar 26 24
              28:     17(ptr) AccessChain 10 12
                              Store 28 27
              30:    6(float) Load 14(ps)
              32:     31(ptr) AccessChain 10 29
                              Store 32 30
              35:     11(int) Load 34(gl_InstanceIndex)
              36:     11(int) ISub 33 35
              37:    6(float) ConvertSToF 36
              38:     31(ptr) AccessChain 10 29
              39:    6(float) Load 38
              40:    6(float) FMul 39 37
              41:     31(ptr) AccessChain 10 29
                              Store 41 40
                              Return
                              FunctionEnd
