--- /dev/null
+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): 8000a
+// 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