hlsl.instance.geom
Shader version: 500
invocations = 5
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:10  Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
0:10    Function Parameters: 
0:10      'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10      'output' ( out structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10      'id' ( in uint)
0:?     Sequence
0:12      Sequence
0:12        move second child to first child ( temp int)
0:12          'i' ( temp int)
0:12          Constant:
0:12            0 (const int)
0:12        Loop with condition tested first: DontUnroll
0:12          Loop Condition
0:12          Compare Less Than ( temp bool)
0:12            'i' ( temp int)
0:12            Constant:
0:12              3 (const int)
0:12          Loop Body
0:?           Sequence
0:14            Sequence
0:14              Sequence
0:14                move second child to first child ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                  'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                  indirect index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    'i' ( temp int)
0:14                move second child to first child ( temp 4-component vector of float)
0:?                   'output.m_position' ( out 4-component vector of float Position)
0:14                  m_position: direct index for structure ( temp 4-component vector of float)
0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    Constant:
0:14                      0 (const int)
0:14                move second child to first child ( temp 4-component vector of float)
0:?                   'output.m_color' (layout( location=0) out 4-component vector of float)
0:14                  m_color: direct index for structure ( temp 4-component vector of float)
0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    Constant:
0:14                      1 (const int)
0:14              EmitVertex ( temp void)
0:12          Loop Terminal Expression
0:12          Pre-Increment ( temp int)
0:12            'i' ( temp int)
0:16      EndPrimitive ( temp void)
0:10  Function Definition: GeometryShader( ( temp void)
0:10    Function Parameters: 
0:?     Sequence
0:10      Sequence
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_position: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                0 (const int)
0:10            Constant:
0:10              0 (const int)
0:10          direct index ( in 4-component vector of float Position)
0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:10            Constant:
0:10              0 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_color: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                0 (const int)
0:10            Constant:
0:10              1 (const int)
0:10          direct index (layout( location=0) in 4-component vector of float)
0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:10            Constant:
0:10              0 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_position: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                1 (const int)
0:10            Constant:
0:10              0 (const int)
0:10          direct index ( in 4-component vector of float Position)
0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:10            Constant:
0:10              1 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_color: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                1 (const int)
0:10            Constant:
0:10              1 (const int)
0:10          direct index (layout( location=0) in 4-component vector of float)
0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:10            Constant:
0:10              1 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_position: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                2 (const int)
0:10            Constant:
0:10              0 (const int)
0:10          direct index ( in 4-component vector of float Position)
0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:10            Constant:
0:10              2 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_color: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                2 (const int)
0:10            Constant:
0:10              1 (const int)
0:10          direct index (layout( location=0) in 4-component vector of float)
0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:10            Constant:
0:10              2 (const int)
0:10      move second child to first child ( temp uint)
0:?         'id' ( temp uint)
0:?         'id' ( in uint InvocationID)
0:10      Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
0:?         'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?         'output' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?         'id' ( temp uint)
0:?   Linker Objects
0:?     'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:?     'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'id' ( in uint InvocationID)
0:?     'output.m_position' ( out 4-component vector of float Position)
0:?     'output.m_color' (layout( location=0) out 4-component vector of float)


Linked geometry stage:


Shader version: 500
invocations = 5
max_vertices = 3
input primitive = triangles
output primitive = triangle_strip
0:? Sequence
0:10  Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
0:10    Function Parameters: 
0:10      'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10      'output' ( out structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10      'id' ( in uint)
0:?     Sequence
0:12      Sequence
0:12        move second child to first child ( temp int)
0:12          'i' ( temp int)
0:12          Constant:
0:12            0 (const int)
0:12        Loop with condition tested first: DontUnroll
0:12          Loop Condition
0:12          Compare Less Than ( temp bool)
0:12            'i' ( temp int)
0:12            Constant:
0:12              3 (const int)
0:12          Loop Body
0:?           Sequence
0:14            Sequence
0:14              Sequence
0:14                move second child to first child ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                  'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                  indirect index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    'input' ( in 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    'i' ( temp int)
0:14                move second child to first child ( temp 4-component vector of float)
0:?                   'output.m_position' ( out 4-component vector of float Position)
0:14                  m_position: direct index for structure ( temp 4-component vector of float)
0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    Constant:
0:14                      0 (const int)
0:14                move second child to first child ( temp 4-component vector of float)
0:?                   'output.m_color' (layout( location=0) out 4-component vector of float)
0:14                  m_color: direct index for structure ( temp 4-component vector of float)
0:14                    'flattenTemp' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:14                    Constant:
0:14                      1 (const int)
0:14              EmitVertex ( temp void)
0:12          Loop Terminal Expression
0:12          Pre-Increment ( temp int)
0:12            'i' ( temp int)
0:16      EndPrimitive ( temp void)
0:10  Function Definition: GeometryShader( ( temp void)
0:10    Function Parameters: 
0:?     Sequence
0:10      Sequence
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_position: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                0 (const int)
0:10            Constant:
0:10              0 (const int)
0:10          direct index ( in 4-component vector of float Position)
0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:10            Constant:
0:10              0 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_color: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                0 (const int)
0:10            Constant:
0:10              1 (const int)
0:10          direct index (layout( location=0) in 4-component vector of float)
0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:10            Constant:
0:10              0 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_position: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                1 (const int)
0:10            Constant:
0:10              0 (const int)
0:10          direct index ( in 4-component vector of float Position)
0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:10            Constant:
0:10              1 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_color: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                1 (const int)
0:10            Constant:
0:10              1 (const int)
0:10          direct index (layout( location=0) in 4-component vector of float)
0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:10            Constant:
0:10              1 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_position: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                2 (const int)
0:10            Constant:
0:10              0 (const int)
0:10          direct index ( in 4-component vector of float Position)
0:?             'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:10            Constant:
0:10              2 (const int)
0:10        move second child to first child ( temp 4-component vector of float)
0:10          m_color: direct index for structure ( temp 4-component vector of float)
0:10            direct index ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?               'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:10              Constant:
0:10                2 (const int)
0:10            Constant:
0:10              1 (const int)
0:10          direct index (layout( location=0) in 4-component vector of float)
0:?             'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:10            Constant:
0:10              2 (const int)
0:10      move second child to first child ( temp uint)
0:?         'id' ( temp uint)
0:?         'id' ( in uint InvocationID)
0:10      Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void)
0:?         'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?         'output' ( temp structure{ temp 4-component vector of float m_position,  temp 4-component vector of float m_color})
0:?         'id' ( temp uint)
0:?   Linker Objects
0:?     'input.m_position' ( in 3-element array of 4-component vector of float Position)
0:?     'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float)
0:?     'id' ( in uint InvocationID)
0:?     'output.m_position' ( out 4-component vector of float Position)
0:?     'output.m_color' (layout( location=0) out 4-component vector of float)

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

                              Capability Geometry
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "GeometryShader" 39 43 52 57 76
                              ExecutionMode 4 Triangles
                              ExecutionMode 4 Invocations 5
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 3
                              Source HLSL 500
                              Name 4  "GeometryShader"
                              Name 8  "VertexShaderOutput"
                              MemberName 8(VertexShaderOutput) 0  "m_position"
                              MemberName 8(VertexShaderOutput) 1  "m_color"
                              Name 19  "@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;"
                              Name 16  "input"
                              Name 17  "output"
                              Name 18  "id"
                              Name 23  "i"
                              Name 34  "flattenTemp"
                              Name 39  "output.m_position"
                              Name 43  "output.m_color"
                              Name 49  "input"
                              Name 52  "input.m_position"
                              Name 57  "input.m_color"
                              Name 74  "id"
                              Name 76  "id"
                              Name 78  "output"
                              Name 79  "param"
                              Name 81  "param"
                              Name 82  "param"
                              Decorate 39(output.m_position) BuiltIn Position
                              Decorate 43(output.m_color) Location 0
                              Decorate 52(input.m_position) BuiltIn Position
                              Decorate 57(input.m_color) Location 0
                              Decorate 76(id) BuiltIn InvocationId
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
8(VertexShaderOutput):             TypeStruct 7(fvec4) 7(fvec4)
               9:             TypeInt 32 0
              10:      9(int) Constant 3
              11:             TypeArray 8(VertexShaderOutput) 10
              12:             TypePointer Function 11
              13:             TypePointer Function 8(VertexShaderOutput)
              14:             TypePointer Function 9(int)
              15:             TypeFunction 2 12(ptr) 13(ptr) 14(ptr)
              21:             TypeInt 32 1
              22:             TypePointer Function 21(int)
              24:     21(int) Constant 0
              31:     21(int) Constant 3
              32:             TypeBool
              38:             TypePointer Output 7(fvec4)
39(output.m_position):     38(ptr) Variable Output
              40:             TypePointer Function 7(fvec4)
43(output.m_color):     38(ptr) Variable Output
              44:     21(int) Constant 1
              50:             TypeArray 7(fvec4) 10
              51:             TypePointer Input 50
52(input.m_position):     51(ptr) Variable Input
              53:             TypePointer Input 7(fvec4)
57(input.m_color):     51(ptr) Variable Input
              67:     21(int) Constant 2
              75:             TypePointer Input 9(int)
          76(id):     75(ptr) Variable Input
4(GeometryShader):           2 Function None 3
               5:             Label
       49(input):     12(ptr) Variable Function
          74(id):     14(ptr) Variable Function
      78(output):     13(ptr) Variable Function
       79(param):     12(ptr) Variable Function
       81(param):     13(ptr) Variable Function
       82(param):     14(ptr) Variable Function
              54:     53(ptr) AccessChain 52(input.m_position) 24
              55:    7(fvec4) Load 54
              56:     40(ptr) AccessChain 49(input) 24 24
                              Store 56 55
              58:     53(ptr) AccessChain 57(input.m_color) 24
              59:    7(fvec4) Load 58
              60:     40(ptr) AccessChain 49(input) 24 44
                              Store 60 59
              61:     53(ptr) AccessChain 52(input.m_position) 44
              62:    7(fvec4) Load 61
              63:     40(ptr) AccessChain 49(input) 44 24
                              Store 63 62
              64:     53(ptr) AccessChain 57(input.m_color) 44
              65:    7(fvec4) Load 64
              66:     40(ptr) AccessChain 49(input) 44 44
                              Store 66 65
              68:     53(ptr) AccessChain 52(input.m_position) 67
              69:    7(fvec4) Load 68
              70:     40(ptr) AccessChain 49(input) 67 24
                              Store 70 69
              71:     53(ptr) AccessChain 57(input.m_color) 67
              72:    7(fvec4) Load 71
              73:     40(ptr) AccessChain 49(input) 67 44
                              Store 73 72
              77:      9(int) Load 76(id)
                              Store 74(id) 77
              80:          11 Load 49(input)
                              Store 79(param) 80
              83:      9(int) Load 74(id)
                              Store 82(param) 83
              84:           2 FunctionCall 19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;) 79(param) 81(param) 82(param)
              85:8(VertexShaderOutput) Load 81(param)
                              Store 78(output) 85
                              Return
                              FunctionEnd
