spv.300BuiltIns.vert

Linked vertex stage:


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

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