hlsl.structarray.flatten.geom
Shader version: 500
invocations = -1
max_vertices = 4
input primitive = lines
output primitive = triangle_strip
0:? Sequence
0:16  Function Definition: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void)
0:16    Function Parameters: 
0:16      'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:16      'outStream' ( out structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?     Sequence
0:19      move second child to first child ( temp 4-component vector of float)
0:19        color: direct index for structure ( temp 4-component vector of float)
0:19          'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:19          Constant:
0:19            1 (const int)
0:19        color: direct index for structure ( temp 4-component vector of float)
0:19          direct index ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:19            'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:19            Constant:
0:19              1 (const int)
0:19          Constant:
0:19            1 (const int)
0:20      move second child to first child ( temp 2-component vector of float)
0:20        uv: direct index for structure ( temp 2-component vector of float)
0:20          'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:20          Constant:
0:20            2 (const int)
0:20        uv: direct index for structure ( temp 2-component vector of float)
0:20          direct index ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:20            'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:20            Constant:
0:20              1 (const int)
0:20          Constant:
0:20            2 (const int)
0:21      move second child to first child ( temp 4-component vector of float)
0:21        position: direct index for structure ( temp 4-component vector of float)
0:21          'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:21          Constant:
0:21            0 (const int)
0:21        position: direct index for structure ( temp 4-component vector of float)
0:21          direct index ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:21            'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:21            Constant:
0:21              1 (const int)
0:21          Constant:
0:21            0 (const int)
0:22      Sequence
0:22        Sequence
0:22          move second child to first child ( temp 4-component vector of float)
0:?             'outStream.position' ( out 4-component vector of float Position)
0:22            position: direct index for structure ( temp 4-component vector of float)
0:22              'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:22              Constant:
0:22                0 (const int)
0:22          move second child to first child ( temp 4-component vector of float)
0:?             'outStream.color' (layout( location=0) out 4-component vector of float)
0:22            color: direct index for structure ( temp 4-component vector of float)
0:22              'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:22              Constant:
0:22                1 (const int)
0:22          move second child to first child ( temp 2-component vector of float)
0:?             'outStream.uv' (layout( location=1) out 2-component vector of float)
0:22            uv: direct index for structure ( temp 2-component vector of float)
0:22              'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:22              Constant:
0:22                2 (const int)
0:22        EmitVertex ( temp void)
0:16  Function Definition: main( ( temp void)
0:16    Function Parameters: 
0:?     Sequence
0:16      move second child to first child ( temp 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?         'vin' ( temp 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?         'vin' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:16      Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void)
0:?         'vin' ( temp 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?         'outStream' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?   Linker Objects
0:?     'vin' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?     'outStream.position' ( out 4-component vector of float Position)
0:?     'outStream.color' (layout( location=0) out 4-component vector of float)
0:?     'outStream.uv' (layout( location=1) out 2-component vector of float)


Linked geometry stage:


Shader version: 500
invocations = 1
max_vertices = 4
input primitive = lines
output primitive = triangle_strip
0:? Sequence
0:16  Function Definition: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void)
0:16    Function Parameters: 
0:16      'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:16      'outStream' ( out structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?     Sequence
0:19      move second child to first child ( temp 4-component vector of float)
0:19        color: direct index for structure ( temp 4-component vector of float)
0:19          'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:19          Constant:
0:19            1 (const int)
0:19        color: direct index for structure ( temp 4-component vector of float)
0:19          direct index ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:19            'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:19            Constant:
0:19              1 (const int)
0:19          Constant:
0:19            1 (const int)
0:20      move second child to first child ( temp 2-component vector of float)
0:20        uv: direct index for structure ( temp 2-component vector of float)
0:20          'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:20          Constant:
0:20            2 (const int)
0:20        uv: direct index for structure ( temp 2-component vector of float)
0:20          direct index ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:20            'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:20            Constant:
0:20              1 (const int)
0:20          Constant:
0:20            2 (const int)
0:21      move second child to first child ( temp 4-component vector of float)
0:21        position: direct index for structure ( temp 4-component vector of float)
0:21          'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:21          Constant:
0:21            0 (const int)
0:21        position: direct index for structure ( temp 4-component vector of float)
0:21          direct index ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:21            'vin' ( in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:21            Constant:
0:21              1 (const int)
0:21          Constant:
0:21            0 (const int)
0:22      Sequence
0:22        Sequence
0:22          move second child to first child ( temp 4-component vector of float)
0:?             'outStream.position' ( out 4-component vector of float Position)
0:22            position: direct index for structure ( temp 4-component vector of float)
0:22              'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:22              Constant:
0:22                0 (const int)
0:22          move second child to first child ( temp 4-component vector of float)
0:?             'outStream.color' (layout( location=0) out 4-component vector of float)
0:22            color: direct index for structure ( temp 4-component vector of float)
0:22              'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:22              Constant:
0:22                1 (const int)
0:22          move second child to first child ( temp 2-component vector of float)
0:?             'outStream.uv' (layout( location=1) out 2-component vector of float)
0:22            uv: direct index for structure ( temp 2-component vector of float)
0:22              'vout' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:22              Constant:
0:22                2 (const int)
0:22        EmitVertex ( temp void)
0:16  Function Definition: main( ( temp void)
0:16    Function Parameters: 
0:?     Sequence
0:16      move second child to first child ( temp 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?         'vin' ( temp 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?         'vin' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:16      Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void)
0:?         'vin' ( temp 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?         'outStream' ( temp structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?   Linker Objects
0:?     'vin' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float position,  temp 4-component vector of float color,  temp 2-component vector of float uv})
0:?     'outStream.position' ( out 4-component vector of float Position)
0:?     'outStream.color' (layout( location=0) out 4-component vector of float)
0:?     'outStream.uv' (layout( location=1) out 2-component vector of float)

// Module Version 10000
// Generated by (magic number): 80005
// Id's are bound by 58

                              Capability Geometry
               1:             ExtInstImport  "GLSL.std.450"
                              MemoryModel Logical GLSL450
                              EntryPoint Geometry 4  "main" 38 41 45 50
                              ExecutionMode 4 InputLines
                              ExecutionMode 4 Invocations 1
                              ExecutionMode 4 OutputTriangleStrip
                              ExecutionMode 4 OutputVertices 4
                              Source HLSL 500
                              Name 4  "main"
                              Name 9  "VertexData"
                              MemberName 9(VertexData) 0  "position"
                              MemberName 9(VertexData) 1  "color"
                              MemberName 9(VertexData) 2  "uv"
                              Name 14  "PS_IN"
                              MemberName 14(PS_IN) 0  "position"
                              MemberName 14(PS_IN) 1  "color"
                              MemberName 14(PS_IN) 2  "uv"
                              Name 19  "@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;"
                              Name 17  "vin"
                              Name 18  "outStream"
                              Name 21  "vout"
                              Name 38  "outStream.position"
                              Name 41  "outStream.color"
                              Name 45  "outStream.uv"
                              Name 48  "vin"
                              Name 50  "vin"
                              Name 52  "outStream"
                              Name 53  "param"
                              Name 55  "param"
                              Decorate 38(outStream.position) BuiltIn Position
                              Decorate 41(outStream.color) Location 0
                              Decorate 45(outStream.uv) Location 1
                              Decorate 50(vin) Location 0
               2:             TypeVoid
               3:             TypeFunction 2
               6:             TypeFloat 32
               7:             TypeVector 6(float) 4
               8:             TypeVector 6(float) 2
   9(VertexData):             TypeStruct 7(fvec4) 7(fvec4) 8(fvec2)
              10:             TypeInt 32 0
              11:     10(int) Constant 2
              12:             TypeArray 9(VertexData) 11
              13:             TypePointer Function 12
       14(PS_IN):             TypeStruct 7(fvec4) 7(fvec4) 8(fvec2)
              15:             TypePointer Function 14(PS_IN)
              16:             TypeFunction 2 13(ptr) 15(ptr)
              22:             TypeInt 32 1
              23:     22(int) Constant 1
              24:             TypePointer Function 7(fvec4)
              28:     22(int) Constant 2
              29:             TypePointer Function 8(fvec2)
              33:     22(int) Constant 0
              37:             TypePointer Output 7(fvec4)
38(outStream.position):     37(ptr) Variable Output
41(outStream.color):     37(ptr) Variable Output
              44:             TypePointer Output 8(fvec2)
45(outStream.uv):     44(ptr) Variable Output
              49:             TypePointer Input 12
         50(vin):     49(ptr) Variable Input
         4(main):           2 Function None 3
               5:             Label
         48(vin):     13(ptr) Variable Function
   52(outStream):     15(ptr) Variable Function
       53(param):     13(ptr) Variable Function
       55(param):     15(ptr) Variable Function
              51:          12 Load 50(vin)
                              Store 48(vin) 51
              54:          12 Load 48(vin)
                              Store 53(param) 54
              56:           2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 53(param) 55(param)
              57:   14(PS_IN) Load 55(param)
                              Store 52(outStream) 57
                              Return
                              FunctionEnd
19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;):           2 Function None 16
         17(vin):     13(ptr) FunctionParameter
   18(outStream):     15(ptr) FunctionParameter
              20:             Label
        21(vout):     15(ptr) Variable Function
              25:     24(ptr) AccessChain 17(vin) 23 23
              26:    7(fvec4) Load 25
              27:     24(ptr) AccessChain 21(vout) 23
                              Store 27 26
              30:     29(ptr) AccessChain 17(vin) 23 28
              31:    8(fvec2) Load 30
              32:     29(ptr) AccessChain 21(vout) 28
                              Store 32 31
              34:     24(ptr) AccessChain 17(vin) 23 33
              35:    7(fvec4) Load 34
              36:     24(ptr) AccessChain 21(vout) 33
                              Store 36 35
              39:     24(ptr) AccessChain 21(vout) 33
              40:    7(fvec4) Load 39
                              Store 38(outStream.position) 40
              42:     24(ptr) AccessChain 21(vout) 23
              43:    7(fvec4) Load 42
                              Store 41(outStream.color) 43
              46:     29(ptr) AccessChain 21(vout) 28
              47:    8(fvec2) Load 46
                              Store 45(outStream.uv) 47
                              EmitVertex
                              Return
                              FunctionEnd
