link.vk.multiBlocksValid.1.0.geom
Shader version: 430
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:48  Function Definition: main( ( global void)
0:48    Function Parameters: 
0:50    Sequence
0:50      move second child to first child ( temp highp 4-component vector of float)
0:50        'oColor' (layout( stream=0) out highp 4-component vector of float)
0:50        component-wise multiply ( temp highp 4-component vector of float)
0:50          color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:50            'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:50            Constant:
0:50              0 (const int)
0:50          Function Call: getColor2( ( global highp 4-component vector of float)
0:52      move second child to first child ( temp highp float)
0:52        'globalF' ( global highp float)
0:52        Constant:
0:52          1.000000
0:54      Sequence
0:54        Sequence
0:54          move second child to first child ( temp highp int)
0:54            'i' ( temp highp int)
0:54            Constant:
0:54              0 (const int)
0:54        Loop with condition tested first
0:54          Loop Condition
0:54          Compare Less Than ( temp bool)
0:54            'i' ( temp highp int)
0:54            Constant:
0:54              3 (const int)
0:54          Loop Body
0:56          Sequence
0:56            move second child to first child ( temp highp 4-component vector of float)
0:56              gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
0:56                'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:56                Constant:
0:56                  0 (const uint)
0:56              matrix-times-vector ( temp highp 4-component vector of float)
0:56                uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
0:56                  'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:56                  Constant:
0:56                    0 (const int)
0:56                Function Call: getWorld(i1; ( global highp 4-component vector of float)
0:56                  'i' ( temp highp int)
0:57            move second child to first child ( temp highp 4-component vector of float)
0:57              val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
0:57                'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:57                Constant:
0:57                  0 (const int)
0:57              add ( temp highp 4-component vector of float)
0:57                color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:57                  'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:57                  Constant:
0:57                    0 (const int)
0:57                vector-scale ( temp highp 4-component vector of float)
0:57                  v2: direct index for structure ( in highp 4-component vector of float)
0:57                    indirect index ( temp block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:57                      'iV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:57                      'i' ( temp highp int)
0:57                    Constant:
0:57                      1 (const int)
0:57                  'globalF' ( global highp float)
0:58            EmitVertex ( global void)
0:54          Loop Terminal Expression
0:54          Post-Increment ( temp highp int)
0:54            'i' ( temp highp int)
0:61      EndPrimitive ( global void)
0:?   Linker Objects
0:?     'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:?     'iV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:?     'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:?     'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:?     'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
0:?     'oColor' (layout( stream=0) out highp 4-component vector of float)
0:?     'globalF' ( global highp float)
0:?     'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance})

link.vk.multiBlocksValid.1.1.geom
Shader version: 430
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:44  Function Definition: getColor2( ( global highp 4-component vector of float)
0:44    Function Parameters: 
0:46    Sequence
0:46      Branch: Return with expression
0:46        color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
0:46          'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:46          Constant:
0:46            2 (const int)
0:49  Function Definition: getWorld(i1; ( global highp 4-component vector of float)
0:49    Function Parameters: 
0:49      'i' ( in highp int)
0:51    Sequence
0:51      move second child to first child ( temp highp 4-component vector of float)
0:51        val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
0:51          'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:51          Constant:
0:51            0 (const uint)
0:51        Constant:
0:51          1.000000
0:51          1.000000
0:51          1.000000
0:51          1.000000
0:52      Branch: Return with expression
0:52        matrix-times-vector ( temp highp 4-component vector of float)
0:52          uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
0:52            'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:52            Constant:
0:52              1 (const int)
0:52          v1: direct index for structure ( in highp 4-component vector of float)
0:52            indirect index ( temp block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:52              'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:52              'i' ( in highp int)
0:52            Constant:
0:52              0 (const int)
0:?   Linker Objects
0:?     'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:?     'uBuffer' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
0:?     'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:?     'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:?     'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:?     'P' ( in 3-element array of highp 4-component vector of float)


Linked geometry stage:

WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
    uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}"
WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
    uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}"
WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
    uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}"
WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
    oV: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}" versus anon@0: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}"
WARNING: Linking geometry stage: Matched shader interfaces are using different instance names.
    iV: " in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2}" versus iVV: " in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2}"

Shader version: 430
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:48  Function Definition: main( ( global void)
0:48    Function Parameters: 
0:50    Sequence
0:50      move second child to first child ( temp highp 4-component vector of float)
0:50        'oColor' (layout( stream=0) out highp 4-component vector of float)
0:50        component-wise multiply ( temp highp 4-component vector of float)
0:50          color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:50            'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:50            Constant:
0:50              0 (const int)
0:50          Function Call: getColor2( ( global highp 4-component vector of float)
0:52      move second child to first child ( temp highp float)
0:52        'globalF' ( global highp float)
0:52        Constant:
0:52          1.000000
0:54      Sequence
0:54        Sequence
0:54          move second child to first child ( temp highp int)
0:54            'i' ( temp highp int)
0:54            Constant:
0:54              0 (const int)
0:54        Loop with condition tested first
0:54          Loop Condition
0:54          Compare Less Than ( temp bool)
0:54            'i' ( temp highp int)
0:54            Constant:
0:54              3 (const int)
0:54          Loop Body
0:56          Sequence
0:56            move second child to first child ( temp highp 4-component vector of float)
0:56              gl_Position: direct index for structure (layout( stream=0) gl_Position highp 4-component vector of float Position)
0:56                'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
0:56                Constant:
0:56                  0 (const uint)
0:56              matrix-times-vector ( temp highp 4-component vector of float)
0:56                uProj: direct index for structure (layout( column_major std140 offset=0) uniform highp 4X4 matrix of float)
0:56                  'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:56                  Constant:
0:56                    0 (const int)
0:56                Function Call: getWorld(i1; ( global highp 4-component vector of float)
0:56                  'i' ( temp highp int)
0:57            move second child to first child ( temp highp 4-component vector of float)
0:57              val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
0:57                'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:57                Constant:
0:57                  0 (const int)
0:57              add ( temp highp 4-component vector of float)
0:57                color1: direct index for structure (layout( column_major std140 offset=0) uniform highp 4-component vector of float)
0:57                  'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:57                  Constant:
0:57                    0 (const int)
0:57                vector-scale ( temp highp 4-component vector of float)
0:57                  v2: direct index for structure ( in highp 4-component vector of float)
0:57                    indirect index ( temp block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:57                      'iV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:57                      'i' ( temp highp int)
0:57                    Constant:
0:57                      1 (const int)
0:57                  'globalF' ( global highp float)
0:58            EmitVertex ( global void)
0:54          Loop Terminal Expression
0:54          Post-Increment ( temp highp int)
0:54            'i' ( temp highp int)
0:61      EndPrimitive ( global void)
0:44  Function Definition: getColor2( ( global highp 4-component vector of float)
0:44    Function Parameters: 
0:46    Sequence
0:46      Branch: Return with expression
0:46        color2: direct index for structure (layout( column_major std140 offset=32) uniform highp 4-component vector of float)
0:46          'uColor' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:46          Constant:
0:46            2 (const int)
0:49  Function Definition: getWorld(i1; ( global highp 4-component vector of float)
0:49    Function Parameters: 
0:49      'i' ( in highp int)
0:51    Sequence
0:51      move second child to first child ( temp highp 4-component vector of float)
0:51        val1: direct index for structure (layout( stream=0) out highp 4-component vector of float)
0:51          'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:51          Constant:
0:51            0 (const uint)
0:51        Constant:
0:51          1.000000
0:51          1.000000
0:51          1.000000
0:51          1.000000
0:52      Branch: Return with expression
0:52        matrix-times-vector ( temp highp 4-component vector of float)
0:52          uWorld: direct index for structure (layout( column_major std140 offset=64) uniform highp 4X4 matrix of float)
0:52            'uMatrix' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:52            Constant:
0:52              1 (const int)
0:52          v1: direct index for structure ( in highp 4-component vector of float)
0:52            indirect index ( temp block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:52              'iVV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:52              'i' ( in highp int)
0:52            Constant:
0:52              0 (const int)
0:?   Linker Objects
0:?     'uM' (layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld})
0:?     'iV' ( in 3-element array of block{ in highp 4-component vector of float v1,  in highp 4-component vector of float v2})
0:?     'oV' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1})
0:?     'uC' (layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3})
0:?     'uBuf' (layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p})
0:?     'oColor' (layout( stream=0) out highp 4-component vector of float)
0:?     'globalF' ( global highp float)
0:?     'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance})
0:?     'P' ( in 3-element array of highp 4-component vector of float)

// Module Version 10000
// Generated by (magic number): 8000a
// Id's are bound by 101

                              Capability Geometry
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 18 46 61 68 100
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 3
                              Source GLSL 430
                              Name 4  "main"
                              Name 9  "getColor2("
                              Name 15  "getWorld(i1;"
                              Name 14  "i"
                              Name 18  "oColor"
                              Name 20  "ColorBlock"
                              MemberName 20(ColorBlock) 0  "color1"
                              MemberName 20(ColorBlock) 1  "b"
                              MemberName 20(ColorBlock) 2  "color2"
                              MemberName 20(ColorBlock) 3  "color3"
                              Name 22  "uC"
                              Name 30  "globalF"
                              Name 32  "i"
                              Name 44  "gl_PerVertex"
                              MemberName 44(gl_PerVertex) 0  "gl_Position"
                              MemberName 44(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 44(gl_PerVertex) 2  "gl_ClipDistance"
                              Name 46  ""
                              Name 48  "MatrixBlock"
                              MemberName 48(MatrixBlock) 0  "uProj"
                              MemberName 48(MatrixBlock) 1  "uWorld"
                              Name 50  "uM"
                              Name 54  "param"
                              Name 59  "Vertex"
                              MemberName 59(Vertex) 0  "val1"
                              Name 61  "oV"
                              Name 64  "Vertex"
                              MemberName 64(Vertex) 0  "v1"
                              MemberName 64(Vertex) 1  "v2"
                              Name 68  "iV"
                              Name 95  "BufferBlock"
                              MemberName 95(BufferBlock) 0  "p"
                              Name 97  "uBuf"
                              Name 100  "P"
                              Decorate 18(oColor) Location 2
                              MemberDecorate 20(ColorBlock) 0 Offset 0
                              MemberDecorate 20(ColorBlock) 1 Offset 16
                              MemberDecorate 20(ColorBlock) 2 Offset 32
                              MemberDecorate 20(ColorBlock) 3 Offset 48
                              Decorate 20(ColorBlock) Block
                              Decorate 22(uC) DescriptorSet 0
                              Decorate 22(uC) Binding 1
                              MemberDecorate 44(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 44(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 44(gl_PerVertex) 2 BuiltIn ClipDistance
                              Decorate 44(gl_PerVertex) Block
                              MemberDecorate 48(MatrixBlock) 0 ColMajor
                              MemberDecorate 48(MatrixBlock) 0 Offset 0
                              MemberDecorate 48(MatrixBlock) 0 MatrixStride 16
                              MemberDecorate 48(MatrixBlock) 1 ColMajor
                              MemberDecorate 48(MatrixBlock) 1 Offset 64
                              MemberDecorate 48(MatrixBlock) 1 MatrixStride 16
                              Decorate 48(MatrixBlock) Block
                              Decorate 50(uM) DescriptorSet 0
                              Decorate 50(uM) Binding 0
                              Decorate 59(Vertex) Block
                              Decorate 61(oV) Location 1
                              Decorate 64(Vertex) Block
                              Decorate 68(iV) Location 0
                              MemberDecorate 95(BufferBlock) 0 ColMajor
                              MemberDecorate 95(BufferBlock) 0 Offset 0
                              MemberDecorate 95(BufferBlock) 0 MatrixStride 16
                              Decorate 95(BufferBlock) BufferBlock
                              Decorate 97(uBuf) DescriptorSet 0
                              Decorate 97(uBuf) Binding 1
                              Decorate 100(P) Location 4
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeFunction 7(fvec4)
              11:             TypeInt 32 1
              12:             TypePointer Function 11(int)
              13:             TypeFunction 7(fvec4) 12(ptr)
              17:             TypePointer Output 7(fvec4)
      18(oColor):     17(ptr) Variable Output
              19:             TypeInt 32 0
  20(ColorBlock):             TypeStruct 7(fvec4) 19(int) 7(fvec4) 7(fvec4)
              21:             TypePointer Uniform 20(ColorBlock)
          22(uC):     21(ptr) Variable Uniform
              23:     11(int) Constant 0
              24:             TypePointer Uniform 7(fvec4)
              29:             TypePointer Private 6(float)
     30(globalF):     29(ptr) Variable Private
              31:    6(float) Constant 1065353216
              39:     11(int) Constant 3
              40:             TypeBool
              42:     19(int) Constant 1
              43:             TypeArray 6(float) 42
44(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 43
              45:             TypePointer Output 44(gl_PerVertex)
              46:     45(ptr) Variable Output
              47:             TypeMatrix 7(fvec4) 4
 48(MatrixBlock):             TypeStruct 47 47
              49:             TypePointer Uniform 48(MatrixBlock)
          50(uM):     49(ptr) Variable Uniform
              51:             TypePointer Uniform 47
      59(Vertex):             TypeStruct 7(fvec4)
              60:             TypePointer Output 59(Vertex)
          61(oV):     60(ptr) Variable Output
      64(Vertex):             TypeStruct 7(fvec4) 7(fvec4)
              65:     19(int) Constant 3
              66:             TypeArray 64(Vertex) 65
              67:             TypePointer Input 66
          68(iV):     67(ptr) Variable Input
              70:     11(int) Constant 1
              71:             TypePointer Input 7(fvec4)
              80:     11(int) Constant 2
              85:    7(fvec4) ConstantComposite 31 31 31 31
 95(BufferBlock):             TypeStruct 47
              96:             TypePointer Uniform 95(BufferBlock)
        97(uBuf):     96(ptr) Variable Uniform
              98:             TypeArray 7(fvec4) 65
              99:             TypePointer Input 98
          100(P):     99(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
           32(i):     12(ptr) Variable Function
       54(param):     12(ptr) Variable Function
              25:     24(ptr) AccessChain 22(uC) 23
              26:    7(fvec4) Load 25
              27:    7(fvec4) FunctionCall 9(getColor2()
              28:    7(fvec4) FMul 26 27
                              Store 18(oColor) 28
                              Store 30(globalF) 31
                              Store 32(i) 23
                              Branch 33
              33:             Label
                              LoopMerge 35 36 None
                              Branch 37
              37:             Label
              38:     11(int) Load 32(i)
              41:    40(bool) SLessThan 38 39
                              BranchConditional 41 34 35
              34:               Label
              52:     51(ptr)   AccessChain 50(uM) 23
              53:          47   Load 52
              55:     11(int)   Load 32(i)
                                Store 54(param) 55
              56:    7(fvec4)   FunctionCall 15(getWorld(i1;) 54(param)
              57:    7(fvec4)   MatrixTimesVector 53 56
              58:     17(ptr)   AccessChain 46 23
                                Store 58 57
              62:     24(ptr)   AccessChain 22(uC) 23
              63:    7(fvec4)   Load 62
              69:     11(int)   Load 32(i)
              72:     71(ptr)   AccessChain 68(iV) 69 70
              73:    7(fvec4)   Load 72
              74:    6(float)   Load 30(globalF)
              75:    7(fvec4)   VectorTimesScalar 73 74
              76:    7(fvec4)   FAdd 63 75
              77:     17(ptr)   AccessChain 61(oV) 23
                                Store 77 76
                                EmitVertex
                                Branch 36
              36:               Label
              78:     11(int)   Load 32(i)
              79:     11(int)   IAdd 78 70
                                Store 32(i) 79
                                Branch 33
              35:             Label
                              EndPrimitive
                              Return
                              FunctionEnd
   9(getColor2():    7(fvec4) Function None 8
              10:             Label
              81:     24(ptr) AccessChain 22(uC) 80
              82:    7(fvec4) Load 81
                              ReturnValue 82
                              FunctionEnd
15(getWorld(i1;):    7(fvec4) Function None 13
           14(i):     12(ptr) FunctionParameter
              16:             Label
              86:     17(ptr) AccessChain 61(oV) 23
                              Store 86 85
              87:     51(ptr) AccessChain 50(uM) 70
              88:          47 Load 87
              89:     11(int) Load 14(i)
              90:     71(ptr) AccessChain 68(iV) 89 23
              91:    7(fvec4) Load 90
              92:    7(fvec4) MatrixTimesVector 88 91
                              ReturnValue 92
                              FunctionEnd
