spv.150.vert
// Module Version 10000
// Generated by (magic number): 80008
// Id's are bound by 63

                              Capability Shader
                              Capability ClipDistance
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 13 17 23 38 62
                              Source GLSL 150
                              Name 4  "main"
                              Name 11  "gl_PerVertex"
                              MemberName 11(gl_PerVertex) 0  "gl_Position"
                              MemberName 11(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 11(gl_PerVertex) 2  "gl_ClipDistance"
                              Name 13  ""
                              Name 17  "iv4"
                              Name 23  "ps"
                              Name 34  "s1"
                              MemberName 34(s1) 0  "a"
                              MemberName 34(s1) 1  "a2"
                              MemberName 34(s1) 2  "b"
                              Name 36  "s2"
                              MemberName 36(s2) 0  "c"
                              MemberName 36(s2) 1  "d"
                              Name 38  "s2out"
                              Name 40  "i"
                              Name 47  "s2D"
                              Name 62  "ui"
                              MemberDecorate 11(gl_PerVertex) 0 Invariant
                              MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
                              Decorate 11(gl_PerVertex) Block
                              Decorate 47(s2D) DescriptorSet 0
                              Decorate 47(s2D) Binding 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeInt 32 0
               9:      8(int) Constant 4
              10:             TypeArray 6(float) 9
11(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 10
              12:             TypePointer Output 11(gl_PerVertex)
              13:     12(ptr) Variable Output
              14:             TypeInt 32 1
              15:     14(int) Constant 0
              16:             TypePointer Input 7(fvec4)
         17(iv4):     16(ptr) Variable Input
              19:             TypePointer Output 7(fvec4)
              21:     14(int) Constant 1
              22:             TypePointer Input 6(float)
          23(ps):     22(ptr) Variable Input
              25:             TypePointer Output 6(float)
              27:     14(int) Constant 2
              28:      8(int) Constant 0
              32:      8(int) Constant 3
              33:             TypeArray 7(fvec4) 32
          34(s1):             TypeStruct 14(int) 14(int) 33
              35:             TypeArray 34(s1) 9
          36(s2):             TypeStruct 14(int) 35
              37:             TypePointer Output 36(s2)
       38(s2out):     37(ptr) Variable Output
              39:             TypePointer Function 14(int)
              44:             TypeImage 6(float) 2D sampled format:Unknown
              45:             TypeSampledImage 44
              46:             TypePointer UniformConstant 45
         47(s2D):     46(ptr) Variable UniformConstant
              49:             TypeVector 6(float) 2
              50:    6(float) Constant 1056964608
              51:   49(fvec2) ConstantComposite 50 50
              52:    6(float) Constant 0
              55:             TypeVector 6(float) 3
              56:   55(fvec3) ConstantComposite 50 50 50
              59:    6(float) Constant 1078774989
              61:             TypePointer Input 14(int)
          62(ui):     61(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
           40(i):     39(ptr) Variable Function
              18:    7(fvec4) Load 17(iv4)
              20:     19(ptr) AccessChain 13 15
                              Store 20 18
              24:    6(float) Load 23(ps)
              26:     25(ptr) AccessChain 13 21
                              Store 26 24
              29:     22(ptr) AccessChain 17(iv4) 28
              30:    6(float) Load 29
              31:     25(ptr) AccessChain 13 27 27
                              Store 31 30
              41:     14(int) Load 40(i)
              42:    6(float) Load 23(ps)
              43:     25(ptr) AccessChain 38(s2out) 21 41 27 27 32
                              Store 43 42
              48:          45 Load 47(s2D)
              53:    7(fvec4) ImageSampleExplicitLod 48 51 Lod 52
              54:          45 Load 47(s2D)
              57:    7(fvec4) ImageSampleProjExplicitLod 54 56 Lod 52
              58:          45 Load 47(s2D)
              60:    7(fvec4) ImageSampleExplicitLod 58 51 Lod 59
                              Return
                              FunctionEnd
