spv.430.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 63

                              Source GLSL 430
                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main"
                              Name 4  "main"
                              Name 11  "gl_PerVertex"
                              MemberName 11(gl_PerVertex) 0  "gl_ClipDistance"
                              Name 13  ""
                              Name 24  "bad"
                              Name 35  "badorder3"
                              Name 39  "f"
                              Name 43  "uv4"
                              Name 44  "badorder"
                              Name 45  "badorder2"
                              Name 46  "boundblock"
                              MemberName 46(boundblock) 0  "aoeu"
                              Name 48  "boundInst"
                              Name 49  "anonblock"
                              MemberName 49(anonblock) 0  "aoeu"
                              Name 51  ""
                              Name 55  "sampb1"
                              Name 58  "sampb2"
                              Name 59  "sampb4"
                              Name 61  "gl_VertexID"
                              Name 62  "gl_InstanceID"
                              MemberDecorate 11(gl_PerVertex) 0 BuiltIn ClipDistance
                              Decorate 11(gl_PerVertex) Block
                              Decorate 35(badorder3) Flat
                              Decorate 43(uv4) Location 4
                              Decorate 43(uv4) NoStaticUse
                              Decorate 29 NoStaticUse
                              Decorate 29 NoStaticUse
                              Decorate 44(badorder) NoStaticUse
                              Decorate 45(badorder2) Smooth
                              Decorate 45(badorder2) Invariant
                              Decorate 45(badorder2) NoStaticUse
                              Decorate 46(boundblock) GLSLShared
                              Decorate 46(boundblock) Block
                              Decorate 48(boundInst) Binding 3
                              Decorate 48(boundInst) NoStaticUse
                              Decorate 49(anonblock) GLSLShared
                              Decorate 49(anonblock) Block
                              Decorate 51 Binding 7
                              Decorate 51 NoStaticUse
                              Decorate 55(sampb1) Binding 4
                              Decorate 55(sampb1) NoStaticUse
                              Decorate 58(sampb2) Binding 5
                              Decorate 58(sampb2) NoStaticUse
                              Decorate 59(sampb4) Binding 31
                              Decorate 59(sampb4) NoStaticUse
                              Decorate 61(gl_VertexID) BuiltIn VertexId
                              Decorate 61(gl_VertexID) NoStaticUse
                              Decorate 62(gl_InstanceID) BuiltIn InstanceId
                              Decorate 62(gl_InstanceID) NoStaticUse
               2:             TypeVoid
               3:             TypeFunction 2
               7:             TypeFloat 32
               8:             TypeInt 32 0
               9:      8(int) Constant 3
              10:             TypeArray 7(float) 9
11(gl_PerVertex):             TypeStruct 10
              12:             TypePointer Output 11(gl_PerVertex)
              13:     12(ptr) Variable Output
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:     14(int) Constant 2
              17:    7(float) Constant 1080872141
              18:             TypePointer Output 7(float)
              20:             TypeVector 7(float) 4
              21:      8(int) Constant 10
              22:             TypeArray 20(fvec4) 21
              23:             TypePointer Input 22
         24(bad):     23(ptr) Variable Input
              25:             TypePointer Input 20(fvec4)
              29:    7(float) Constant 1082549862
              30:             TypeBool
              34:             TypePointer Output 20(fvec4)
   35(badorder3):     34(ptr) Variable Output
              38:             TypePointer UniformConstant 7(float)
           39(f):     38(ptr) Variable UniformConstant
              42:             TypePointer UniformConstant 20(fvec4)
         43(uv4):     42(ptr) Variable UniformConstant
    44(badorder):     25(ptr) Variable Input
   45(badorder2):     34(ptr) Variable Output
  46(boundblock):             TypeStruct 14(int)
              47:             TypePointer Uniform 46(boundblock)
   48(boundInst):     47(ptr) Variable Uniform
   49(anonblock):             TypeStruct 14(int)
              50:             TypePointer Uniform 49(anonblock)
              51:     50(ptr) Variable Uniform
              52:             TypeImage 7(float) 2D sampled format:Unknown
              53:             TypeSampledImage 52
              54:             TypePointer UniformConstant 53
      55(sampb1):     54(ptr) Variable UniformConstant
              56:             TypeArray 53 21
              57:             TypePointer UniformConstant 56
      58(sampb2):     57(ptr) Variable UniformConstant
      59(sampb4):     54(ptr) Variable UniformConstant
              60:             TypePointer Input 14(int)
 61(gl_VertexID):     60(ptr) Variable Input
62(gl_InstanceID):     60(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
              19:     18(ptr) AccessChain 13 15 16
                              Store 19 17
              26:     25(ptr) AccessChain 24(bad) 15
              27:   20(fvec4) Load 26
              28:    7(float) CompositeExtract 27 0
              31:    30(bool) FOrdEqual 28 29
                              SelectionMerge 33 None
                              BranchConditional 31 32 33
              32:               Label
              36:     25(ptr)   AccessChain 24(bad) 15
              37:   20(fvec4)   Load 36
                                Store 35(badorder3) 37
                                Branch 33
              33:             Label
              40:    7(float) Load 39(f)
              41:     18(ptr) AccessChain 13 15 15
                              Store 41 40
                              Branch 6
               6:             Label
                              Return
                              FunctionEnd