19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;):           2 Function None 15
       16(input):     12(ptr) FunctionParameter
      17(output):     13(ptr) FunctionParameter
          18(id):     14(ptr) FunctionParameter
              20:             Label
           23(i):     22(ptr) Variable Function
 34(flattenTemp):     13(ptr) Variable Function
                              Store 23(i) 24
                              Branch 25
              25:             Label
                              LoopMerge 27 28 DontUnroll 
                              Branch 29
              29:             Label
              30:     21(int) Load 23(i)
              33:    32(bool) SLessThan 30 31
                              BranchConditional 33 26 27
              26:               Label
              35:     21(int)   Load 23(i)
              36:     13(ptr)   AccessChain 16(input) 35
              37:8(VertexShaderOutput)   Load 36
                                Store 34(flattenTemp) 37
              41:     40(ptr)   AccessChain 34(flattenTemp) 24
              42:    7(fvec4)   Load 41
                                Store 39(output.m_position) 42
              45:     40(ptr)   AccessChain 34(flattenTemp) 44
              46:    7(fvec4)   Load 45
                                Store 43(output.m_color) 46
                                EmitVertex
                                Branch 28
              28:               Label
              47:     21(int)   Load 23(i)
              48:     21(int)   IAdd 47 44
                                Store 23(i) 48
                                Branch 25
              27:             Label
                              EndPrimitive
                              Return
                              FunctionEnd
