iomap.variableOutBlockIn.2.vert
Shader version: 440
0:? Sequence
0:6  Function Definition: main( ( global void)
0:6    Function Parameters: 
0:8    Sequence
0:8      move second child to first child ( temp 4-component vector of float)
0:8        'a1' (layout( location=0) smooth out 4-component vector of float)
0:8        Constant:
0:8          1.000000
0:8          1.000000
0:8          1.000000
0:8          1.000000
0:9      move second child to first child ( temp 2-component vector of float)
0:9        'a2' (layout( location=1) smooth out 2-component vector of float)
0:9        Constant:
0:9          0.500000
0:9          0.500000
0:10      move second child to first child ( temp 4-component vector of float)
0:10        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:10          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:10          Constant:
0:10            0 (const uint)
0:10        Constant:
0:10          1.000000
0:10          1.000000
0:10          1.000000
0:10          1.000000
0:?   Linker Objects
0:?     'a1' (layout( location=0) smooth out 4-component vector of float)
0:?     'a2' (layout( location=1) smooth out 2-component vector of float)
0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out unsized 1-element array of float ClipDistance gl_ClipDistance})
0:?     'gl_VertexID' ( gl_VertexId int VertexId)
0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)

iomap.variableOutBlockIn.geom
Shader version: 440
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:14  Function Definition: main( ( global void)
0:14    Function Parameters: 
0:16    Sequence
0:16      move second child to first child ( temp 4-component vector of float)
0:16        'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:16        Constant:
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:17      move second child to first child ( temp 2-component vector of float)
0:17        'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:17        Constant:
0:17          0.500000
0:17          0.500000
0:18      move second child to first child ( temp 4-component vector of float)
0:18        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:18          '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:18          Constant:
0:18            0 (const uint)
0:18        Constant:
0:18          1.000000
0:18          1.000000
0:18          1.000000
0:18          1.000000
0:?   Linker Objects
0:?     'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1,  in 2-component vector of float a2})
0:?     'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:?     'a2' (layout( location=1 stream=0) out 2-component vector of 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})


Linked vertex stage:


Linked geometry stage:


Shader version: 440
0:? Sequence
0:6  Function Definition: main( ( global void)
0:6    Function Parameters: 
0:8    Sequence
0:8      move second child to first child ( temp 4-component vector of float)
0:8        'a1' (layout( location=0) smooth out 4-component vector of float)
0:8        Constant:
0:8          1.000000
0:8          1.000000
0:8          1.000000
0:8          1.000000
0:9      move second child to first child ( temp 2-component vector of float)
0:9        'a2' (layout( location=1) smooth out 2-component vector of float)
0:9        Constant:
0:9          0.500000
0:9          0.500000
0:10      move second child to first child ( temp 4-component vector of float)
0:10        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
0:10          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
0:10          Constant:
0:10            0 (const uint)
0:10        Constant:
0:10          1.000000
0:10          1.000000
0:10          1.000000
0:10          1.000000
0:?   Linker Objects
0:?     'a1' (layout( location=0) smooth out 4-component vector of float)
0:?     'a2' (layout( location=1) smooth out 2-component vector of float)
0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 1-element array of float ClipDistance gl_ClipDistance})
0:?     'gl_VertexID' ( gl_VertexId int VertexId)
0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
Shader version: 440
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:14  Function Definition: main( ( global void)
0:14    Function Parameters: 
0:16    Sequence
0:16      move second child to first child ( temp 4-component vector of float)
0:16        'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:16        Constant:
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:16          1.000000
0:17      move second child to first child ( temp 2-component vector of float)
0:17        'a2' (layout( location=1 stream=0) out 2-component vector of float)
0:17        Constant:
0:17          0.500000
0:17          0.500000
0:18      move second child to first child ( temp 4-component vector of float)
0:18        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
0:18          '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:18          Constant:
0:18            0 (const uint)
0:18        Constant:
0:18          1.000000
0:18          1.000000
0:18          1.000000
0:18          1.000000
0:?   Linker Objects
0:?     'gin' (layout( location=0) in 3-element array of block{ in 4-component vector of float a1,  in 2-component vector of float a2})
0:?     'a1' (layout( location=0 stream=0) out 4-component vector of float)
0:?     'a2' (layout( location=1 stream=0) out 2-component vector of 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})

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

                              Capability Shader
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Vertex 4  "main" 9 14 22 27 28
                              Source GLSL 440
                              Name 4  "main"
                              Name 9  "a1"
                              Name 14  "a2"
                              Name 20  "gl_PerVertex"
                              MemberName 20(gl_PerVertex) 0  "gl_Position"
                              MemberName 20(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 20(gl_PerVertex) 2  "gl_ClipDistance"
                              Name 22  ""
                              Name 27  "gl_VertexID"
                              Name 28  "gl_InstanceID"
                              Decorate 9(a1) Location 0
                              Decorate 14(a2) Location 1
                              MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
                              Decorate 20(gl_PerVertex) Block
                              Decorate 27(gl_VertexID) BuiltIn VertexId
                              Decorate 28(gl_InstanceID) BuiltIn InstanceId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
           9(a1):      8(ptr) Variable Output
              10:    6(float) Constant 1065353216
              11:    7(fvec4) ConstantComposite 10 10 10 10
              12:             TypeVector 6(float) 2
              13:             TypePointer Output 12(fvec2)
          14(a2):     13(ptr) Variable Output
              15:    6(float) Constant 1056964608
              16:   12(fvec2) ConstantComposite 15 15
              17:             TypeInt 32 0
              18:     17(int) Constant 1
              19:             TypeArray 6(float) 18
20(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 19
              21:             TypePointer Output 20(gl_PerVertex)
              22:     21(ptr) Variable Output
              23:             TypeInt 32 1
              24:     23(int) Constant 0
              26:             TypePointer Input 23(int)
 27(gl_VertexID):     26(ptr) Variable Input
28(gl_InstanceID):     26(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
                              Store 9(a1) 11
                              Store 14(a2) 16
              25:      8(ptr) AccessChain 22 24
                              Store 25 11
                              Return
                              FunctionEnd
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 31

                              Capability Geometry
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 9 14 22 30
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 3
                              Source GLSL 440
                              Name 4  "main"
                              Name 9  "a1"
                              Name 14  "a2"
                              Name 20  "gl_PerVertex"
                              MemberName 20(gl_PerVertex) 0  "gl_Position"
                              MemberName 20(gl_PerVertex) 1  "gl_PointSize"
                              MemberName 20(gl_PerVertex) 2  "gl_ClipDistance"
                              Name 22  ""
                              Name 26  "Inputs"
                              MemberName 26(Inputs) 0  "a1"
                              MemberName 26(Inputs) 1  "a2"
                              Name 30  "gin"
                              Decorate 9(a1) Location 0
                              Decorate 14(a2) Location 1
                              MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position
                              MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize
                              MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance
                              Decorate 20(gl_PerVertex) Block
                              Decorate 26(Inputs) Block
                              Decorate 30(gin) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypePointer Output 7(fvec4)
           9(a1):      8(ptr) Variable Output
              10:    6(float) Constant 1065353216
              11:    7(fvec4) ConstantComposite 10 10 10 10
              12:             TypeVector 6(float) 2
              13:             TypePointer Output 12(fvec2)
          14(a2):     13(ptr) Variable Output
              15:    6(float) Constant 1056964608
              16:   12(fvec2) ConstantComposite 15 15
              17:             TypeInt 32 0
              18:     17(int) Constant 1
              19:             TypeArray 6(float) 18
20(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 19
              21:             TypePointer Output 20(gl_PerVertex)
              22:     21(ptr) Variable Output
              23:             TypeInt 32 1
              24:     23(int) Constant 0
      26(Inputs):             TypeStruct 7(fvec4) 12(fvec2)
              27:     17(int) Constant 3
              28:             TypeArray 26(Inputs) 27
              29:             TypePointer Input 28
         30(gin):     29(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
                              Store 9(a1) 11
                              Store 14(a2) 16
              25:      8(ptr) AccessChain 22 24
                              Store 25 11
                              Return
                              FunctionEnd
