Flatten all interface variables (#2217)

Specifically, add flattening of arrayed io for geometry and
tesselation shaders. Previously some interface structs just had
builtins split out which caused some interfaces to not be exactly
the same as that of flattened adjacent stages, affecting validation
and correctness.

This obviates builtin splitting. That will be removed in a followup
commit. It was left in for this commit to better exhibit the functional
changes that were made.

Fixes #1660.
This commit is contained in:
greg-lunarg 2020-05-18 02:13:10 -06:00 committed by GitHub
parent 1a906168cd
commit 7c753a7253
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 3325 additions and 1561 deletions

View File

@ -89,23 +89,108 @@ triangle order = cw
0:63 Function Definition: main( ( temp void) 0:63 Function Definition: main( ( temp void)
0:63 Function Parameters: 0:63 Function Parameters:
0:? Sequence 0:? Sequence
0:63 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Sequence
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 move second child to first child ( temp 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 0 (const int)
0:63 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 direct index (layout( location=1) in 4-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:63 move second child to first child ( temp 3-component vector of float)
0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 0 (const int)
0:63 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63 Constant:
0:63 1 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 direct index (layout( location=1) in 4-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63 Constant:
0:63 1 (const int)
0:63 move second child to first child ( temp 3-component vector of float)
0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 2 (const int)
0:63 Constant:
0:63 0 (const int)
0:63 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63 Constant:
0:63 2 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 2 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 direct index (layout( location=1) in 4-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63 Constant:
0:63 2 (const int)
0:63 move second child to first child ( temp uint) 0:63 move second child to first child ( temp uint)
0:? 'pointId' ( temp uint) 0:? 'pointId' ( temp uint)
0:? 'pointId' ( in uint InvocationID) 0:? 'pointId' ( in uint InvocationID)
0:63 move second child to first child ( temp uint) 0:63 move second child to first child ( temp uint)
0:? 'patchId' ( temp uint) 0:? 'patchId' ( temp uint)
0:? 'patchId' ( in uint PrimitiveID) 0:? 'patchId' ( in uint PrimitiveID)
0:63 move second child to first child ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Sequence
0:63 indirect index (layout( location=0) out structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 move second child to first child ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'pointId' ( in uint InvocationID) 0:63 Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'pointId' ( temp uint)
0:? 'pointId' ( temp uint) 0:? 'patchId' ( temp uint)
0:? 'patchId' ( temp uint) 0:63 move second child to first child ( temp 3-component vector of float)
0:63 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'pointId' ( in uint InvocationID)
0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 0 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 indirect index (layout( location=1) out 4-component vector of float)
0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:? 'pointId' ( in uint InvocationID)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 1 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -168,8 +253,10 @@ triangle order = cw
0:? 1 (const int) 0:? 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:? 'pointId' ( in uint InvocationID) 0:? 'pointId' ( in uint InvocationID)
0:? 'patchId' ( in uint PrimitiveID) 0:? 'patchId' ( in uint PrimitiveID)
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
@ -269,23 +356,108 @@ triangle order = cw
0:63 Function Definition: main( ( temp void) 0:63 Function Definition: main( ( temp void)
0:63 Function Parameters: 0:63 Function Parameters:
0:? Sequence 0:? Sequence
0:63 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Sequence
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 move second child to first child ( temp 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 0 (const int)
0:63 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 0 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 direct index (layout( location=1) in 4-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63 Constant:
0:63 0 (const int)
0:63 move second child to first child ( temp 3-component vector of float)
0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 0 (const int)
0:63 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63 Constant:
0:63 1 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 1 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 direct index (layout( location=1) in 4-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63 Constant:
0:63 1 (const int)
0:63 move second child to first child ( temp 3-component vector of float)
0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 2 (const int)
0:63 Constant:
0:63 0 (const int)
0:63 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:63 Constant:
0:63 2 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 direct index ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 2 (const int)
0:63 Constant:
0:63 1 (const int)
0:63 direct index (layout( location=1) in 4-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:63 Constant:
0:63 2 (const int)
0:63 move second child to first child ( temp uint) 0:63 move second child to first child ( temp uint)
0:? 'pointId' ( temp uint) 0:? 'pointId' ( temp uint)
0:? 'pointId' ( in uint InvocationID) 0:? 'pointId' ( in uint InvocationID)
0:63 move second child to first child ( temp uint) 0:63 move second child to first child ( temp uint)
0:? 'patchId' ( temp uint) 0:? 'patchId' ( temp uint)
0:? 'patchId' ( in uint PrimitiveID) 0:? 'patchId' ( in uint PrimitiveID)
0:63 move second child to first child ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 Sequence
0:63 indirect index (layout( location=0) out structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 move second child to first child ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'pointId' ( in uint InvocationID) 0:63 Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Function Call: @main(struct-HullInputType-vf3-vf41[3];u1;u1; ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? 'pointId' ( temp uint)
0:? 'pointId' ( temp uint) 0:? 'patchId' ( temp uint)
0:? 'patchId' ( temp uint) 0:63 move second child to first child ( temp 3-component vector of float)
0:63 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'pointId' ( in uint InvocationID)
0:63 position: direct index for structure ( temp 3-component vector of float)
0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 0 (const int)
0:63 move second child to first child ( temp 4-component vector of float)
0:63 indirect index (layout( location=1) out 4-component vector of float)
0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:? 'pointId' ( in uint InvocationID)
0:63 color: direct index for structure ( temp 4-component vector of float)
0:63 'flattenTemp' ( temp structure{ temp 3-component vector of float position, temp 4-component vector of float color})
0:63 Constant:
0:63 1 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -348,8 +520,10 @@ triangle order = cw
0:? 1 (const int) 0:? 1 (const int)
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding}) 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform float tessellationAmount, layout( row_major std140) uniform 3-component vector of float padding})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? '@entryPointOutput.position' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float position, temp 4-component vector of float color}) 0:? '@entryPointOutput.color' (layout( location=1) out 3-element array of 4-component vector of float)
0:? 'patch.position' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'patch.color' (layout( location=1) in 3-element array of 4-component vector of float)
0:? 'pointId' ( in uint InvocationID) 0:? 'pointId' ( in uint InvocationID)
0:? 'patchId' ( in uint PrimitiveID) 0:? 'patchId' ( in uint PrimitiveID)
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
@ -357,12 +531,12 @@ triangle order = cw
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 127 // Id's are bound by 159
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 72 76 79 83 110 123 EntryPoint TessellationControl 4 "main" 73 80 99 102 113 120 142 155
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingEqual ExecutionMode 4 SpacingEqual
@ -392,33 +566,38 @@ triangle order = cw
Name 35 "" Name 35 ""
Name 56 "output" Name 56 "output"
Name 70 "patch" Name 70 "patch"
Name 72 "patch" Name 73 "patch.position"
Name 74 "pointId" Name 80 "patch.color"
Name 76 "pointId" Name 97 "pointId"
Name 78 "patchId" Name 99 "pointId"
Name 79 "patchId" Name 101 "patchId"
Name 83 "@entryPointOutput" Name 102 "patchId"
Name 85 "param" Name 104 "flattenTemp"
Name 87 "param"
Name 89 "param"
Name 102 "@patchConstantResult"
Name 103 "param"
Name 105 "param" Name 105 "param"
Name 110 "@patchConstantOutput.edges" Name 107 "param"
Name 123 "@patchConstantOutput.inside" Name 109 "param"
Name 113 "@entryPointOutput.position"
Name 120 "@entryPointOutput.color"
Name 134 "@patchConstantResult"
Name 135 "param"
Name 137 "param"
Name 142 "@patchConstantOutput.edges"
Name 155 "@patchConstantOutput.inside"
MemberDecorate 33(TessellationBuffer) 0 Offset 0 MemberDecorate 33(TessellationBuffer) 0 Offset 0
MemberDecorate 33(TessellationBuffer) 1 Offset 4 MemberDecorate 33(TessellationBuffer) 1 Offset 4
Decorate 33(TessellationBuffer) Block Decorate 33(TessellationBuffer) Block
Decorate 35 DescriptorSet 0 Decorate 35 DescriptorSet 0
Decorate 35 Binding 0 Decorate 35 Binding 0
Decorate 72(patch) Location 0 Decorate 73(patch.position) Location 0
Decorate 76(pointId) BuiltIn InvocationId Decorate 80(patch.color) Location 1
Decorate 79(patchId) BuiltIn PrimitiveId Decorate 99(pointId) BuiltIn InvocationId
Decorate 83(@entryPointOutput) Location 0 Decorate 102(patchId) BuiltIn PrimitiveId
Decorate 110(@patchConstantOutput.edges) Patch Decorate 113(@entryPointOutput.position) Location 0
Decorate 110(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 120(@entryPointOutput.color) Location 1
Decorate 123(@patchConstantOutput.inside) Patch Decorate 142(@patchConstantOutput.edges) Patch
Decorate 123(@patchConstantOutput.inside) BuiltIn TessLevelInner Decorate 142(@patchConstantOutput.edges) BuiltIn TessLevelOuter
Decorate 155(@patchConstantOutput.inside) Patch
Decorate 155(@patchConstantOutput.inside) BuiltIn TessLevelInner
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -448,83 +627,122 @@ triangle order = cw
55: TypePointer Function 22(HullOutputType) 55: TypePointer Function 22(HullOutputType)
58: TypePointer Function 7(fvec3) 58: TypePointer Function 7(fvec3)
63: TypePointer Function 8(fvec4) 63: TypePointer Function 8(fvec4)
71: TypePointer Input 12 71: TypeArray 7(fvec3) 11
72(patch): 71(ptr) Variable Input 72: TypePointer Input 71
75: TypePointer Input 10(int) 73(patch.position): 72(ptr) Variable Input
76(pointId): 75(ptr) Variable Input 74: TypePointer Input 7(fvec3)
79(patchId): 75(ptr) Variable Input 78: TypeArray 8(fvec4) 11
81: TypeArray 22(HullOutputType) 11 79: TypePointer Input 78
82: TypePointer Output 81 80(patch.color): 79(ptr) Variable Input
83(@entryPointOutput): 82(ptr) Variable Output 81: TypePointer Input 8(fvec4)
92: TypePointer Output 22(HullOutputType) 98: TypePointer Input 10(int)
94: 10(int) Constant 2 99(pointId): 98(ptr) Variable Input
95: 10(int) Constant 4 102(patchId): 98(ptr) Variable Input
96: 10(int) Constant 0 112: TypePointer Output 71
98: TypeBool 113(@entryPointOutput.position): 112(ptr) Variable Output
108: TypeArray 6(float) 95 117: TypePointer Output 7(fvec3)
109: TypePointer Output 108 119: TypePointer Output 78
110(@patchConstantOutput.edges): 109(ptr) Variable Output 120(@entryPointOutput.color): 119(ptr) Variable Output
113: TypePointer Output 6(float) 124: TypePointer Output 8(fvec4)
121: TypeArray 6(float) 94 126: 10(int) Constant 2
122: TypePointer Output 121 127: 10(int) Constant 4
123(@patchConstantOutput.inside): 122(ptr) Variable Output 128: 10(int) Constant 0
130: TypeBool
140: TypeArray 6(float) 127
141: TypePointer Output 140
142(@patchConstantOutput.edges): 141(ptr) Variable Output
145: TypePointer Output 6(float)
153: TypeArray 6(float) 126
154: TypePointer Output 153
155(@patchConstantOutput.inside): 154(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
70(patch): 13(ptr) Variable Function 70(patch): 13(ptr) Variable Function
74(pointId): 14(ptr) Variable Function 97(pointId): 14(ptr) Variable Function
78(patchId): 14(ptr) Variable Function 101(patchId): 14(ptr) Variable Function
85(param): 13(ptr) Variable Function 104(flattenTemp): 55(ptr) Variable Function
87(param): 14(ptr) Variable Function 105(param): 13(ptr) Variable Function
89(param): 14(ptr) Variable Function 107(param): 14(ptr) Variable Function
102(@patchConstantResult): 29(ptr) Variable Function 109(param): 14(ptr) Variable Function
103(param): 13(ptr) Variable Function 134(@patchConstantResult): 29(ptr) Variable Function
105(param): 14(ptr) Variable Function 135(param): 13(ptr) Variable Function
73: 12 Load 72(patch) 137(param): 14(ptr) Variable Function
Store 70(patch) 73 75: 74(ptr) AccessChain 73(patch.position) 32
77: 10(int) Load 76(pointId) 76: 7(fvec3) Load 75
Store 74(pointId) 77 77: 58(ptr) AccessChain 70(patch) 32 32
80: 10(int) Load 79(patchId) Store 77 76
Store 78(patchId) 80 82: 81(ptr) AccessChain 80(patch.color) 32
84: 10(int) Load 76(pointId) 83: 8(fvec4) Load 82
86: 12 Load 70(patch) 84: 63(ptr) AccessChain 70(patch) 32 41
Store 85(param) 86 Store 84 83
88: 10(int) Load 74(pointId) 85: 74(ptr) AccessChain 73(patch.position) 41
Store 87(param) 88 86: 7(fvec3) Load 85
90: 10(int) Load 78(patchId) 87: 58(ptr) AccessChain 70(patch) 41 32
Store 89(param) 90 Store 87 86
91:22(HullOutputType) FunctionCall 27(@main(struct-HullInputType-vf3-vf41[3];u1;u1;) 85(param) 87(param) 89(param) 88: 81(ptr) AccessChain 80(patch.color) 41
93: 92(ptr) AccessChain 83(@entryPointOutput) 84 89: 8(fvec4) Load 88
Store 93 91 90: 63(ptr) AccessChain 70(patch) 41 41
ControlBarrier 94 95 96 Store 90 89
97: 10(int) Load 76(pointId) 91: 74(ptr) AccessChain 73(patch.position) 45
99: 98(bool) IEqual 97 32 92: 7(fvec3) Load 91
SelectionMerge 101 None 93: 58(ptr) AccessChain 70(patch) 45 32
BranchConditional 99 100 101 Store 93 92
100: Label 94: 81(ptr) AccessChain 80(patch.color) 45
104: 12 Load 70(patch) 95: 8(fvec4) Load 94
Store 103(param) 104 96: 63(ptr) AccessChain 70(patch) 45 41
106: 10(int) Load 79(patchId) Store 96 95
Store 105(param) 106 100: 10(int) Load 99(pointId)
107:16(ConstantOutputType) FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 103(param) 105(param) Store 97(pointId) 100
Store 102(@patchConstantResult) 107 103: 10(int) Load 102(patchId)
111: 39(ptr) AccessChain 102(@patchConstantResult) 32 32 Store 101(patchId) 103
112: 6(float) Load 111 106: 12 Load 70(patch)
114: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 32 Store 105(param) 106
Store 114 112 108: 10(int) Load 97(pointId)
115: 39(ptr) AccessChain 102(@patchConstantResult) 32 41 Store 107(param) 108
116: 6(float) Load 115 110: 10(int) Load 101(patchId)
117: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 41 Store 109(param) 110
Store 117 116 111:22(HullOutputType) FunctionCall 27(@main(struct-HullInputType-vf3-vf41[3];u1;u1;) 105(param) 107(param) 109(param)
118: 39(ptr) AccessChain 102(@patchConstantResult) 32 45 Store 104(flattenTemp) 111
119: 6(float) Load 118 114: 10(int) Load 99(pointId)
120: 113(ptr) AccessChain 110(@patchConstantOutput.edges) 45 115: 58(ptr) AccessChain 104(flattenTemp) 32
Store 120 119 116: 7(fvec3) Load 115
124: 39(ptr) AccessChain 102(@patchConstantResult) 41 118: 117(ptr) AccessChain 113(@entryPointOutput.position) 114
125: 6(float) Load 124 Store 118 116
126: 113(ptr) AccessChain 123(@patchConstantOutput.inside) 32 121: 10(int) Load 99(pointId)
Store 126 125 122: 63(ptr) AccessChain 104(flattenTemp) 41
Branch 101 123: 8(fvec4) Load 122
101: Label 125: 124(ptr) AccessChain 120(@entryPointOutput.color) 121
Store 125 123
ControlBarrier 126 127 128
129: 10(int) Load 99(pointId)
131: 130(bool) IEqual 129 32
SelectionMerge 133 None
BranchConditional 131 132 133
132: Label
136: 12 Load 70(patch)
Store 135(param) 136
138: 10(int) Load 102(patchId)
Store 137(param) 138
139:16(ConstantOutputType) FunctionCall 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;) 135(param) 137(param)
Store 134(@patchConstantResult) 139
143: 39(ptr) AccessChain 134(@patchConstantResult) 32 32
144: 6(float) Load 143
146: 145(ptr) AccessChain 142(@patchConstantOutput.edges) 32
Store 146 144
147: 39(ptr) AccessChain 134(@patchConstantResult) 32 41
148: 6(float) Load 147
149: 145(ptr) AccessChain 142(@patchConstantOutput.edges) 41
Store 149 148
150: 39(ptr) AccessChain 134(@patchConstantResult) 32 45
151: 6(float) Load 150
152: 145(ptr) AccessChain 142(@patchConstantOutput.edges) 45
Store 152 151
156: 39(ptr) AccessChain 134(@patchConstantResult) 41
157: 6(float) Load 156
158: 145(ptr) AccessChain 155(@patchConstantOutput.inside) 32
Store 158 157
Branch 133
133: Label
Return Return
FunctionEnd FunctionEnd
20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;):16(ConstantOutputType) Function None 17 20(ColorPatchConstantFunction(struct-HullInputType-vf3-vf41[3];u1;):16(ConstantOutputType) Function None 17

View File

@ -56,9 +56,79 @@ triangle order = none
0:22 Function Definition: main( ( temp void) 0:22 Function Definition: main( ( temp void)
0:22 Function Parameters: 0:22 Function Parameters:
0:? Sequence 0:? Sequence
0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 move second child to first child ( temp 4-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 2 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22 Constant:
0:22 2 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 2 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22 Constant:
0:22 2 (const int)
0:22 move second child to first child ( temp float) 0:22 move second child to first child ( temp float)
0:? 'f' ( temp float) 0:? 'f' ( temp float)
0:? 'f' (layout( location=2) patch in float) 0:? 'f' (layout( location=2) patch in float)
@ -134,7 +204,8 @@ triangle order = none
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:? 'f' (layout( location=2) patch in float) 0:? 'f' (layout( location=2) patch in float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
@ -201,9 +272,79 @@ triangle order = none
0:22 Function Definition: main( ( temp void) 0:22 Function Definition: main( ( temp void)
0:22 Function Parameters: 0:22 Function Parameters:
0:? Sequence 0:? Sequence
0:22 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 move second child to first child ( temp 4-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 0 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22 Constant:
0:22 0 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 1 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22 Constant:
0:22 1 (const int)
0:22 move second child to first child ( temp 4-component vector of float)
0:22 pos: direct index for structure ( temp 4-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 2 (const int)
0:22 Constant:
0:22 0 (const int)
0:22 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:22 Constant:
0:22 2 (const int)
0:22 move second child to first child ( temp 3-component vector of float)
0:22 norm: direct index for structure ( temp 3-component vector of float)
0:22 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:22 Constant:
0:22 2 (const int)
0:22 Constant:
0:22 1 (const int)
0:22 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:22 Constant:
0:22 2 (const int)
0:22 move second child to first child ( temp float) 0:22 move second child to first child ( temp float)
0:? 'f' ( temp float) 0:? 'f' ( temp float)
0:? 'f' (layout( location=2) patch in float) 0:? 'f' (layout( location=2) patch in float)
@ -279,7 +420,8 @@ triangle order = none
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:? 'f' (layout( location=2) patch in float) 0:? 'f' (layout( location=2) patch in float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
@ -287,12 +429,12 @@ triangle order = none
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 103 // Id's are bound by 125
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 54 58 62 68 82 96 100 EntryPoint TessellationEvaluation 4 "main" 55 62 82 85 91 104 118 122
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -312,31 +454,33 @@ triangle order = none
Name 23 "pcf_data" Name 23 "pcf_data"
Name 27 "o" Name 27 "o"
Name 52 "i" Name 52 "i"
Name 54 "i" Name 55 "i.pos"
Name 56 "f" Name 62 "i.norm"
Name 58 "f" Name 80 "f"
Name 60 "tesscoord" Name 82 "f"
Name 62 "tesscoord" Name 84 "tesscoord"
Name 64 "pcf_data" Name 85 "tesscoord"
Name 68 "pcf_data.flTessFactor" Name 87 "pcf_data"
Name 82 "pcf_data.flInsideTessFactor" Name 91 "pcf_data.flTessFactor"
Name 86 "flattenTemp" Name 104 "pcf_data.flInsideTessFactor"
Name 88 "param" Name 108 "flattenTemp"
Name 90 "param" Name 110 "param"
Name 92 "param" Name 112 "param"
Name 96 "@entryPointOutput.pos" Name 114 "param"
Name 100 "@entryPointOutput.norm" Name 118 "@entryPointOutput.pos"
Decorate 54(i) Location 0 Name 122 "@entryPointOutput.norm"
Decorate 58(f) Patch Decorate 55(i.pos) Location 0
Decorate 58(f) Location 2 Decorate 62(i.norm) Location 1
Decorate 62(tesscoord) Patch Decorate 82(f) Patch
Decorate 62(tesscoord) BuiltIn TessCoord Decorate 82(f) Location 2
Decorate 68(pcf_data.flTessFactor) Patch Decorate 85(tesscoord) Patch
Decorate 68(pcf_data.flTessFactor) BuiltIn TessLevelOuter Decorate 85(tesscoord) BuiltIn TessCoord
Decorate 82(pcf_data.flInsideTessFactor) Patch Decorate 91(pcf_data.flTessFactor) Patch
Decorate 82(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner Decorate 91(pcf_data.flTessFactor) BuiltIn TessLevelOuter
Decorate 96(@entryPointOutput.pos) Location 0 Decorate 104(pcf_data.flInsideTessFactor) Patch
Decorate 100(@entryPointOutput.norm) Location 1 Decorate 104(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
Decorate 118(@entryPointOutput.pos) Location 0
Decorate 122(@entryPointOutput.norm) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -361,72 +505,99 @@ triangle order = none
40: 28(int) Constant 1 40: 28(int) Constant 1
42: 10(int) Constant 1 42: 10(int) Constant 1
51: TypePointer Function 12 51: TypePointer Function 12
53: TypePointer Input 12 53: TypeArray 7(fvec4) 11
54(i): 53(ptr) Variable Input 54: TypePointer Input 53
57: TypePointer Input 6(float) 55(i.pos): 54(ptr) Variable Input
58(f): 57(ptr) Variable Input 56: TypePointer Input 7(fvec4)
61: TypePointer Input 8(fvec3) 60: TypeArray 8(fvec3) 11
62(tesscoord): 61(ptr) Variable Input 61: TypePointer Input 60
65: 10(int) Constant 4 62(i.norm): 61(ptr) Variable Input
66: TypeArray 6(float) 65 63: TypePointer Input 8(fvec3)
67: TypePointer Input 66 73: 28(int) Constant 2
68(pcf_data.flTessFactor): 67(ptr) Variable Input 81: TypePointer Input 6(float)
75: 28(int) Constant 2 82(f): 81(ptr) Variable Input
79: 10(int) Constant 2 85(tesscoord): 63(ptr) Variable Input
80: TypeArray 6(float) 79 88: 10(int) Constant 4
81: TypePointer Input 80 89: TypeArray 6(float) 88
82(pcf_data.flInsideTessFactor): 81(ptr) Variable Input 90: TypePointer Input 89
95: TypePointer Output 7(fvec4) 91(pcf_data.flTessFactor): 90(ptr) Variable Input
96(@entryPointOutput.pos): 95(ptr) Variable Output 101: 10(int) Constant 2
99: TypePointer Output 8(fvec3) 102: TypeArray 6(float) 101
100(@entryPointOutput.norm): 99(ptr) Variable Output 103: TypePointer Input 102
104(pcf_data.flInsideTessFactor): 103(ptr) Variable Input
117: TypePointer Output 7(fvec4)
118(@entryPointOutput.pos): 117(ptr) Variable Output
121: TypePointer Output 8(fvec3)
122(@entryPointOutput.norm): 121(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
52(i): 51(ptr) Variable Function 52(i): 51(ptr) Variable Function
56(f): 13(ptr) Variable Function 80(f): 13(ptr) Variable Function
60(tesscoord): 14(ptr) Variable Function 84(tesscoord): 14(ptr) Variable Function
64(pcf_data): 17(ptr) Variable Function 87(pcf_data): 17(ptr) Variable Function
86(flattenTemp): 26(ptr) Variable Function 108(flattenTemp): 26(ptr) Variable Function
88(param): 13(ptr) Variable Function 110(param): 13(ptr) Variable Function
90(param): 14(ptr) Variable Function 112(param): 14(ptr) Variable Function
92(param): 17(ptr) Variable Function 114(param): 17(ptr) Variable Function
55: 12 Load 54(i) 57: 56(ptr) AccessChain 55(i.pos) 29
Store 52(i) 55 58: 7(fvec4) Load 57
59: 6(float) Load 58(f) 59: 38(ptr) AccessChain 52(i) 29 29
Store 56(f) 59 Store 59 58
63: 8(fvec3) Load 62(tesscoord) 64: 63(ptr) AccessChain 62(i.norm) 29
Store 60(tesscoord) 63 65: 8(fvec3) Load 64
69: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 29 66: 14(ptr) AccessChain 52(i) 29 40
70: 6(float) Load 69 Store 66 65
71: 13(ptr) AccessChain 64(pcf_data) 29 29 67: 56(ptr) AccessChain 55(i.pos) 40
Store 71 70 68: 7(fvec4) Load 67
72: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 40 69: 38(ptr) AccessChain 52(i) 40 29
73: 6(float) Load 72 Store 69 68
74: 13(ptr) AccessChain 64(pcf_data) 29 40 70: 63(ptr) AccessChain 62(i.norm) 40
Store 74 73 71: 8(fvec3) Load 70
76: 57(ptr) AccessChain 68(pcf_data.flTessFactor) 75 72: 14(ptr) AccessChain 52(i) 40 40
77: 6(float) Load 76 Store 72 71
78: 13(ptr) AccessChain 64(pcf_data) 29 75 74: 56(ptr) AccessChain 55(i.pos) 73
Store 78 77 75: 7(fvec4) Load 74
83: 57(ptr) AccessChain 82(pcf_data.flInsideTessFactor) 29 76: 38(ptr) AccessChain 52(i) 73 29
84: 6(float) Load 83 Store 76 75
85: 13(ptr) AccessChain 64(pcf_data) 40 77: 63(ptr) AccessChain 62(i.norm) 73
Store 85 84 78: 8(fvec3) Load 77
87: 12 Load 52(i) 79: 14(ptr) AccessChain 52(i) 73 40
89: 6(float) Load 56(f) Store 79 78
Store 88(param) 89 83: 6(float) Load 82(f)
91: 8(fvec3) Load 60(tesscoord) Store 80(f) 83
Store 90(param) 91 86: 8(fvec3) Load 85(tesscoord)
93:16(pcf_in_t) Load 64(pcf_data) Store 84(tesscoord) 86
Store 92(param) 93 92: 81(ptr) AccessChain 91(pcf_data.flTessFactor) 29
94: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 87 88(param) 90(param) 92(param) 93: 6(float) Load 92
Store 86(flattenTemp) 94 94: 13(ptr) AccessChain 87(pcf_data) 29 29
97: 38(ptr) AccessChain 86(flattenTemp) 29 Store 94 93
98: 7(fvec4) Load 97 95: 81(ptr) AccessChain 91(pcf_data.flTessFactor) 40
Store 96(@entryPointOutput.pos) 98 96: 6(float) Load 95
101: 14(ptr) AccessChain 86(flattenTemp) 40 97: 13(ptr) AccessChain 87(pcf_data) 29 40
102: 8(fvec3) Load 101 Store 97 96
Store 100(@entryPointOutput.norm) 102 98: 81(ptr) AccessChain 91(pcf_data.flTessFactor) 73
99: 6(float) Load 98
100: 13(ptr) AccessChain 87(pcf_data) 29 73
Store 100 99
105: 81(ptr) AccessChain 104(pcf_data.flInsideTessFactor) 29
106: 6(float) Load 105
107: 13(ptr) AccessChain 87(pcf_data) 40
Store 107 106
109: 12 Load 52(i)
111: 6(float) Load 80(f)
Store 110(param) 111
113: 8(fvec3) Load 84(tesscoord)
Store 112(param) 113
115:16(pcf_in_t) Load 87(pcf_data)
Store 114(param) 115
116: 18(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;) 109 110(param) 112(param) 114(param)
Store 108(flattenTemp) 116
119: 38(ptr) AccessChain 108(flattenTemp) 29
120: 7(fvec4) Load 119
Store 118(@entryPointOutput.pos) 120
123: 14(ptr) AccessChain 108(flattenTemp) 40
124: 8(fvec3) Load 123
Store 122(@entryPointOutput.norm) 124
Return Return
FunctionEnd FunctionEnd
24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;): 18(gs_in_t) Function None 19 24(@main(struct-ds_in_t-vf4-vf31[3];f1;vf3;struct-pcf_in_t-f1[3]-f11;): 18(gs_in_t) Function None 19

View File

@ -105,9 +105,79 @@ triangle order = none
0:25 Constant: 0:25 Constant:
0:25 2 (const int) 0:25 2 (const int)
0:? 'pcf_data.foo' (layout( location=2) patch in float) 0:? 'pcf_data.foo' (layout( location=2) patch in float)
0:25 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 move second child to first child ( temp 4-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25 Constant:
0:25 0 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25 Constant:
0:25 0 (const int)
0:25 move second child to first child ( temp 4-component vector of float)
0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25 Constant:
0:25 1 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25 Constant:
0:25 1 (const int)
0:25 move second child to first child ( temp 4-component vector of float)
0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 2 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25 Constant:
0:25 2 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 2 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25 Constant:
0:25 2 (const int)
0:25 move second child to first child ( temp 3-component vector of float) 0:25 move second child to first child ( temp 3-component vector of float)
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
@ -133,7 +203,8 @@ triangle order = none
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
@ -249,9 +320,79 @@ triangle order = none
0:25 Constant: 0:25 Constant:
0:25 2 (const int) 0:25 2 (const int)
0:? 'pcf_data.foo' (layout( location=2) patch in float) 0:? 'pcf_data.foo' (layout( location=2) patch in float)
0:25 move second child to first child ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 move second child to first child ( temp 4-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25 Constant:
0:25 0 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 0 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25 Constant:
0:25 0 (const int)
0:25 move second child to first child ( temp 4-component vector of float)
0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25 Constant:
0:25 1 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 1 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25 Constant:
0:25 1 (const int)
0:25 move second child to first child ( temp 4-component vector of float)
0:25 pos: direct index for structure ( temp 4-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 2 (const int)
0:25 Constant:
0:25 0 (const int)
0:25 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:25 Constant:
0:25 2 (const int)
0:25 move second child to first child ( temp 3-component vector of float)
0:25 norm: direct index for structure ( temp 3-component vector of float)
0:25 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:25 Constant:
0:25 2 (const int)
0:25 Constant:
0:25 1 (const int)
0:25 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:25 Constant:
0:25 2 (const int)
0:25 move second child to first child ( temp 3-component vector of float) 0:25 move second child to first child ( temp 3-component vector of float)
0:? 'tesscoord' ( temp 3-component vector of float) 0:? 'tesscoord' ( temp 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
@ -277,7 +418,8 @@ triangle order = none
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i.pos' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'i.norm' (layout( location=1) in 3-element array of 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
@ -285,12 +427,12 @@ triangle order = none
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 98 // Id's are bound by 120
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 52 67 71 77 81 91 95 EntryPoint TessellationEvaluation 4 "main" 52 67 71 78 85 103 113 117
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -314,25 +456,27 @@ triangle order = none
Name 67 "pcf_data.flInsideTessFactor" Name 67 "pcf_data.flInsideTessFactor"
Name 71 "pcf_data.foo" Name 71 "pcf_data.foo"
Name 75 "i" Name 75 "i"
Name 77 "i" Name 78 "i.pos"
Name 79 "tesscoord" Name 85 "i.norm"
Name 81 "tesscoord" Name 102 "tesscoord"
Name 83 "flattenTemp" Name 103 "tesscoord"
Name 85 "param" Name 105 "flattenTemp"
Name 87 "param" Name 107 "param"
Name 91 "@entryPointOutput.pos" Name 109 "param"
Name 95 "@entryPointOutput.norm" Name 113 "@entryPointOutput.pos"
Name 117 "@entryPointOutput.norm"
Decorate 52(pcf_data.flTessFactor) Patch Decorate 52(pcf_data.flTessFactor) Patch
Decorate 52(pcf_data.flTessFactor) BuiltIn TessLevelOuter Decorate 52(pcf_data.flTessFactor) BuiltIn TessLevelOuter
Decorate 67(pcf_data.flInsideTessFactor) Patch Decorate 67(pcf_data.flInsideTessFactor) Patch
Decorate 67(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner Decorate 67(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
Decorate 71(pcf_data.foo) Patch Decorate 71(pcf_data.foo) Patch
Decorate 71(pcf_data.foo) Location 2 Decorate 71(pcf_data.foo) Location 2
Decorate 77(i) Location 0 Decorate 78(i.pos) Location 0
Decorate 81(tesscoord) Patch Decorate 85(i.norm) Location 1
Decorate 81(tesscoord) BuiltIn TessCoord Decorate 103(tesscoord) Patch
Decorate 91(@entryPointOutput.pos) Location 0 Decorate 103(tesscoord) BuiltIn TessCoord
Decorate 95(@entryPointOutput.norm) Location 1 Decorate 113(@entryPointOutput.pos) Location 0
Decorate 117(@entryPointOutput.norm) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -368,22 +512,27 @@ triangle order = none
67(pcf_data.flInsideTessFactor): 66(ptr) Variable Input 67(pcf_data.flInsideTessFactor): 66(ptr) Variable Input
71(pcf_data.foo): 53(ptr) Variable Input 71(pcf_data.foo): 53(ptr) Variable Input
74: TypePointer Function 15 74: TypePointer Function 15
76: TypePointer Input 15 76: TypeArray 12(fvec4) 8
77(i): 76(ptr) Variable Input 77: TypePointer Input 76
80: TypePointer Input 13(fvec3) 78(i.pos): 77(ptr) Variable Input
81(tesscoord): 80(ptr) Variable Input 79: TypePointer Input 12(fvec4)
90: TypePointer Output 12(fvec4) 83: TypeArray 13(fvec3) 8
91(@entryPointOutput.pos): 90(ptr) Variable Output 84: TypePointer Input 83
94: TypePointer Output 13(fvec3) 85(i.norm): 84(ptr) Variable Input
95(@entryPointOutput.norm): 94(ptr) Variable Output 86: TypePointer Input 13(fvec3)
103(tesscoord): 86(ptr) Variable Input
112: TypePointer Output 12(fvec4)
113(@entryPointOutput.pos): 112(ptr) Variable Output
116: TypePointer Output 13(fvec3)
117(@entryPointOutput.norm): 116(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
48(pcf_data): 11(ptr) Variable Function 48(pcf_data): 11(ptr) Variable Function
75(i): 74(ptr) Variable Function 75(i): 74(ptr) Variable Function
79(tesscoord): 16(ptr) Variable Function 102(tesscoord): 16(ptr) Variable Function
83(flattenTemp): 24(ptr) Variable Function 105(flattenTemp): 24(ptr) Variable Function
85(param): 11(ptr) Variable Function 107(param): 11(ptr) Variable Function
87(param): 16(ptr) Variable Function 109(param): 16(ptr) Variable Function
54: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 27 54: 53(ptr) AccessChain 52(pcf_data.flTessFactor) 27
55: 6(float) Load 54 55: 6(float) Load 54
56: 30(ptr) AccessChain 48(pcf_data) 27 27 56: 30(ptr) AccessChain 48(pcf_data) 27 27
@ -403,23 +552,45 @@ triangle order = none
72: 6(float) Load 71(pcf_data.foo) 72: 6(float) Load 71(pcf_data.foo)
73: 30(ptr) AccessChain 48(pcf_data) 60 73: 30(ptr) AccessChain 48(pcf_data) 60
Store 73 72 Store 73 72
78: 15 Load 77(i) 80: 79(ptr) AccessChain 78(i.pos) 27
Store 75(i) 78 81: 12(fvec4) Load 80
82: 13(fvec3) Load 81(tesscoord) 82: 35(ptr) AccessChain 75(i) 27 27
Store 79(tesscoord) 82 Store 82 81
84: 15 Load 75(i) 87: 86(ptr) AccessChain 85(i.norm) 27
86:10(pcf_in_t) Load 48(pcf_data) 88: 13(fvec3) Load 87
Store 85(param) 86 89: 16(ptr) AccessChain 75(i) 27 37
88: 13(fvec3) Load 79(tesscoord) Store 89 88
Store 87(param) 88 90: 79(ptr) AccessChain 78(i.pos) 37
89: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 85(param) 84 87(param) 91: 12(fvec4) Load 90
Store 83(flattenTemp) 89 92: 35(ptr) AccessChain 75(i) 37 27
92: 35(ptr) AccessChain 83(flattenTemp) 27 Store 92 91
93: 12(fvec4) Load 92 93: 86(ptr) AccessChain 85(i.norm) 37
Store 91(@entryPointOutput.pos) 93 94: 13(fvec3) Load 93
96: 16(ptr) AccessChain 83(flattenTemp) 37 95: 16(ptr) AccessChain 75(i) 37 37
97: 13(fvec3) Load 96 Store 95 94
Store 95(@entryPointOutput.norm) 97 96: 79(ptr) AccessChain 78(i.pos) 60
97: 12(fvec4) Load 96
98: 35(ptr) AccessChain 75(i) 60 27
Store 98 97
99: 86(ptr) AccessChain 85(i.norm) 60
100: 13(fvec3) Load 99
101: 16(ptr) AccessChain 75(i) 60 37
Store 101 100
104: 13(fvec3) Load 103(tesscoord)
Store 102(tesscoord) 104
106: 15 Load 75(i)
108:10(pcf_in_t) Load 48(pcf_data)
Store 107(param) 108
110: 13(fvec3) Load 102(tesscoord)
Store 109(param) 110
111: 17(gs_in_t) FunctionCall 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;) 107(param) 106 109(param)
Store 105(flattenTemp) 111
114: 35(ptr) AccessChain 105(flattenTemp) 27
115: 12(fvec4) Load 114
Store 113(@entryPointOutput.pos) 115
118: 16(ptr) AccessChain 105(flattenTemp) 37
119: 13(fvec3) Load 118
Store 117(@entryPointOutput.norm) 119
Return Return
FunctionEnd FunctionEnd
22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18 22(@main(struct-pcf_in_t-f1[3]-f1-f11;struct-ds_in_t-vf4-vf31[3];vf3;): 17(gs_in_t) Function None 18

View File

@ -49,9 +49,55 @@ triangle order = none
0:24 Function Definition: main( ( temp void) 0:24 Function Definition: main( ( temp void)
0:24 Function Parameters: 0:24 Function Parameters:
0:? Sequence 0:? Sequence
0:24 move second child to first child ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Sequence
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 move second child to first child ( temp 4-component vector of float)
0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 3-component vector of float)
0:24 norm: direct index for structure ( temp 3-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 1 (const int)
0:24 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 4-component vector of float)
0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24 Constant:
0:24 1 (const int)
0:24 move second child to first child ( temp 3-component vector of float)
0:24 norm: direct index for structure ( temp 3-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 1 (const int)
0:24 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24 Constant:
0:24 1 (const int)
0:24 move second child to first child ( temp 2-component vector of float) 0:24 move second child to first child ( temp 2-component vector of float)
0:? 'tesscoord' ( temp 2-component vector of float) 0:? 'tesscoord' ( temp 2-component vector of float)
0:? Construct vec2 ( temp 2-component vector of float) 0:? Construct vec2 ( temp 2-component vector of float)
@ -124,7 +170,8 @@ triangle order = none
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
@ -183,9 +230,55 @@ triangle order = none
0:24 Function Definition: main( ( temp void) 0:24 Function Definition: main( ( temp void)
0:24 Function Parameters: 0:24 Function Parameters:
0:? Sequence 0:? Sequence
0:24 move second child to first child ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 Sequence
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 move second child to first child ( temp 4-component vector of float)
0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 3-component vector of float)
0:24 norm: direct index for structure ( temp 3-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 0 (const int)
0:24 Constant:
0:24 1 (const int)
0:24 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24 Constant:
0:24 0 (const int)
0:24 move second child to first child ( temp 4-component vector of float)
0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 0 (const int)
0:24 direct index (layout( location=0) in 4-component vector of float)
0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:24 Constant:
0:24 1 (const int)
0:24 move second child to first child ( temp 3-component vector of float)
0:24 norm: direct index for structure ( temp 3-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:? 'i' ( temp 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm})
0:24 Constant:
0:24 1 (const int)
0:24 Constant:
0:24 1 (const int)
0:24 direct index (layout( location=1) in 3-component vector of float)
0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:24 Constant:
0:24 1 (const int)
0:24 move second child to first child ( temp 2-component vector of float) 0:24 move second child to first child ( temp 2-component vector of float)
0:? 'tesscoord' ( temp 2-component vector of float) 0:? 'tesscoord' ( temp 2-component vector of float)
0:? Construct vec2 ( temp 2-component vector of float) 0:? Construct vec2 ( temp 2-component vector of float)
@ -258,19 +351,20 @@ triangle order = none
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float) 0:? '@entryPointOutput.pos' (layout( location=0) out 4-component vector of float)
0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float) 0:? '@entryPointOutput.norm' (layout( location=1) out 3-component vector of float)
0:? 'i' (layout( location=0) in 2-element array of structure{ temp 4-component vector of float pos, temp 3-component vector of float norm}) 0:? 'i.pos' (layout( location=0) in 2-element array of 4-component vector of float)
0:? 'i.norm' (layout( location=1) in 2-element array of 3-component vector of float)
0:? 'tesscoord' ( patch in 3-component vector of float TessCoord) 0:? 'tesscoord' ( patch in 3-component vector of float TessCoord)
0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter) 0:? 'pcf_data.flTessFactor' ( patch in 4-element array of float TessLevelOuter)
0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 100 // Id's are bound by 116
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationEvaluation 4 "main" 54 58 67 81 93 97 EntryPoint TessellationEvaluation 4 "main" 55 62 74 83 97 109 113
ExecutionMode 4 Isolines ExecutionMode 4 Isolines
Source HLSL 500 Source HLSL 500
Name 4 "main" Name 4 "main"
@ -289,26 +383,28 @@ triangle order = none
Name 23 "pcf_data" Name 23 "pcf_data"
Name 27 "o" Name 27 "o"
Name 52 "i" Name 52 "i"
Name 54 "i" Name 55 "i.pos"
Name 56 "tesscoord" Name 62 "i.norm"
Name 58 "tesscoord" Name 73 "tesscoord"
Name 63 "pcf_data" Name 74 "tesscoord"
Name 67 "pcf_data.flTessFactor" Name 79 "pcf_data"
Name 81 "pcf_data.flInsideTessFactor" Name 83 "pcf_data.flTessFactor"
Name 85 "flattenTemp" Name 97 "pcf_data.flInsideTessFactor"
Name 87 "param" Name 101 "flattenTemp"
Name 89 "param" Name 103 "param"
Name 93 "@entryPointOutput.pos" Name 105 "param"
Name 97 "@entryPointOutput.norm" Name 109 "@entryPointOutput.pos"
Decorate 54(i) Location 0 Name 113 "@entryPointOutput.norm"
Decorate 58(tesscoord) Patch Decorate 55(i.pos) Location 0
Decorate 58(tesscoord) BuiltIn TessCoord Decorate 62(i.norm) Location 1
Decorate 67(pcf_data.flTessFactor) Patch Decorate 74(tesscoord) Patch
Decorate 67(pcf_data.flTessFactor) BuiltIn TessLevelOuter Decorate 74(tesscoord) BuiltIn TessCoord
Decorate 81(pcf_data.flInsideTessFactor) Patch Decorate 83(pcf_data.flTessFactor) Patch
Decorate 81(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner Decorate 83(pcf_data.flTessFactor) BuiltIn TessLevelOuter
Decorate 93(@entryPointOutput.pos) Location 0 Decorate 97(pcf_data.flInsideTessFactor) Patch
Decorate 97(@entryPointOutput.norm) Location 1 Decorate 97(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner
Decorate 109(@entryPointOutput.pos) Location 0
Decorate 113(@entryPointOutput.norm) Location 1
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -336,67 +432,86 @@ triangle order = none
41: 10(int) Constant 1 41: 10(int) Constant 1
46: TypePointer Function 8(fvec3) 46: TypePointer Function 8(fvec3)
51: TypePointer Function 12 51: TypePointer Function 12
53: TypePointer Input 12 53: TypeArray 7(fvec4) 11
54(i): 53(ptr) Variable Input 54: TypePointer Input 53
57: TypePointer Input 8(fvec3) 55(i.pos): 54(ptr) Variable Input
58(tesscoord): 57(ptr) Variable Input 56: TypePointer Input 7(fvec4)
64: 10(int) Constant 4 60: TypeArray 8(fvec3) 11
65: TypeArray 6(float) 64 61: TypePointer Input 60
66: TypePointer Input 65 62(i.norm): 61(ptr) Variable Input
67(pcf_data.flTessFactor): 66(ptr) Variable Input 63: TypePointer Input 8(fvec3)
68: TypePointer Input 6(float) 74(tesscoord): 63(ptr) Variable Input
75: 28(int) Constant 2 80: 10(int) Constant 4
79: TypeArray 6(float) 11 81: TypeArray 6(float) 80
80: TypePointer Input 79 82: TypePointer Input 81
81(pcf_data.flInsideTessFactor): 80(ptr) Variable Input 83(pcf_data.flTessFactor): 82(ptr) Variable Input
92: TypePointer Output 7(fvec4) 84: TypePointer Input 6(float)
93(@entryPointOutput.pos): 92(ptr) Variable Output 91: 28(int) Constant 2
96: TypePointer Output 8(fvec3) 95: TypeArray 6(float) 11
97(@entryPointOutput.norm): 96(ptr) Variable Output 96: TypePointer Input 95
97(pcf_data.flInsideTessFactor): 96(ptr) Variable Input
108: TypePointer Output 7(fvec4)
109(@entryPointOutput.pos): 108(ptr) Variable Output
112: TypePointer Output 8(fvec3)
113(@entryPointOutput.norm): 112(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
52(i): 51(ptr) Variable Function 52(i): 51(ptr) Variable Function
56(tesscoord): 14(ptr) Variable Function 73(tesscoord): 14(ptr) Variable Function
63(pcf_data): 18(ptr) Variable Function 79(pcf_data): 18(ptr) Variable Function
85(flattenTemp): 26(ptr) Variable Function 101(flattenTemp): 26(ptr) Variable Function
87(param): 14(ptr) Variable Function 103(param): 14(ptr) Variable Function
89(param): 18(ptr) Variable Function 105(param): 18(ptr) Variable Function
55: 12 Load 54(i) 57: 56(ptr) AccessChain 55(i.pos) 29
Store 52(i) 55 58: 7(fvec4) Load 57
59: 8(fvec3) Load 58(tesscoord) 59: 37(ptr) AccessChain 52(i) 29 29
60: 6(float) CompositeExtract 59 0 Store 59 58
61: 6(float) CompositeExtract 59 1 64: 63(ptr) AccessChain 62(i.norm) 29
62: 13(fvec2) CompositeConstruct 60 61 65: 8(fvec3) Load 64
Store 56(tesscoord) 62 66: 46(ptr) AccessChain 52(i) 29 39
69: 68(ptr) AccessChain 67(pcf_data.flTessFactor) 29 Store 66 65
70: 6(float) Load 69 67: 56(ptr) AccessChain 55(i.pos) 39
71: 32(ptr) AccessChain 63(pcf_data) 29 29 68: 7(fvec4) Load 67
Store 71 70 69: 37(ptr) AccessChain 52(i) 39 29
72: 68(ptr) AccessChain 67(pcf_data.flTessFactor) 39 Store 69 68
73: 6(float) Load 72 70: 63(ptr) AccessChain 62(i.norm) 39
74: 32(ptr) AccessChain 63(pcf_data) 29 39 71: 8(fvec3) Load 70
Store 74 73 72: 46(ptr) AccessChain 52(i) 39 39
76: 68(ptr) AccessChain 67(pcf_data.flTessFactor) 75 Store 72 71
77: 6(float) Load 76 75: 8(fvec3) Load 74(tesscoord)
78: 32(ptr) AccessChain 63(pcf_data) 29 75 76: 6(float) CompositeExtract 75 0
Store 78 77 77: 6(float) CompositeExtract 75 1
82: 68(ptr) AccessChain 81(pcf_data.flInsideTessFactor) 29 78: 13(fvec2) CompositeConstruct 76 77
83: 6(float) Load 82 Store 73(tesscoord) 78
84: 32(ptr) AccessChain 63(pcf_data) 39 85: 84(ptr) AccessChain 83(pcf_data.flTessFactor) 29
Store 84 83 86: 6(float) Load 85
86: 12 Load 52(i) 87: 32(ptr) AccessChain 79(pcf_data) 29 29
88: 13(fvec2) Load 56(tesscoord) Store 87 86
Store 87(param) 88 88: 84(ptr) AccessChain 83(pcf_data.flTessFactor) 39
90:17(pcf_in_t) Load 63(pcf_data) 89: 6(float) Load 88
Store 89(param) 90 90: 32(ptr) AccessChain 79(pcf_data) 29 39
91: 19(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;) 86 87(param) 89(param) Store 90 89
Store 85(flattenTemp) 91 92: 84(ptr) AccessChain 83(pcf_data.flTessFactor) 91
94: 37(ptr) AccessChain 85(flattenTemp) 29 93: 6(float) Load 92
95: 7(fvec4) Load 94 94: 32(ptr) AccessChain 79(pcf_data) 29 91
Store 93(@entryPointOutput.pos) 95 Store 94 93
98: 46(ptr) AccessChain 85(flattenTemp) 39 98: 84(ptr) AccessChain 97(pcf_data.flInsideTessFactor) 29
99: 8(fvec3) Load 98 99: 6(float) Load 98
Store 97(@entryPointOutput.norm) 99 100: 32(ptr) AccessChain 79(pcf_data) 39
Store 100 99
102: 12 Load 52(i)
104: 13(fvec2) Load 73(tesscoord)
Store 103(param) 104
106:17(pcf_in_t) Load 79(pcf_data)
Store 105(param) 106
107: 19(gs_in_t) FunctionCall 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;) 102 103(param) 105(param)
Store 101(flattenTemp) 107
110: 37(ptr) AccessChain 101(flattenTemp) 29
111: 7(fvec4) Load 110
Store 109(@entryPointOutput.pos) 111
114: 46(ptr) AccessChain 101(flattenTemp) 39
115: 8(fvec3) Load 114
Store 113(@entryPointOutput.norm) 115
Return Return
FunctionEnd FunctionEnd
24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;): 19(gs_in_t) Function None 20 24(@main(struct-ds_in_t-vf4-vf31[2];vf2;struct-pcf_in_t-f1[3]-f11;): 19(gs_in_t) Function None 20

View File

@ -135,19 +135,93 @@ triangle order = ccw
0:61 Function Definition: HSMain( ( temp void) 0:61 Function Definition: HSMain( ( temp void)
0:61 Function Parameters: 0:61 Function Parameters:
0:? Sequence 0:? Sequence
0:61 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Sequence
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 move second child to first child ( temp 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 0 (const int)
0:61 Constant:
0:61 0 (const int)
0:61 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 0 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 NormalWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 0 (const int)
0:61 Constant:
0:61 1 (const int)
0:61 direct index (layout( location=1) in 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 0 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 1 (const int)
0:61 Constant:
0:61 0 (const int)
0:61 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 1 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 NormalWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 1 (const int)
0:61 Constant:
0:61 1 (const int)
0:61 direct index (layout( location=1) in 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 1 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 2 (const int)
0:61 Constant:
0:61 0 (const int)
0:61 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 2 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 NormalWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 2 (const int)
0:61 Constant:
0:61 1 (const int)
0:61 direct index (layout( location=1) in 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 2 (const int)
0:61 move second child to first child ( temp uint) 0:61 move second child to first child ( temp uint)
0:? 'id' ( temp uint) 0:? 'id' ( temp uint)
0:? 'id' ( in uint InvocationID) 0:? 'id' ( in uint InvocationID)
0:61 move second child to first child ( temp structure{ temp 3-component vector of float PositionWS}) 0:61 Sequence
0:61 indirect index (layout( location=0) out structure{ temp 3-component vector of float PositionWS}) 0:61 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS}) 0:61 indirect index (layout( location=0) out 3-component vector of float)
0:? 'id' ( in uint InvocationID) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float)
0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS}) 0:? 'id' ( in uint InvocationID)
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:? 'id' ( temp uint) 0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'id' ( temp uint)
0:61 Constant:
0:61 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -207,13 +281,31 @@ triangle order = ccw
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant: 0:? Constant:
0:? 1 (const int) 0:? 1 (const int)
0:? move second child to first child ( temp 3-element array of 3-component vector of float) 0:? move second child to first child ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float)
0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS}) 0:? direct index ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant:
0:? 2 (const int)
0:? Constant: 0:? Constant:
0:? 0 (const int) 0:? 0 (const int)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? move second child to first child ( temp 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float)
0:? direct index ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant:
0:? 2 (const int)
0:? Constant:
0:? 1 (const int)
0:? move second child to first child ( temp 3-component vector of float)
0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float)
0:? direct index ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant:
0:? 2 (const int)
0:? Constant: 0:? Constant:
0:? 2 (const int) 0:? 2 (const int)
0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void) 0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void)
@ -388,12 +480,15 @@ triangle order = ccw
0:118 0.000000 0:118 0.000000
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS}) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:? 'id' ( in uint InvocationID) 0:? 'id' ( in uint InvocationID)
0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner)
0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float)
0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float)
0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float)
Linked tessellation control stage: Linked tessellation control stage:
@ -535,19 +630,93 @@ triangle order = ccw
0:61 Function Definition: HSMain( ( temp void) 0:61 Function Definition: HSMain( ( temp void)
0:61 Function Parameters: 0:61 Function Parameters:
0:? Sequence 0:? Sequence
0:61 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 Sequence
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 move second child to first child ( temp 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 0 (const int)
0:61 Constant:
0:61 0 (const int)
0:61 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 0 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 NormalWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 0 (const int)
0:61 Constant:
0:61 1 (const int)
0:61 direct index (layout( location=1) in 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 0 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 1 (const int)
0:61 Constant:
0:61 0 (const int)
0:61 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 1 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 NormalWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 1 (const int)
0:61 Constant:
0:61 1 (const int)
0:61 direct index (layout( location=1) in 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 1 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 2 (const int)
0:61 Constant:
0:61 0 (const int)
0:61 direct index (layout( location=0) in 3-component vector of float)
0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 2 (const int)
0:61 move second child to first child ( temp 3-component vector of float)
0:61 NormalWS: direct index for structure ( temp 3-component vector of float)
0:61 direct index ( temp structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:61 Constant:
0:61 2 (const int)
0:61 Constant:
0:61 1 (const int)
0:61 direct index (layout( location=1) in 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:61 Constant:
0:61 2 (const int)
0:61 move second child to first child ( temp uint) 0:61 move second child to first child ( temp uint)
0:? 'id' ( temp uint) 0:? 'id' ( temp uint)
0:? 'id' ( in uint InvocationID) 0:? 'id' ( in uint InvocationID)
0:61 move second child to first child ( temp structure{ temp 3-component vector of float PositionWS}) 0:61 Sequence
0:61 indirect index (layout( location=0) out structure{ temp 3-component vector of float PositionWS}) 0:61 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS}) 0:61 indirect index (layout( location=0) out 3-component vector of float)
0:? 'id' ( in uint InvocationID) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float)
0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS}) 0:? 'id' ( in uint InvocationID)
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:61 PositionWS: direct index for structure ( temp 3-component vector of float)
0:? 'id' ( temp uint) 0:61 Function Call: @HSMain(struct-HSInput-vf3-vf31[3];u1; ( temp structure{ temp 3-component vector of float PositionWS})
0:? 'patch' ( temp 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS})
0:? 'id' ( temp uint)
0:61 Constant:
0:61 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -607,13 +776,31 @@ triangle order = ccw
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant: 0:? Constant:
0:? 1 (const int) 0:? 1 (const int)
0:? move second child to first child ( temp 3-element array of 3-component vector of float) 0:? move second child to first child ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float)
0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS}) 0:? direct index ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant:
0:? 2 (const int)
0:? Constant: 0:? Constant:
0:? 0 (const int) 0:? 0 (const int)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float) 0:? move second child to first child ( temp 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float)
0:? direct index ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant:
0:? 2 (const int)
0:? Constant:
0:? 1 (const int)
0:? move second child to first child ( temp 3-component vector of float)
0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float)
0:? direct index ( temp 3-component vector of float)
0:? NormalWS: direct index for structure ( temp 3-element array of 3-component vector of float)
0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float EdgeTessFactor, temp float InsideTessFactor, temp 3-element array of 3-component vector of float NormalWS})
0:? Constant:
0:? 2 (const int)
0:? Constant: 0:? Constant:
0:? 2 (const int) 0:? 2 (const int)
0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void) 0:84 Function Definition: GSMain(struct-GSVertexInput-vf3-vf31[3];struct-GSVertexOutput-vf41; ( temp void)
@ -788,21 +975,24 @@ triangle order = ccw
0:118 0.000000 0:118 0.000000
0:? Linker Objects 0:? Linker Objects
0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor}) 0:? 'anon@0' (layout( binding=0 row_major std140) uniform block{layout( row_major std140) uniform 4X4 matrix of float model_view_matrix, layout( row_major std140) uniform 4X4 matrix of float proj_matrix, layout( row_major std140) uniform 4X4 matrix of float model_view_proj_matrix, layout( row_major std140) uniform 3X3 matrix of float normal_matrix, layout( row_major std140) uniform 3-component vector of float color, layout( row_major std140) uniform 3-component vector of float view_dir, layout( row_major std140) uniform 3-component vector of float tess_factor})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float PositionWS}) 0:? '@entryPointOutput.PositionWS' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'patch' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float PositionWS, temp 3-component vector of float NormalWS}) 0:? 'patch.PositionWS' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'patch.NormalWS' (layout( location=1) in 3-element array of 3-component vector of float)
0:? 'id' ( in uint InvocationID) 0:? 'id' ( in uint InvocationID)
0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.EdgeTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.InsideTessFactor' ( patch out 2-element array of float TessLevelInner)
0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS}) 0:? '@patchConstantOutput.NormalWS[0]' (layout( location=1) patch out 3-component vector of float)
0:? '@patchConstantOutput.NormalWS[1]' (layout( location=2) patch out 3-component vector of float)
0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 216 // Id's are bound by 236
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "HSMain" 97 101 105 126 139 145 EntryPoint TessellationControl 4 "HSMain" 97 102 120 123 145 158 162 165 168
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 SpacingFractionalOdd
@ -846,26 +1036,27 @@ triangle order = ccw
Name 56 "result" Name 56 "result"
Name 87 "output" Name 87 "output"
Name 95 "patch" Name 95 "patch"
Name 97 "patch" Name 97 "patch.PositionWS"
Name 99 "id" Name 102 "patch.NormalWS"
Name 101 "id" Name 118 "id"
Name 105 "@entryPointOutput" Name 120 "id"
Name 107 "param" Name 123 "@entryPointOutput.PositionWS"
Name 109 "param" Name 125 "param"
Name 120 "@patchConstantResult" Name 127 "param"
Name 121 "param" Name 139 "@patchConstantResult"
Name 126 "@patchConstantOutput.EdgeTessFactor" Name 140 "param"
Name 139 "@patchConstantOutput.InsideTessFactor" Name 145 "@patchConstantOutput.EdgeTessFactor"
Name 143 "HSTrianglePatchConstant" Name 158 "@patchConstantOutput.InsideTessFactor"
MemberName 143(HSTrianglePatchConstant) 0 "NormalWS" Name 162 "@patchConstantOutput.NormalWS[0]"
Name 145 "@patchConstantOutput" Name 165 "@patchConstantOutput.NormalWS[1]"
Name 151 "P0" Name 168 "@patchConstantOutput.NormalWS[2]"
Name 154 "P1" Name 171 "P0"
Name 157 "P2" Name 174 "P1"
Name 174 "Q0" Name 177 "P2"
Name 184 "Q1" Name 194 "Q0"
Name 193 "Q2" Name 204 "Q1"
Name 202 "vertex" Name 213 "Q2"
Name 222 "vertex"
MemberDecorate 42(UniformBlock0) 0 RowMajor MemberDecorate 42(UniformBlock0) 0 RowMajor
MemberDecorate 42(UniformBlock0) 0 Offset 0 MemberDecorate 42(UniformBlock0) 0 Offset 0
MemberDecorate 42(UniformBlock0) 0 MatrixStride 16 MemberDecorate 42(UniformBlock0) 0 MatrixStride 16
@ -884,16 +1075,20 @@ triangle order = ccw
Decorate 42(UniformBlock0) Block Decorate 42(UniformBlock0) Block
Decorate 44 DescriptorSet 0 Decorate 44 DescriptorSet 0
Decorate 44 Binding 0 Decorate 44 Binding 0
Decorate 97(patch) Location 0 Decorate 97(patch.PositionWS) Location 0
Decorate 101(id) BuiltIn InvocationId Decorate 102(patch.NormalWS) Location 1
Decorate 105(@entryPointOutput) Location 0 Decorate 120(id) BuiltIn InvocationId
Decorate 126(@patchConstantOutput.EdgeTessFactor) Patch Decorate 123(@entryPointOutput.PositionWS) Location 0
Decorate 126(@patchConstantOutput.EdgeTessFactor) BuiltIn TessLevelOuter Decorate 145(@patchConstantOutput.EdgeTessFactor) Patch
Decorate 139(@patchConstantOutput.InsideTessFactor) Patch Decorate 145(@patchConstantOutput.EdgeTessFactor) BuiltIn TessLevelOuter
Decorate 139(@patchConstantOutput.InsideTessFactor) BuiltIn TessLevelInner Decorate 158(@patchConstantOutput.InsideTessFactor) Patch
MemberDecorate 143(HSTrianglePatchConstant) 0 Patch Decorate 158(@patchConstantOutput.InsideTessFactor) BuiltIn TessLevelInner
Decorate 145(@patchConstantOutput) Patch Decorate 162(@patchConstantOutput.NormalWS[0]) Patch
Decorate 145(@patchConstantOutput) Location 1 Decorate 162(@patchConstantOutput.NormalWS[0]) Location 1
Decorate 165(@patchConstantOutput.NormalWS[1]) Patch
Decorate 165(@patchConstantOutput.NormalWS[1]) Location 2
Decorate 168(@patchConstantOutput.NormalWS[2]) Patch
Decorate 168(@patchConstantOutput.NormalWS[2]) Location 3
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -937,84 +1132,111 @@ triangle order = ccw
67: 45(int) Constant 2 67: 45(int) Constant 2
68: 9(int) Constant 2 68: 9(int) Constant 2
86: TypePointer Function 21(HSOutput) 86: TypePointer Function 21(HSOutput)
96: TypePointer Input 11 96: TypePointer Input 14
97(patch): 96(ptr) Variable Input 97(patch.PositionWS): 96(ptr) Variable Input
100: TypePointer Input 9(int) 98: TypePointer Input 7(fvec3)
101(id): 100(ptr) Variable Input 102(patch.NormalWS): 96(ptr) Variable Input
103: TypeArray 21(HSOutput) 10 119: TypePointer Input 9(int)
104: TypePointer Output 103 120(id): 119(ptr) Variable Input
105(@entryPointOutput): 104(ptr) Variable Output 122: TypePointer Output 14
112: TypePointer Output 21(HSOutput) 123(@entryPointOutput.PositionWS): 122(ptr) Variable Output
114: 9(int) Constant 4 131: TypePointer Output 7(fvec3)
116: TypeBool 133: 9(int) Constant 4
124: TypeArray 6(float) 114 135: TypeBool
125: TypePointer Output 124 143: TypeArray 6(float) 133
126(@patchConstantOutput.EdgeTessFactor): 125(ptr) Variable Output 144: TypePointer Output 143
129: TypePointer Output 6(float) 145(@patchConstantOutput.EdgeTessFactor): 144(ptr) Variable Output
137: TypeArray 6(float) 68 148: TypePointer Output 6(float)
138: TypePointer Output 137 156: TypeArray 6(float) 68
139(@patchConstantOutput.InsideTessFactor): 138(ptr) Variable Output 157: TypePointer Output 156
143(HSTrianglePatchConstant): TypeStruct 14 158(@patchConstantOutput.InsideTessFactor): 157(ptr) Variable Output
144: TypePointer Output 143(HSTrianglePatchConstant) 162(@patchConstantOutput.NormalWS[0]): 131(ptr) Variable Output
145(@patchConstantOutput): 144(ptr) Variable Output 165(@patchConstantOutput.NormalWS[1]): 131(ptr) Variable Output
146: TypePointer Function 14 168(@patchConstantOutput.NormalWS[2]): 131(ptr) Variable Output
149: TypePointer Output 14 180: 6(float) Constant 981668463
160: 6(float) Constant 981668463 193: TypePointer Function 30(fvec4)
173: TypePointer Function 30(fvec4) 200: TypePointer Uniform 40
180: TypePointer Uniform 40 225: 6(float) Constant 0
205: 6(float) Constant 0
4(HSMain): 2 Function None 3 4(HSMain): 2 Function None 3
5: Label 5: Label
95(patch): 12(ptr) Variable Function 95(patch): 12(ptr) Variable Function
99(id): 20(ptr) Variable Function 118(id): 20(ptr) Variable Function
107(param): 12(ptr) Variable Function 125(param): 12(ptr) Variable Function
109(param): 20(ptr) Variable Function 127(param): 20(ptr) Variable Function
120(@patchConstantResult): 55(ptr) Variable Function 139(@patchConstantResult): 55(ptr) Variable Function
121(param): 12(ptr) Variable Function 140(param): 12(ptr) Variable Function
98: 11 Load 97(patch) 99: 98(ptr) AccessChain 97(patch.PositionWS) 57
Store 95(patch) 98 100: 7(fvec3) Load 99
102: 9(int) Load 101(id) 101: 38(ptr) AccessChain 95(patch) 57 57
Store 99(id) 102 Store 101 100
106: 9(int) Load 101(id) 103: 98(ptr) AccessChain 102(patch.NormalWS) 57
108: 11 Load 95(patch) 104: 7(fvec3) Load 103
Store 107(param) 108 105: 38(ptr) AccessChain 95(patch) 57 62
110: 9(int) Load 99(id) Store 105 104
Store 109(param) 110 106: 98(ptr) AccessChain 97(patch.PositionWS) 62
111:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 107(param) 109(param) 107: 7(fvec3) Load 106
113: 112(ptr) AccessChain 105(@entryPointOutput) 106 108: 38(ptr) AccessChain 95(patch) 62 57
Store 113 111 Store 108 107
ControlBarrier 68 114 58 109: 98(ptr) AccessChain 102(patch.NormalWS) 62
115: 9(int) Load 101(id) 110: 7(fvec3) Load 109
117: 116(bool) IEqual 115 57 111: 38(ptr) AccessChain 95(patch) 62 62
SelectionMerge 119 None Store 111 110
BranchConditional 117 118 119 112: 98(ptr) AccessChain 97(patch.PositionWS) 67
118: Label 113: 7(fvec3) Load 112
122: 11 Load 95(patch) 114: 38(ptr) AccessChain 95(patch) 67 57
Store 121(param) 122 Store 114 113
123:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 121(param) 115: 98(ptr) AccessChain 102(patch.NormalWS) 67
Store 120(@patchConstantResult) 123 116: 7(fvec3) Load 115
127: 50(ptr) AccessChain 120(@patchConstantResult) 57 57 117: 38(ptr) AccessChain 95(patch) 67 62
128: 6(float) Load 127 Store 117 116
130: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 57 121: 9(int) Load 120(id)
Store 130 128 Store 118(id) 121
131: 50(ptr) AccessChain 120(@patchConstantResult) 57 62 124: 9(int) Load 120(id)
132: 6(float) Load 131 126: 11 Load 95(patch)
133: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 62 Store 125(param) 126
Store 133 132 128: 9(int) Load 118(id)
134: 50(ptr) AccessChain 120(@patchConstantResult) 57 67 Store 127(param) 128
135: 6(float) Load 134 129:21(HSOutput) FunctionCall 25(@HSMain(struct-HSInput-vf3-vf31[3];u1;) 125(param) 127(param)
136: 129(ptr) AccessChain 126(@patchConstantOutput.EdgeTessFactor) 67 130: 7(fvec3) CompositeExtract 129 0
Store 136 135 132: 131(ptr) AccessChain 123(@entryPointOutput.PositionWS) 124
140: 50(ptr) AccessChain 120(@patchConstantResult) 62 Store 132 130
141: 6(float) Load 140 ControlBarrier 68 133 58
142: 129(ptr) AccessChain 139(@patchConstantOutput.InsideTessFactor) 57 134: 9(int) Load 120(id)
Store 142 141 136: 135(bool) IEqual 134 57
147: 146(ptr) AccessChain 120(@patchConstantResult) 67 SelectionMerge 138 None
148: 14 Load 147 BranchConditional 136 137 138
150: 149(ptr) AccessChain 145(@patchConstantOutput) 57 137: Label
Store 150 148 141: 11 Load 95(patch)
Branch 119 Store 140(param) 141
119: Label 142:15(HSTrianglePatchConstant) FunctionCall 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];) 140(param)
Store 139(@patchConstantResult) 142
146: 50(ptr) AccessChain 139(@patchConstantResult) 57 57
147: 6(float) Load 146
149: 148(ptr) AccessChain 145(@patchConstantOutput.EdgeTessFactor) 57
Store 149 147
150: 50(ptr) AccessChain 139(@patchConstantResult) 57 62
151: 6(float) Load 150
152: 148(ptr) AccessChain 145(@patchConstantOutput.EdgeTessFactor) 62
Store 152 151
153: 50(ptr) AccessChain 139(@patchConstantResult) 57 67
154: 6(float) Load 153
155: 148(ptr) AccessChain 145(@patchConstantOutput.EdgeTessFactor) 67
Store 155 154
159: 50(ptr) AccessChain 139(@patchConstantResult) 62
160: 6(float) Load 159
161: 148(ptr) AccessChain 158(@patchConstantOutput.InsideTessFactor) 57
Store 161 160
163: 38(ptr) AccessChain 139(@patchConstantResult) 67 57
164: 7(fvec3) Load 163
Store 162(@patchConstantOutput.NormalWS[0]) 164
166: 38(ptr) AccessChain 139(@patchConstantResult) 67 62
167: 7(fvec3) Load 166
Store 165(@patchConstantOutput.NormalWS[1]) 167
169: 38(ptr) AccessChain 139(@patchConstantResult) 67 67
170: 7(fvec3) Load 169
Store 168(@patchConstantOutput.NormalWS[2]) 170
Branch 138
138: Label
Return Return
FunctionEnd FunctionEnd
18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16 18(HSPatchConstant(struct-HSInput-vf3-vf31[3];):15(HSTrianglePatchConstant) Function None 16
@ -1076,81 +1298,81 @@ triangle order = ccw
34(input): 29(ptr) FunctionParameter 34(input): 29(ptr) FunctionParameter
35(output): 32(ptr) FunctionParameter 35(output): 32(ptr) FunctionParameter
37: Label 37: Label
151(P0): 38(ptr) Variable Function 171(P0): 38(ptr) Variable Function
154(P1): 38(ptr) Variable Function 174(P1): 38(ptr) Variable Function
157(P2): 38(ptr) Variable Function 177(P2): 38(ptr) Variable Function
174(Q0): 173(ptr) Variable Function 194(Q0): 193(ptr) Variable Function
184(Q1): 173(ptr) Variable Function 204(Q1): 193(ptr) Variable Function
193(Q2): 173(ptr) Variable Function 213(Q2): 193(ptr) Variable Function
202(vertex): 32(ptr) Variable Function 222(vertex): 32(ptr) Variable Function
152: 38(ptr) AccessChain 34(input) 57 57 172: 38(ptr) AccessChain 34(input) 57 57
153: 7(fvec3) Load 152 173: 7(fvec3) Load 172
Store 151(P0) 153 Store 171(P0) 173
155: 38(ptr) AccessChain 34(input) 62 57 175: 38(ptr) AccessChain 34(input) 62 57
156: 7(fvec3) Load 155 176: 7(fvec3) Load 175
Store 154(P1) 156 Store 174(P1) 176
158: 38(ptr) AccessChain 34(input) 67 57 178: 38(ptr) AccessChain 34(input) 67 57
159: 7(fvec3) Load 158 179: 7(fvec3) Load 178
Store 157(P2) 159 Store 177(P2) 179
161: 50(ptr) AccessChain 151(P0) 68 181: 50(ptr) AccessChain 171(P0) 68
162: 6(float) Load 161 182: 6(float) Load 181
163: 6(float) FAdd 162 160 183: 6(float) FAdd 182 180
164: 50(ptr) AccessChain 151(P0) 68 184: 50(ptr) AccessChain 171(P0) 68
Store 164 163 Store 184 183
165: 50(ptr) AccessChain 154(P1) 68 185: 50(ptr) AccessChain 174(P1) 68
166: 6(float) Load 165 186: 6(float) Load 185
167: 6(float) FAdd 166 160 187: 6(float) FAdd 186 180
168: 50(ptr) AccessChain 154(P1) 68 188: 50(ptr) AccessChain 174(P1) 68
Store 168 167 Store 188 187
169: 50(ptr) AccessChain 157(P2) 68 189: 50(ptr) AccessChain 177(P2) 68
170: 6(float) Load 169 190: 6(float) Load 189
171: 6(float) FAdd 170 160 191: 6(float) FAdd 190 180
172: 50(ptr) AccessChain 157(P2) 68 192: 50(ptr) AccessChain 177(P2) 68
Store 172 171 Store 192 191
175: 7(fvec3) Load 151(P0) 195: 7(fvec3) Load 171(P0)
176: 6(float) CompositeExtract 175 0 196: 6(float) CompositeExtract 195 0
177: 6(float) CompositeExtract 175 1 197: 6(float) CompositeExtract 195 1
178: 6(float) CompositeExtract 175 2 198: 6(float) CompositeExtract 195 2
179: 30(fvec4) CompositeConstruct 176 177 178 54 199: 30(fvec4) CompositeConstruct 196 197 198 54
181: 180(ptr) AccessChain 44 62 201: 200(ptr) AccessChain 44 62
182: 40 Load 181 202: 40 Load 201
183: 30(fvec4) VectorTimesMatrix 179 182 203: 30(fvec4) VectorTimesMatrix 199 202
Store 174(Q0) 183 Store 194(Q0) 203
185: 7(fvec3) Load 154(P1) 205: 7(fvec3) Load 174(P1)
186: 6(float) CompositeExtract 185 0 206: 6(float) CompositeExtract 205 0
187: 6(float) CompositeExtract 185 1 207: 6(float) CompositeExtract 205 1
188: 6(float) CompositeExtract 185 2 208: 6(float) CompositeExtract 205 2
189: 30(fvec4) CompositeConstruct 186 187 188 54 209: 30(fvec4) CompositeConstruct 206 207 208 54
190: 180(ptr) AccessChain 44 62 210: 200(ptr) AccessChain 44 62
191: 40 Load 190 211: 40 Load 210
192: 30(fvec4) VectorTimesMatrix 189 191 212: 30(fvec4) VectorTimesMatrix 209 211
Store 184(Q1) 192 Store 204(Q1) 212
194: 7(fvec3) Load 157(P2) 214: 7(fvec3) Load 177(P2)
195: 6(float) CompositeExtract 194 0 215: 6(float) CompositeExtract 214 0
196: 6(float) CompositeExtract 194 1 216: 6(float) CompositeExtract 214 1
197: 6(float) CompositeExtract 194 2 217: 6(float) CompositeExtract 214 2
198: 30(fvec4) CompositeConstruct 195 196 197 54 218: 30(fvec4) CompositeConstruct 215 216 217 54
199: 180(ptr) AccessChain 44 62 219: 200(ptr) AccessChain 44 62
200: 40 Load 199 220: 40 Load 219
201: 30(fvec4) VectorTimesMatrix 198 200 221: 30(fvec4) VectorTimesMatrix 218 220
Store 193(Q2) 201 Store 213(Q2) 221
203: 30(fvec4) Load 174(Q0) 223: 30(fvec4) Load 194(Q0)
204: 173(ptr) AccessChain 202(vertex) 57 224: 193(ptr) AccessChain 222(vertex) 57
Store 204 203 Store 224 223
206: 30(fvec4) Load 184(Q1) 226: 30(fvec4) Load 204(Q1)
207: 173(ptr) AccessChain 202(vertex) 57 227: 193(ptr) AccessChain 222(vertex) 57
Store 207 206 Store 227 226
208: 30(fvec4) Load 184(Q1) 228: 30(fvec4) Load 204(Q1)
209: 173(ptr) AccessChain 202(vertex) 57 229: 193(ptr) AccessChain 222(vertex) 57
Store 209 208 Store 229 228
210: 30(fvec4) Load 193(Q2) 230: 30(fvec4) Load 213(Q2)
211: 173(ptr) AccessChain 202(vertex) 57 231: 193(ptr) AccessChain 222(vertex) 57
Store 211 210 Store 231 230
212: 30(fvec4) Load 193(Q2) 232: 30(fvec4) Load 213(Q2)
213: 173(ptr) AccessChain 202(vertex) 57 233: 193(ptr) AccessChain 222(vertex) 57
Store 213 212 Store 233 232
214: 30(fvec4) Load 174(Q0) 234: 30(fvec4) Load 194(Q0)
215: 173(ptr) AccessChain 202(vertex) 57 235: 193(ptr) AccessChain 222(vertex) 57
Store 215 214 Store 235 234
Return Return
FunctionEnd FunctionEnd

View File

@ -25,19 +25,69 @@ vertex spacing = equal_spacing
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 3 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 3 (const int)
0:26 move second child to first child ( temp uint) 0:26 move second child to first child ( temp uint)
0:? 'm_cpid' ( temp uint) 0:? 'm_cpid' ( temp uint)
0:? 'm_cpid' ( in uint InvocationID) 0:? 'm_cpid' ( in uint InvocationID)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? 'm_cpid' ( in uint InvocationID) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'm_cpid' ( in uint InvocationID)
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:? 'm_cpid' ( temp uint) 0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'm_cpid' ( temp uint)
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -103,8 +153,8 @@ vertex spacing = equal_spacing
0:38 Branch: Return with expression 0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:? 'm_cpid' ( in uint InvocationID) 0:? 'm_cpid' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID) 0:? 'pid' ( in uint PrimitiveID)
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
@ -139,19 +189,69 @@ vertex spacing = equal_spacing
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 3 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 3 (const int)
0:26 move second child to first child ( temp uint) 0:26 move second child to first child ( temp uint)
0:? 'm_cpid' ( temp uint) 0:? 'm_cpid' ( temp uint)
0:? 'm_cpid' ( in uint InvocationID) 0:? 'm_cpid' ( in uint InvocationID)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? 'm_cpid' ( in uint InvocationID) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint}) 0:? 'm_cpid' ( in uint InvocationID)
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:? 'm_cpid' ( temp uint) 0:26 Function Call: @main(struct-VS_OUT-vf31[4];u1; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? 'm_cpid' ( temp uint)
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -217,20 +317,20 @@ vertex spacing = equal_spacing
0:38 Branch: Return with expression 0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:? 'm_cpid' ( in uint InvocationID) 0:? 'm_cpid' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID) 0:? 'pid' ( in uint PrimitiveID)
0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 89 // Id's are bound by 104
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 40 44 48 65 71 EntryPoint TessellationControl 4 "main" 41 60 63 81 87
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
ExecutionMode 4 Isolines ExecutionMode 4 Isolines
ExecutionMode 4 SpacingEqual ExecutionMode 4 SpacingEqual
@ -249,23 +349,23 @@ vertex spacing = equal_spacing
Name 24 "pid" Name 24 "pid"
Name 28 "output" Name 28 "output"
Name 38 "ip" Name 38 "ip"
Name 40 "ip" Name 41 "ip.cpoint"
Name 42 "m_cpid" Name 58 "m_cpid"
Name 44 "m_cpid" Name 60 "m_cpid"
Name 48 "@entryPointOutput" Name 63 "@entryPointOutput.cpoint"
Name 50 "param" Name 65 "param"
Name 52 "param" Name 67 "param"
Name 64 "@patchConstantResult" Name 80 "@patchConstantResult"
Name 65 "pid" Name 81 "pid"
Name 66 "param" Name 82 "param"
Name 71 "@patchConstantOutput.edges" Name 87 "@patchConstantOutput.edges"
Name 81 "output" Name 96 "output"
Decorate 40(ip) Location 0 Decorate 41(ip.cpoint) Location 0
Decorate 44(m_cpid) BuiltIn InvocationId Decorate 60(m_cpid) BuiltIn InvocationId
Decorate 48(@entryPointOutput) Location 0 Decorate 63(@entryPointOutput.cpoint) Location 0
Decorate 65(pid) BuiltIn PrimitiveId Decorate 81(pid) BuiltIn PrimitiveId
Decorate 71(@patchConstantOutput.edges) Patch Decorate 87(@patchConstantOutput.edges) Patch
Decorate 71(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 87(@patchConstantOutput.edges) BuiltIn TessLevelOuter
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -286,66 +386,84 @@ vertex spacing = equal_spacing
29: TypeInt 32 1 29: TypeInt 32 1
30: 29(int) Constant 0 30: 29(int) Constant 0
31: TypePointer Function 7(fvec3) 31: TypePointer Function 7(fvec3)
39: TypePointer Input 11 39: TypeArray 7(fvec3) 10
40(ip): 39(ptr) Variable Input 40: TypePointer Input 39
43: TypePointer Input 9(int) 41(ip.cpoint): 40(ptr) Variable Input
44(m_cpid): 43(ptr) Variable Input 42: TypePointer Input 7(fvec3)
46: TypeArray 14(HS_OUT) 10 46: 29(int) Constant 1
47: TypePointer Output 46 50: 29(int) Constant 2
48(@entryPointOutput): 47(ptr) Variable Output 54: 29(int) Constant 3
55: TypePointer Output 14(HS_OUT) 59: TypePointer Input 9(int)
57: 9(int) Constant 0 60(m_cpid): 59(ptr) Variable Input
59: TypeBool 62: TypePointer Output 39
63: TypePointer Function 22(HS_CONSTANT_OUT) 63(@entryPointOutput.cpoint): 62(ptr) Variable Output
65(pid): 43(ptr) Variable Input 71: TypePointer Output 7(fvec3)
69: TypeArray 6(float) 10 73: 9(int) Constant 0
70: TypePointer Output 69 75: TypeBool
71(@patchConstantOutput.edges): 70(ptr) Variable Output 79: TypePointer Function 22(HS_CONSTANT_OUT)
72: TypePointer Function 6(float) 81(pid): 59(ptr) Variable Input
75: TypePointer Output 6(float) 85: TypeArray 6(float) 10
77: 29(int) Constant 1 86: TypePointer Output 85
82: 6(float) Constant 1073741824 87(@patchConstantOutput.edges): 86(ptr) Variable Output
84: 6(float) Constant 1090519040 88: TypePointer Function 6(float)
91: TypePointer Output 6(float)
97: 6(float) Constant 1073741824
99: 6(float) Constant 1090519040
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
38(ip): 12(ptr) Variable Function 38(ip): 12(ptr) Variable Function
42(m_cpid): 13(ptr) Variable Function 58(m_cpid): 13(ptr) Variable Function
50(param): 12(ptr) Variable Function 65(param): 12(ptr) Variable Function
52(param): 13(ptr) Variable Function 67(param): 13(ptr) Variable Function
64(@patchConstantResult): 63(ptr) Variable Function 80(@patchConstantResult): 79(ptr) Variable Function
66(param): 13(ptr) Variable Function 82(param): 13(ptr) Variable Function
41: 11 Load 40(ip) 43: 42(ptr) AccessChain 41(ip.cpoint) 30
Store 38(ip) 41 44: 7(fvec3) Load 43
45: 9(int) Load 44(m_cpid) 45: 31(ptr) AccessChain 38(ip) 30 30
Store 42(m_cpid) 45 Store 45 44
49: 9(int) Load 44(m_cpid) 47: 42(ptr) AccessChain 41(ip.cpoint) 46
51: 11 Load 38(ip) 48: 7(fvec3) Load 47
Store 50(param) 51 49: 31(ptr) AccessChain 38(ip) 46 30
53: 9(int) Load 42(m_cpid) Store 49 48
Store 52(param) 53 51: 42(ptr) AccessChain 41(ip.cpoint) 50
54: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 50(param) 52(param) 52: 7(fvec3) Load 51
56: 55(ptr) AccessChain 48(@entryPointOutput) 49 53: 31(ptr) AccessChain 38(ip) 50 30
Store 56 54 Store 53 52
ControlBarrier 20 10 57 55: 42(ptr) AccessChain 41(ip.cpoint) 54
58: 9(int) Load 44(m_cpid) 56: 7(fvec3) Load 55
60: 59(bool) IEqual 58 30 57: 31(ptr) AccessChain 38(ip) 54 30
SelectionMerge 62 None Store 57 56
BranchConditional 60 61 62 61: 9(int) Load 60(m_cpid)
61: Label Store 58(m_cpid) 61
67: 9(int) Load 65(pid) 64: 9(int) Load 60(m_cpid)
Store 66(param) 67 66: 11 Load 38(ip)
68:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 66(param) Store 65(param) 66
Store 64(@patchConstantResult) 68 68: 9(int) Load 58(m_cpid)
73: 72(ptr) AccessChain 64(@patchConstantResult) 30 30 Store 67(param) 68
74: 6(float) Load 73 69: 14(HS_OUT) FunctionCall 18(@main(struct-VS_OUT-vf31[4];u1;) 65(param) 67(param)
76: 75(ptr) AccessChain 71(@patchConstantOutput.edges) 30 70: 7(fvec3) CompositeExtract 69 0
Store 76 74 72: 71(ptr) AccessChain 63(@entryPointOutput.cpoint) 64
78: 72(ptr) AccessChain 64(@patchConstantResult) 30 77 Store 72 70
79: 6(float) Load 78 ControlBarrier 20 10 73
80: 75(ptr) AccessChain 71(@patchConstantOutput.edges) 77 74: 9(int) Load 60(m_cpid)
Store 80 79 76: 75(bool) IEqual 74 30
Branch 62 SelectionMerge 78 None
62: Label BranchConditional 76 77 78
77: Label
83: 9(int) Load 81(pid)
Store 82(param) 83
84:22(HS_CONSTANT_OUT) FunctionCall 25(PCF(u1;) 82(param)
Store 80(@patchConstantResult) 84
89: 88(ptr) AccessChain 80(@patchConstantResult) 30 30
90: 6(float) Load 89
92: 91(ptr) AccessChain 87(@patchConstantOutput.edges) 30
Store 92 90
93: 88(ptr) AccessChain 80(@patchConstantResult) 30 46
94: 6(float) Load 93
95: 91(ptr) AccessChain 87(@patchConstantOutput.edges) 46
Store 95 94
Branch 78
78: Label
Return Return
FunctionEnd FunctionEnd
18(@main(struct-VS_OUT-vf31[4];u1;): 14(HS_OUT) Function None 15 18(@main(struct-VS_OUT-vf31[4];u1;): 14(HS_OUT) Function None 15
@ -363,11 +481,11 @@ vertex spacing = equal_spacing
25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23 25(PCF(u1;):22(HS_CONSTANT_OUT) Function None 23
24(pid): 13(ptr) FunctionParameter 24(pid): 13(ptr) FunctionParameter
26: Label 26: Label
81(output): 63(ptr) Variable Function 96(output): 79(ptr) Variable Function
83: 72(ptr) AccessChain 81(output) 30 30 98: 88(ptr) AccessChain 96(output) 30 30
Store 83 82 Store 98 97
85: 72(ptr) AccessChain 81(output) 30 77 100: 88(ptr) AccessChain 96(output) 30 46
Store 85 84 Store 100 99
86:22(HS_CONSTANT_OUT) Load 81(output) 101:22(HS_CONSTANT_OUT) Load 96(output)
ReturnValue 86 ReturnValue 101
FunctionEnd FunctionEnd

View File

@ -24,15 +24,65 @@ vertex spacing = equal_spacing
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'InvocationId' ( in uint InvocationID) 0:26 0 (const int)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 3 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 3 (const int)
0:26 Sequence
0:26 move second child to first child ( temp 3-component vector of float)
0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -100,8 +150,8 @@ vertex spacing = equal_spacing
0:38 Branch: Return with expression 0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID) 0:? 'InvocationId' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID) 0:? 'pid' ( in uint PrimitiveID)
0:? 'pos' ( in 4-component vector of float Position) 0:? 'pos' ( in 4-component vector of float Position)
@ -136,15 +186,65 @@ vertex spacing = equal_spacing
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'InvocationId' ( in uint InvocationID) 0:26 0 (const int)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 3 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 3 (const int)
0:26 Sequence
0:26 move second child to first child ( temp 3-component vector of float)
0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -212,8 +312,8 @@ vertex spacing = equal_spacing
0:38 Branch: Return with expression 0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID) 0:? 'InvocationId' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID) 0:? 'pid' ( in uint PrimitiveID)
0:? 'pos' ( in 4-component vector of float Position) 0:? 'pos' ( in 4-component vector of float Position)
@ -221,12 +321,12 @@ vertex spacing = equal_spacing
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 91 // Id's are bound by 106
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 42 46 48 63 65 73 EntryPoint TessellationControl 4 "main" 43 61 63 79 81 89
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
ExecutionMode 4 Isolines ExecutionMode 4 Isolines
ExecutionMode 4 SpacingEqual ExecutionMode 4 SpacingEqual
@ -245,24 +345,24 @@ vertex spacing = equal_spacing
Name 26 "pos" Name 26 "pos"
Name 30 "output" Name 30 "output"
Name 40 "ip" Name 40 "ip"
Name 42 "ip" Name 43 "ip.cpoint"
Name 46 "@entryPointOutput" Name 61 "@entryPointOutput.cpoint"
Name 48 "InvocationId" Name 63 "InvocationId"
Name 50 "param" Name 65 "param"
Name 62 "@patchConstantResult" Name 78 "@patchConstantResult"
Name 63 "pid" Name 79 "pid"
Name 65 "pos" Name 81 "pos"
Name 66 "param" Name 82 "param"
Name 68 "param" Name 84 "param"
Name 73 "@patchConstantOutput.edges" Name 89 "@patchConstantOutput.edges"
Name 83 "output" Name 98 "output"
Decorate 42(ip) Location 0 Decorate 43(ip.cpoint) Location 0
Decorate 46(@entryPointOutput) Location 0 Decorate 61(@entryPointOutput.cpoint) Location 0
Decorate 48(InvocationId) BuiltIn InvocationId Decorate 63(InvocationId) BuiltIn InvocationId
Decorate 63(pid) BuiltIn PrimitiveId Decorate 79(pid) BuiltIn PrimitiveId
Decorate 65(pos) BuiltIn Position Decorate 81(pos) BuiltIn Position
Decorate 73(@patchConstantOutput.edges) Patch Decorate 89(@patchConstantOutput.edges) Patch
Decorate 73(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 89(@patchConstantOutput.edges) BuiltIn TessLevelOuter
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -285,65 +385,83 @@ vertex spacing = equal_spacing
31: TypeInt 32 1 31: TypeInt 32 1
32: 31(int) Constant 0 32: 31(int) Constant 0
33: TypePointer Function 7(fvec3) 33: TypePointer Function 7(fvec3)
41: TypePointer Input 11 41: TypeArray 7(fvec3) 10
42(ip): 41(ptr) Variable Input 42: TypePointer Input 41
44: TypeArray 13(HS_OUT) 10 43(ip.cpoint): 42(ptr) Variable Input
45: TypePointer Output 44 44: TypePointer Input 7(fvec3)
46(@entryPointOutput): 45(ptr) Variable Output 48: 31(int) Constant 1
47: TypePointer Input 9(int) 52: 31(int) Constant 2
48(InvocationId): 47(ptr) Variable Input 56: 31(int) Constant 3
53: TypePointer Output 13(HS_OUT) 60: TypePointer Output 41
55: 9(int) Constant 0 61(@entryPointOutput.cpoint): 60(ptr) Variable Output
57: TypeBool 62: TypePointer Input 9(int)
61: TypePointer Function 23(HS_CONSTANT_OUT) 63(InvocationId): 62(ptr) Variable Input
63(pid): 47(ptr) Variable Input 69: TypePointer Output 7(fvec3)
64: TypePointer Input 19(fvec4) 71: 9(int) Constant 0
65(pos): 64(ptr) Variable Input 73: TypeBool
71: TypeArray 6(float) 10 77: TypePointer Function 23(HS_CONSTANT_OUT)
72: TypePointer Output 71 79(pid): 62(ptr) Variable Input
73(@patchConstantOutput.edges): 72(ptr) Variable Output 80: TypePointer Input 19(fvec4)
74: TypePointer Function 6(float) 81(pos): 80(ptr) Variable Input
77: TypePointer Output 6(float) 87: TypeArray 6(float) 10
79: 31(int) Constant 1 88: TypePointer Output 87
84: 6(float) Constant 1073741824 89(@patchConstantOutput.edges): 88(ptr) Variable Output
86: 6(float) Constant 1090519040 90: TypePointer Function 6(float)
93: TypePointer Output 6(float)
99: 6(float) Constant 1073741824
101: 6(float) Constant 1090519040
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
40(ip): 12(ptr) Variable Function 40(ip): 12(ptr) Variable Function
50(param): 12(ptr) Variable Function 65(param): 12(ptr) Variable Function
62(@patchConstantResult): 61(ptr) Variable Function 78(@patchConstantResult): 77(ptr) Variable Function
66(param): 18(ptr) Variable Function 82(param): 18(ptr) Variable Function
68(param): 20(ptr) Variable Function 84(param): 20(ptr) Variable Function
43: 11 Load 42(ip) 45: 44(ptr) AccessChain 43(ip.cpoint) 32
Store 40(ip) 43 46: 7(fvec3) Load 45
49: 9(int) Load 48(InvocationId) 47: 33(ptr) AccessChain 40(ip) 32 32
51: 11 Load 40(ip) Store 47 46
Store 50(param) 51 49: 44(ptr) AccessChain 43(ip.cpoint) 48
52: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 50(param) 50: 7(fvec3) Load 49
54: 53(ptr) AccessChain 46(@entryPointOutput) 49 51: 33(ptr) AccessChain 40(ip) 48 32
Store 54 52 Store 51 50
ControlBarrier 21 10 55 53: 44(ptr) AccessChain 43(ip.cpoint) 52
56: 9(int) Load 48(InvocationId) 54: 7(fvec3) Load 53
58: 57(bool) IEqual 56 32 55: 33(ptr) AccessChain 40(ip) 52 32
SelectionMerge 60 None Store 55 54
BranchConditional 58 59 60 57: 44(ptr) AccessChain 43(ip.cpoint) 56
59: Label 58: 7(fvec3) Load 57
67: 9(int) Load 63(pid) 59: 33(ptr) AccessChain 40(ip) 56 32
Store 66(param) 67 Store 59 58
69: 19(fvec4) Load 65(pos) 64: 9(int) Load 63(InvocationId)
Store 68(param) 69 66: 11 Load 40(ip)
70:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 66(param) 68(param) Store 65(param) 66
Store 62(@patchConstantResult) 70 67: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 65(param)
75: 74(ptr) AccessChain 62(@patchConstantResult) 32 32 68: 7(fvec3) CompositeExtract 67 0
76: 6(float) Load 75 70: 69(ptr) AccessChain 61(@entryPointOutput.cpoint) 64
78: 77(ptr) AccessChain 73(@patchConstantOutput.edges) 32 Store 70 68
Store 78 76 ControlBarrier 21 10 71
80: 74(ptr) AccessChain 62(@patchConstantResult) 32 79 72: 9(int) Load 63(InvocationId)
81: 6(float) Load 80 74: 73(bool) IEqual 72 32
82: 77(ptr) AccessChain 73(@patchConstantOutput.edges) 79 SelectionMerge 76 None
Store 82 81 BranchConditional 74 75 76
Branch 60 75: Label
60: Label 83: 9(int) Load 79(pid)
Store 82(param) 83
85: 19(fvec4) Load 81(pos)
Store 84(param) 85
86:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 82(param) 84(param)
Store 78(@patchConstantResult) 86
91: 90(ptr) AccessChain 78(@patchConstantResult) 32 32
92: 6(float) Load 91
94: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 32
Store 94 92
95: 90(ptr) AccessChain 78(@patchConstantResult) 32 48
96: 6(float) Load 95
97: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 48
Store 97 96
Branch 76
76: Label
Return Return
FunctionEnd FunctionEnd
16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14 16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14
@ -361,11 +479,11 @@ vertex spacing = equal_spacing
25(pid): 18(ptr) FunctionParameter 25(pid): 18(ptr) FunctionParameter
26(pos): 20(ptr) FunctionParameter 26(pos): 20(ptr) FunctionParameter
28: Label 28: Label
83(output): 61(ptr) Variable Function 98(output): 77(ptr) Variable Function
85: 74(ptr) AccessChain 83(output) 32 32 100: 90(ptr) AccessChain 98(output) 32 32
Store 85 84 Store 100 99
87: 74(ptr) AccessChain 83(output) 32 79 102: 90(ptr) AccessChain 98(output) 32 48
Store 87 86 Store 102 101
88:23(HS_CONSTANT_OUT) Load 83(output) 103:23(HS_CONSTANT_OUT) Load 98(output)
ReturnValue 88 ReturnValue 103
FunctionEnd FunctionEnd

View File

@ -24,15 +24,65 @@ vertex spacing = equal_spacing
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'InvocationId' ( in uint InvocationID) 0:26 0 (const int)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 3 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 3 (const int)
0:26 Sequence
0:26 move second child to first child ( temp 3-component vector of float)
0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -100,8 +150,8 @@ vertex spacing = equal_spacing
0:38 Branch: Return with expression 0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID) 0:? 'InvocationId' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID) 0:? 'pid' ( in uint PrimitiveID)
0:? 'pos' ( in 4-component vector of float Position) 0:? 'pos' ( in 4-component vector of float Position)
@ -136,15 +186,65 @@ vertex spacing = equal_spacing
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'InvocationId' ( in uint InvocationID) 0:26 0 (const int)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint}) 0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 3 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:26 Constant:
0:26 3 (const int)
0:26 Sequence
0:26 move second child to first child ( temp 3-component vector of float)
0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[4]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 4-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -212,8 +312,8 @@ vertex spacing = equal_spacing
0:38 Branch: Return with expression 0:38 Branch: Return with expression
0:38 'output' ( temp structure{ temp 2-element array of float edges}) 0:38 'output' ( temp structure{ temp 2-element array of float edges})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 4-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 4-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 4-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID) 0:? 'InvocationId' ( in uint InvocationID)
0:? 'pid' ( in uint PrimitiveID) 0:? 'pid' ( in uint PrimitiveID)
0:? 'pos' ( in 4-component vector of float Position) 0:? 'pos' ( in 4-component vector of float Position)
@ -221,12 +321,12 @@ vertex spacing = equal_spacing
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 91 // Id's are bound by 106
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 42 46 48 63 65 73 EntryPoint TessellationControl 4 "main" 43 61 63 79 81 89
ExecutionMode 4 OutputVertices 4 ExecutionMode 4 OutputVertices 4
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingEqual ExecutionMode 4 SpacingEqual
@ -246,24 +346,24 @@ vertex spacing = equal_spacing
Name 26 "pos" Name 26 "pos"
Name 30 "output" Name 30 "output"
Name 40 "ip" Name 40 "ip"
Name 42 "ip" Name 43 "ip.cpoint"
Name 46 "@entryPointOutput" Name 61 "@entryPointOutput.cpoint"
Name 48 "InvocationId" Name 63 "InvocationId"
Name 50 "param" Name 65 "param"
Name 62 "@patchConstantResult" Name 78 "@patchConstantResult"
Name 63 "pid" Name 79 "pid"
Name 65 "pos" Name 81 "pos"
Name 66 "param" Name 82 "param"
Name 68 "param" Name 84 "param"
Name 73 "@patchConstantOutput.edges" Name 89 "@patchConstantOutput.edges"
Name 83 "output" Name 98 "output"
Decorate 42(ip) Location 0 Decorate 43(ip.cpoint) Location 0
Decorate 46(@entryPointOutput) Location 0 Decorate 61(@entryPointOutput.cpoint) Location 0
Decorate 48(InvocationId) BuiltIn InvocationId Decorate 63(InvocationId) BuiltIn InvocationId
Decorate 63(pid) BuiltIn PrimitiveId Decorate 79(pid) BuiltIn PrimitiveId
Decorate 65(pos) BuiltIn Position Decorate 81(pos) BuiltIn Position
Decorate 73(@patchConstantOutput.edges) Patch Decorate 89(@patchConstantOutput.edges) Patch
Decorate 73(@patchConstantOutput.edges) BuiltIn TessLevelOuter Decorate 89(@patchConstantOutput.edges) BuiltIn TessLevelOuter
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -286,65 +386,83 @@ vertex spacing = equal_spacing
31: TypeInt 32 1 31: TypeInt 32 1
32: 31(int) Constant 0 32: 31(int) Constant 0
33: TypePointer Function 7(fvec3) 33: TypePointer Function 7(fvec3)
41: TypePointer Input 11 41: TypeArray 7(fvec3) 10
42(ip): 41(ptr) Variable Input 42: TypePointer Input 41
44: TypeArray 13(HS_OUT) 10 43(ip.cpoint): 42(ptr) Variable Input
45: TypePointer Output 44 44: TypePointer Input 7(fvec3)
46(@entryPointOutput): 45(ptr) Variable Output 48: 31(int) Constant 1
47: TypePointer Input 9(int) 52: 31(int) Constant 2
48(InvocationId): 47(ptr) Variable Input 56: 31(int) Constant 3
53: TypePointer Output 13(HS_OUT) 60: TypePointer Output 41
55: 9(int) Constant 0 61(@entryPointOutput.cpoint): 60(ptr) Variable Output
57: TypeBool 62: TypePointer Input 9(int)
61: TypePointer Function 23(HS_CONSTANT_OUT) 63(InvocationId): 62(ptr) Variable Input
63(pid): 47(ptr) Variable Input 69: TypePointer Output 7(fvec3)
64: TypePointer Input 19(fvec4) 71: 9(int) Constant 0
65(pos): 64(ptr) Variable Input 73: TypeBool
71: TypeArray 6(float) 10 77: TypePointer Function 23(HS_CONSTANT_OUT)
72: TypePointer Output 71 79(pid): 62(ptr) Variable Input
73(@patchConstantOutput.edges): 72(ptr) Variable Output 80: TypePointer Input 19(fvec4)
74: TypePointer Function 6(float) 81(pos): 80(ptr) Variable Input
77: TypePointer Output 6(float) 87: TypeArray 6(float) 10
79: 31(int) Constant 1 88: TypePointer Output 87
84: 6(float) Constant 1073741824 89(@patchConstantOutput.edges): 88(ptr) Variable Output
86: 6(float) Constant 1090519040 90: TypePointer Function 6(float)
93: TypePointer Output 6(float)
99: 6(float) Constant 1073741824
101: 6(float) Constant 1090519040
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
40(ip): 12(ptr) Variable Function 40(ip): 12(ptr) Variable Function
50(param): 12(ptr) Variable Function 65(param): 12(ptr) Variable Function
62(@patchConstantResult): 61(ptr) Variable Function 78(@patchConstantResult): 77(ptr) Variable Function
66(param): 18(ptr) Variable Function 82(param): 18(ptr) Variable Function
68(param): 20(ptr) Variable Function 84(param): 20(ptr) Variable Function
43: 11 Load 42(ip) 45: 44(ptr) AccessChain 43(ip.cpoint) 32
Store 40(ip) 43 46: 7(fvec3) Load 45
49: 9(int) Load 48(InvocationId) 47: 33(ptr) AccessChain 40(ip) 32 32
51: 11 Load 40(ip) Store 47 46
Store 50(param) 51 49: 44(ptr) AccessChain 43(ip.cpoint) 48
52: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 50(param) 50: 7(fvec3) Load 49
54: 53(ptr) AccessChain 46(@entryPointOutput) 49 51: 33(ptr) AccessChain 40(ip) 48 32
Store 54 52 Store 51 50
ControlBarrier 21 10 55 53: 44(ptr) AccessChain 43(ip.cpoint) 52
56: 9(int) Load 48(InvocationId) 54: 7(fvec3) Load 53
58: 57(bool) IEqual 56 32 55: 33(ptr) AccessChain 40(ip) 52 32
SelectionMerge 60 None Store 55 54
BranchConditional 58 59 60 57: 44(ptr) AccessChain 43(ip.cpoint) 56
59: Label 58: 7(fvec3) Load 57
67: 9(int) Load 63(pid) 59: 33(ptr) AccessChain 40(ip) 56 32
Store 66(param) 67 Store 59 58
69: 19(fvec4) Load 65(pos) 64: 9(int) Load 63(InvocationId)
Store 68(param) 69 66: 11 Load 40(ip)
70:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 66(param) 68(param) Store 65(param) 66
Store 62(@patchConstantResult) 70 67: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[4];) 65(param)
75: 74(ptr) AccessChain 62(@patchConstantResult) 32 32 68: 7(fvec3) CompositeExtract 67 0
76: 6(float) Load 75 70: 69(ptr) AccessChain 61(@entryPointOutput.cpoint) 64
78: 77(ptr) AccessChain 73(@patchConstantOutput.edges) 32 Store 70 68
Store 78 76 ControlBarrier 21 10 71
80: 74(ptr) AccessChain 62(@patchConstantResult) 32 79 72: 9(int) Load 63(InvocationId)
81: 6(float) Load 80 74: 73(bool) IEqual 72 32
82: 77(ptr) AccessChain 73(@patchConstantOutput.edges) 79 SelectionMerge 76 None
Store 82 81 BranchConditional 74 75 76
Branch 60 75: Label
60: Label 83: 9(int) Load 79(pid)
Store 82(param) 83
85: 19(fvec4) Load 81(pos)
Store 84(param) 85
86:23(HS_CONSTANT_OUT) FunctionCall 27(PCF(u1;vf4;) 82(param) 84(param)
Store 78(@patchConstantResult) 86
91: 90(ptr) AccessChain 78(@patchConstantResult) 32 32
92: 6(float) Load 91
94: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 32
Store 94 92
95: 90(ptr) AccessChain 78(@patchConstantResult) 32 48
96: 6(float) Load 95
97: 93(ptr) AccessChain 89(@patchConstantOutput.edges) 48
Store 97 96
Branch 76
76: Label
Return Return
FunctionEnd FunctionEnd
16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14 16(@main(struct-VS_OUT-vf31[4];): 13(HS_OUT) Function None 14
@ -362,11 +480,11 @@ vertex spacing = equal_spacing
25(pid): 18(ptr) FunctionParameter 25(pid): 18(ptr) FunctionParameter
26(pos): 20(ptr) FunctionParameter 26(pos): 20(ptr) FunctionParameter
28: Label 28: Label
83(output): 61(ptr) Variable Function 98(output): 77(ptr) Variable Function
85: 74(ptr) AccessChain 83(output) 32 32 100: 90(ptr) AccessChain 98(output) 32 32
Store 85 84 Store 100 99
87: 74(ptr) AccessChain 83(output) 32 79 102: 90(ptr) AccessChain 98(output) 32 48
Store 87 86 Store 102 101
88:23(HS_CONSTANT_OUT) Load 83(output) 103:23(HS_CONSTANT_OUT) Load 98(output)
ReturnValue 88 ReturnValue 103
FunctionEnd FunctionEnd

View File

@ -93,11 +93,8 @@ triangle order = cw
0:39 0 (const int) 0:39 0 (const int)
0:39 Constant: 0:39 Constant:
0:39 1 (const int) 0:39 1 (const int)
0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index (layout( location=0) in 4-component vector of float)
0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
0:39 Constant:
0:39 0 (const int)
0:39 Constant: 0:39 Constant:
0:39 0 (const int) 0:39 0 (const int)
0:39 move second child to first child ( temp 4-component vector of float) 0:39 move second child to first child ( temp 4-component vector of float)
@ -120,13 +117,10 @@ triangle order = cw
0:39 1 (const int) 0:39 1 (const int)
0:39 Constant: 0:39 Constant:
0:39 1 (const int) 0:39 1 (const int)
0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index (layout( location=0) in 4-component vector of float)
0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
0:39 Constant:
0:39 1 (const int)
0:39 Constant: 0:39 Constant:
0:39 0 (const int) 0:39 1 (const int)
0:39 move second child to first child ( temp 4-component vector of float) 0:39 move second child to first child ( temp 4-component vector of float)
0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float)
0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
@ -147,13 +141,10 @@ triangle order = cw
0:39 2 (const int) 0:39 2 (const int)
0:39 Constant: 0:39 Constant:
0:39 1 (const int) 0:39 1 (const int)
0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index (layout( location=0) in 4-component vector of float)
0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
0:39 Constant:
0:39 2 (const int)
0:39 Constant: 0:39 Constant:
0:39 0 (const int) 0:39 2 (const int)
0:39 move second child to first child ( temp uint) 0:39 move second child to first child ( temp uint)
0:? 'cpid' ( temp uint) 0:? 'cpid' ( temp uint)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
@ -230,7 +221,7 @@ triangle order = cw
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:? 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
@ -333,11 +324,8 @@ triangle order = cw
0:39 0 (const int) 0:39 0 (const int)
0:39 Constant: 0:39 Constant:
0:39 1 (const int) 0:39 1 (const int)
0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index (layout( location=0) in 4-component vector of float)
0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
0:39 Constant:
0:39 0 (const int)
0:39 Constant: 0:39 Constant:
0:39 0 (const int) 0:39 0 (const int)
0:39 move second child to first child ( temp 4-component vector of float) 0:39 move second child to first child ( temp 4-component vector of float)
@ -360,13 +348,10 @@ triangle order = cw
0:39 1 (const int) 0:39 1 (const int)
0:39 Constant: 0:39 Constant:
0:39 1 (const int) 0:39 1 (const int)
0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index (layout( location=0) in 4-component vector of float)
0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
0:39 Constant:
0:39 1 (const int)
0:39 Constant: 0:39 Constant:
0:39 0 (const int) 0:39 1 (const int)
0:39 move second child to first child ( temp 4-component vector of float) 0:39 move second child to first child ( temp 4-component vector of float)
0:39 m_Position: direct index for structure ( temp 4-component vector of float) 0:39 m_Position: direct index for structure ( temp 4-component vector of float)
0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal}) 0:39 direct index ( temp structure{ temp 4-component vector of float m_Position, temp 4-component vector of float m_Normal})
@ -387,13 +372,10 @@ triangle order = cw
0:39 2 (const int) 0:39 2 (const int)
0:39 Constant: 0:39 Constant:
0:39 1 (const int) 0:39 1 (const int)
0:39 m_Normal: direct index for structure ( temp 4-component vector of float) 0:39 direct index (layout( location=0) in 4-component vector of float)
0:39 direct index (layout( location=0) in structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:39 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal})
0:39 Constant:
0:39 2 (const int)
0:39 Constant: 0:39 Constant:
0:39 0 (const int) 0:39 2 (const int)
0:39 move second child to first child ( temp uint) 0:39 move second child to first child ( temp uint)
0:? 'cpid' ( temp uint) 0:? 'cpid' ( temp uint)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
@ -470,19 +452,19 @@ triangle order = cw
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position) 0:? '@entryPointOutput.m_Position' ( out 3-element array of 4-component vector of float Position)
0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position) 0:? 'I.m_Position' ( in 3-element array of 4-component vector of float Position)
0:? 'I' (layout( location=0) in 3-element array of structure{ temp 4-component vector of float m_Normal}) 0:? 'I.m_Normal' (layout( location=0) in 3-element array of 4-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.fTessFactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 127 // Id's are bound by 124
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 56 64 83 86 110 123 EntryPoint TessellationControl 4 "main" 56 61 80 83 107 120
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 SpacingFractionalOdd
@ -506,26 +488,24 @@ triangle order = cw
Name 45 "output" Name 45 "output"
Name 53 "I" Name 53 "I"
Name 56 "I.m_Position" Name 56 "I.m_Position"
Name 61 "HS_Input" Name 61 "I.m_Normal"
MemberName 61(HS_Input) 0 "m_Normal" Name 78 "cpid"
Name 64 "I" Name 80 "cpid"
Name 81 "cpid" Name 83 "@entryPointOutput.m_Position"
Name 83 "cpid" Name 85 "param"
Name 86 "@entryPointOutput.m_Position" Name 87 "param"
Name 88 "param" Name 101 "@patchConstantResult"
Name 90 "param" Name 102 "param"
Name 104 "@patchConstantResult" Name 107 "@patchConstantOutput.fTessFactor"
Name 105 "param" Name 120 "@patchConstantOutput.fInsideTessFactor"
Name 110 "@patchConstantOutput.fTessFactor"
Name 123 "@patchConstantOutput.fInsideTessFactor"
Decorate 56(I.m_Position) BuiltIn Position Decorate 56(I.m_Position) BuiltIn Position
Decorate 64(I) Location 0 Decorate 61(I.m_Normal) Location 0
Decorate 83(cpid) BuiltIn InvocationId Decorate 80(cpid) BuiltIn InvocationId
Decorate 86(@entryPointOutput.m_Position) BuiltIn Position Decorate 83(@entryPointOutput.m_Position) BuiltIn Position
Decorate 110(@patchConstantOutput.fTessFactor) Patch Decorate 107(@patchConstantOutput.fTessFactor) Patch
Decorate 110(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter Decorate 107(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter
Decorate 123(@patchConstantOutput.fInsideTessFactor) Patch Decorate 120(@patchConstantOutput.fInsideTessFactor) Patch
Decorate 123(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner Decorate 120(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -557,98 +537,95 @@ triangle order = cw
55: TypePointer Input 54 55: TypePointer Input 54
56(I.m_Position): 55(ptr) Variable Input 56(I.m_Position): 55(ptr) Variable Input
57: TypePointer Input 7(fvec4) 57: TypePointer Input 7(fvec4)
61(HS_Input): TypeStruct 7(fvec4) 61(I.m_Normal): 55(ptr) Variable Input
62: TypeArray 61(HS_Input) 10 71: 31(int) Constant 2
63: TypePointer Input 62 79: TypePointer Input 9(int)
64(I): 63(ptr) Variable Input 80(cpid): 79(ptr) Variable Input
74: 31(int) Constant 2 82: TypePointer Output 54
82: TypePointer Input 9(int) 83(@entryPointOutput.m_Position): 82(ptr) Variable Output
83(cpid): 82(ptr) Variable Input 91: TypePointer Output 7(fvec4)
85: TypePointer Output 54 93: 9(int) Constant 2
86(@entryPointOutput.m_Position): 85(ptr) Variable Output 94: 9(int) Constant 4
94: TypePointer Output 7(fvec4) 95: 9(int) Constant 0
96: 9(int) Constant 2 97: TypeBool
97: 9(int) Constant 4 105: TypeArray 6(float) 94
98: 9(int) Constant 0 106: TypePointer Output 105
100: TypeBool 107(@patchConstantOutput.fTessFactor): 106(ptr) Variable Output
108: TypeArray 6(float) 97 110: TypePointer Output 6(float)
109: TypePointer Output 108 118: TypeArray 6(float) 93
110(@patchConstantOutput.fTessFactor): 109(ptr) Variable Output 119: TypePointer Output 118
113: TypePointer Output 6(float) 120(@patchConstantOutput.fInsideTessFactor): 119(ptr) Variable Output
121: TypeArray 6(float) 96
122: TypePointer Output 121
123(@patchConstantOutput.fInsideTessFactor): 122(ptr) Variable Output
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
53(I): 12(ptr) Variable Function 53(I): 12(ptr) Variable Function
81(cpid): 19(ptr) Variable Function 78(cpid): 19(ptr) Variable Function
88(param): 12(ptr) Variable Function 85(param): 12(ptr) Variable Function
90(param): 19(ptr) Variable Function 87(param): 19(ptr) Variable Function
104(@patchConstantResult): 26(ptr) Variable Function 101(@patchConstantResult): 26(ptr) Variable Function
105(param): 12(ptr) Variable Function 102(param): 12(ptr) Variable Function
58: 57(ptr) AccessChain 56(I.m_Position) 33 58: 57(ptr) AccessChain 56(I.m_Position) 33
59: 7(fvec4) Load 58 59: 7(fvec4) Load 58
60: 48(ptr) AccessChain 53(I) 33 33 60: 48(ptr) AccessChain 53(I) 33 33
Store 60 59 Store 60 59
65: 57(ptr) AccessChain 64(I) 33 33 62: 57(ptr) AccessChain 61(I.m_Normal) 33
63: 7(fvec4) Load 62
64: 48(ptr) AccessChain 53(I) 33 32
Store 64 63
65: 57(ptr) AccessChain 56(I.m_Position) 32
66: 7(fvec4) Load 65 66: 7(fvec4) Load 65
67: 48(ptr) AccessChain 53(I) 33 32 67: 48(ptr) AccessChain 53(I) 32 33
Store 67 66 Store 67 66
68: 57(ptr) AccessChain 56(I.m_Position) 32 68: 57(ptr) AccessChain 61(I.m_Normal) 32
69: 7(fvec4) Load 68 69: 7(fvec4) Load 68
70: 48(ptr) AccessChain 53(I) 32 33 70: 48(ptr) AccessChain 53(I) 32 32
Store 70 69 Store 70 69
71: 57(ptr) AccessChain 64(I) 32 33 72: 57(ptr) AccessChain 56(I.m_Position) 71
72: 7(fvec4) Load 71 73: 7(fvec4) Load 72
73: 48(ptr) AccessChain 53(I) 32 32 74: 48(ptr) AccessChain 53(I) 71 33
Store 73 72 Store 74 73
75: 57(ptr) AccessChain 56(I.m_Position) 74 75: 57(ptr) AccessChain 61(I.m_Normal) 71
76: 7(fvec4) Load 75 76: 7(fvec4) Load 75
77: 48(ptr) AccessChain 53(I) 74 33 77: 48(ptr) AccessChain 53(I) 71 32
Store 77 76 Store 77 76
78: 57(ptr) AccessChain 64(I) 74 33 81: 9(int) Load 80(cpid)
79: 7(fvec4) Load 78 Store 78(cpid) 81
80: 48(ptr) AccessChain 53(I) 74 32 84: 9(int) Load 80(cpid)
Store 80 79 86: 11 Load 53(I)
84: 9(int) Load 83(cpid) Store 85(param) 86
Store 81(cpid) 84 88: 9(int) Load 78(cpid)
87: 9(int) Load 83(cpid) Store 87(param) 88
89: 11 Load 53(I) 89:20(HS_Main_Output) FunctionCall 24(@main(struct-HS_Input-vf4-vf41[3];u1;) 85(param) 87(param)
Store 88(param) 89 90: 7(fvec4) CompositeExtract 89 0
91: 9(int) Load 81(cpid) 92: 91(ptr) AccessChain 83(@entryPointOutput.m_Position) 84
Store 90(param) 91 Store 92 90
92:20(HS_Main_Output) FunctionCall 24(@main(struct-HS_Input-vf4-vf41[3];u1;) 88(param) 90(param) ControlBarrier 93 94 95
93: 7(fvec4) CompositeExtract 92 0 96: 9(int) Load 80(cpid)
95: 94(ptr) AccessChain 86(@entryPointOutput.m_Position) 87 98: 97(bool) IEqual 96 33
Store 95 93 SelectionMerge 100 None
ControlBarrier 96 97 98 BranchConditional 98 99 100
99: 9(int) Load 83(cpid) 99: Label
101: 100(bool) IEqual 99 33 103: 11 Load 53(I)
SelectionMerge 103 None Store 102(param) 103
BranchConditional 101 102 103 104:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 102(param)
102: Label Store 101(@patchConstantResult) 104
106: 11 Load 53(I) 108: 34(ptr) AccessChain 101(@patchConstantResult) 33 33
Store 105(param) 106 109: 6(float) Load 108
107:14(HS_Output) FunctionCall 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];) 105(param) 111: 110(ptr) AccessChain 107(@patchConstantOutput.fTessFactor) 33
Store 104(@patchConstantResult) 107 Store 111 109
111: 34(ptr) AccessChain 104(@patchConstantResult) 33 33 112: 34(ptr) AccessChain 101(@patchConstantResult) 33 32
112: 6(float) Load 111 113: 6(float) Load 112
114: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 33 114: 110(ptr) AccessChain 107(@patchConstantOutput.fTessFactor) 32
Store 114 112 Store 114 113
115: 34(ptr) AccessChain 104(@patchConstantResult) 33 32 115: 34(ptr) AccessChain 101(@patchConstantResult) 33 71
116: 6(float) Load 115 116: 6(float) Load 115
117: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 32 117: 110(ptr) AccessChain 107(@patchConstantOutput.fTessFactor) 71
Store 117 116 Store 117 116
118: 34(ptr) AccessChain 104(@patchConstantResult) 33 74 121: 34(ptr) AccessChain 101(@patchConstantResult) 32
119: 6(float) Load 118 122: 6(float) Load 121
120: 113(ptr) AccessChain 110(@patchConstantOutput.fTessFactor) 74 123: 110(ptr) AccessChain 120(@patchConstantOutput.fInsideTessFactor) 33
Store 120 119 Store 123 122
124: 34(ptr) AccessChain 104(@patchConstantResult) 32 Branch 100
125: 6(float) Load 124 100: Label
126: 113(ptr) AccessChain 123(@patchConstantOutput.fInsideTessFactor) 33
Store 126 125
Branch 103
103: Label
Return Return
FunctionEnd FunctionEnd
17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];):14(HS_Output) Function None 15 17(HS_ConstFunc(struct-HS_Input-vf4-vf41[3];):14(HS_Output) Function None 15

View File

@ -22,19 +22,57 @@ triangle order = cw
0:27 Function Definition: main( ( temp void) 0:27 Function Definition: main( ( temp void)
0:27 Function Parameters: 0:27 Function Parameters:
0:? Sequence 0:? Sequence
0:27 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 move second child to first child ( temp 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:27 val: direct index for structure ( temp 3-component vector of float)
0:27 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:27 Constant:
0:27 0 (const int)
0:27 move second child to first child ( temp 3-component vector of float)
0:27 val: direct index for structure ( temp 3-component vector of float)
0:27 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:27 Constant:
0:27 1 (const int)
0:27 move second child to first child ( temp 3-component vector of float)
0:27 val: direct index for structure ( temp 3-component vector of float)
0:27 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:27 Constant:
0:27 2 (const int)
0:27 move second child to first child ( temp uint) 0:27 move second child to first child ( temp uint)
0:? 'cpid' ( temp uint) 0:? 'cpid' ( temp uint)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:27 move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:27 Sequence
0:27 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:27 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:27 indirect index (layout( location=0) out 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID)
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 val: direct index for structure ( temp 3-component vector of float)
0:? 'cpid' ( temp uint) 0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:? 'cpid' ( temp uint)
0:27 Constant:
0:27 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -189,8 +227,8 @@ triangle order = cw
0:42 Branch: Return with expression 0:42 Branch: Return with expression
0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
@ -222,19 +260,57 @@ triangle order = cw
0:27 Function Definition: main( ( temp void) 0:27 Function Definition: main( ( temp void)
0:27 Function Parameters: 0:27 Function Parameters:
0:? Sequence 0:? Sequence
0:27 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 move second child to first child ( temp 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:27 val: direct index for structure ( temp 3-component vector of float)
0:27 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:27 Constant:
0:27 0 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:27 Constant:
0:27 0 (const int)
0:27 move second child to first child ( temp 3-component vector of float)
0:27 val: direct index for structure ( temp 3-component vector of float)
0:27 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:27 Constant:
0:27 1 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:27 Constant:
0:27 1 (const int)
0:27 move second child to first child ( temp 3-component vector of float)
0:27 val: direct index for structure ( temp 3-component vector of float)
0:27 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:27 Constant:
0:27 2 (const int)
0:27 Constant:
0:27 0 (const int)
0:27 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:27 Constant:
0:27 2 (const int)
0:27 move second child to first child ( temp uint) 0:27 move second child to first child ( temp uint)
0:? 'cpid' ( temp uint) 0:? 'cpid' ( temp uint)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:27 move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:27 Sequence
0:27 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:27 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:27 indirect index (layout( location=0) out 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID)
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:27 val: direct index for structure ( temp 3-component vector of float)
0:? 'cpid' ( temp uint) 0:27 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:? 'cpid' ( temp uint)
0:27 Constant:
0:27 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -389,20 +465,20 @@ triangle order = cw
0:42 Branch: Return with expression 0:42 Branch: Return with expression
0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:42 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 124 // Id's are bound by 135
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 41 45 48 94 108 EntryPoint TessellationControl 4 "main" 42 57 60 105 119
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 SpacingFractionalOdd
@ -423,33 +499,33 @@ triangle order = cw
Name 24 "pcf_out" Name 24 "pcf_out"
Name 28 "o" Name 28 "o"
Name 39 "i" Name 39 "i"
Name 41 "i" Name 42 "i.val"
Name 43 "cpid" Name 55 "cpid"
Name 45 "cpid" Name 57 "cpid"
Name 48 "@entryPointOutput" Name 60 "@entryPointOutput.val"
Name 50 "param" Name 62 "param"
Name 52 "param" Name 64 "param"
Name 66 "pcf_out" Name 79 "pcf_out"
Name 67 "i" Name 80 "i"
Name 68 "param" Name 81 "param"
Name 70 "param"
Name 74 "i"
Name 76 "param"
Name 78 "param"
Name 82 "i"
Name 83 "param" Name 83 "param"
Name 85 "param" Name 86 "i"
Name 89 "@patchConstantResult" Name 88 "param"
Name 94 "@patchConstantOutput.tfactor" Name 90 "param"
Name 108 "@patchConstantOutput.flInFactor" Name 93 "i"
Name 112 "o" Name 94 "param"
Decorate 41(i) Location 0 Name 96 "param"
Decorate 45(cpid) BuiltIn InvocationId Name 100 "@patchConstantResult"
Decorate 48(@entryPointOutput) Location 0 Name 105 "@patchConstantOutput.tfactor"
Decorate 94(@patchConstantOutput.tfactor) Patch Name 119 "@patchConstantOutput.flInFactor"
Decorate 94(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter Name 123 "o"
Decorate 108(@patchConstantOutput.flInFactor) Patch Decorate 42(i.val) Location 0
Decorate 108(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner Decorate 57(cpid) BuiltIn InvocationId
Decorate 60(@entryPointOutput.val) Location 0
Decorate 105(@patchConstantOutput.tfactor) Patch
Decorate 105(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter
Decorate 119(@patchConstantOutput.flInFactor) Patch
Decorate 119(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -470,105 +546,118 @@ triangle order = cw
29: TypeInt 32 1 29: TypeInt 32 1
30: 29(int) Constant 0 30: 29(int) Constant 0
34: TypePointer Function 7(fvec3) 34: TypePointer Function 7(fvec3)
40: TypePointer Input 11 40: TypeArray 7(fvec3) 10
41(i): 40(ptr) Variable Input 41: TypePointer Input 40
44: TypePointer Input 9(int) 42(i.val): 41(ptr) Variable Input
45(cpid): 44(ptr) Variable Input 43: TypePointer Input 7(fvec3)
47: TypePointer Output 20 47: 29(int) Constant 1
48(@entryPointOutput): 47(ptr) Variable Output 51: 29(int) Constant 2
55: TypePointer Output 14(hs_out_t) 56: TypePointer Input 9(int)
57: 9(int) Constant 2 57(cpid): 56(ptr) Variable Input
58: 9(int) Constant 4 59: TypePointer Output 40
59: 9(int) Constant 0 60(@entryPointOutput.val): 59(ptr) Variable Output
61: TypeBool 68: TypePointer Output 7(fvec3)
65: TypePointer Function 20 70: 9(int) Constant 2
73: 29(int) Constant 1 71: 9(int) Constant 4
75: 9(int) Constant 1 72: 9(int) Constant 0
81: 29(int) Constant 2 74: TypeBool
88: TypePointer Function 22(hs_pcf_t) 78: TypePointer Function 20
92: TypeArray 6(float) 58 87: 9(int) Constant 1
93: TypePointer Output 92 99: TypePointer Function 22(hs_pcf_t)
94(@patchConstantOutput.tfactor): 93(ptr) Variable Output 103: TypeArray 6(float) 71
95: TypePointer Function 6(float) 104: TypePointer Output 103
98: TypePointer Output 6(float) 105(@patchConstantOutput.tfactor): 104(ptr) Variable Output
106: TypeArray 6(float) 57 106: TypePointer Function 6(float)
107: TypePointer Output 106 109: TypePointer Output 6(float)
108(@patchConstantOutput.flInFactor): 107(ptr) Variable Output 117: TypeArray 6(float) 70
119: 6(float) Constant 1082130432 118: TypePointer Output 117
119(@patchConstantOutput.flInFactor): 118(ptr) Variable Output
130: 6(float) Constant 1082130432
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
39(i): 12(ptr) Variable Function 39(i): 12(ptr) Variable Function
43(cpid): 13(ptr) Variable Function 55(cpid): 13(ptr) Variable Function
50(param): 12(ptr) Variable Function 62(param): 12(ptr) Variable Function
52(param): 13(ptr) Variable Function 64(param): 13(ptr) Variable Function
66(pcf_out): 65(ptr) Variable Function 79(pcf_out): 78(ptr) Variable Function
67(i): 12(ptr) Variable Function 80(i): 12(ptr) Variable Function
68(param): 12(ptr) Variable Function 81(param): 12(ptr) Variable Function
70(param): 13(ptr) Variable Function 83(param): 13(ptr) Variable Function
74(i): 12(ptr) Variable Function 86(i): 12(ptr) Variable Function
76(param): 12(ptr) Variable Function 88(param): 12(ptr) Variable Function
78(param): 13(ptr) Variable Function 90(param): 13(ptr) Variable Function
82(i): 12(ptr) Variable Function 93(i): 12(ptr) Variable Function
83(param): 12(ptr) Variable Function 94(param): 12(ptr) Variable Function
85(param): 13(ptr) Variable Function 96(param): 13(ptr) Variable Function
89(@patchConstantResult): 88(ptr) Variable Function 100(@patchConstantResult): 99(ptr) Variable Function
42: 11 Load 41(i) 44: 43(ptr) AccessChain 42(i.val) 30
Store 39(i) 42 45: 7(fvec3) Load 44
46: 9(int) Load 45(cpid) 46: 34(ptr) AccessChain 39(i) 30 30
Store 43(cpid) 46 Store 46 45
49: 9(int) Load 45(cpid) 48: 43(ptr) AccessChain 42(i.val) 47
51: 11 Load 39(i) 49: 7(fvec3) Load 48
Store 50(param) 51 50: 34(ptr) AccessChain 39(i) 47 30
53: 9(int) Load 43(cpid) Store 50 49
Store 52(param) 53 52: 43(ptr) AccessChain 42(i.val) 51
54:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 50(param) 52(param) 53: 7(fvec3) Load 52
56: 55(ptr) AccessChain 48(@entryPointOutput) 49 54: 34(ptr) AccessChain 39(i) 51 30
Store 56 54 Store 54 53
ControlBarrier 57 58 59 58: 9(int) Load 57(cpid)
60: 9(int) Load 45(cpid) Store 55(cpid) 58
62: 61(bool) IEqual 60 30 61: 9(int) Load 57(cpid)
SelectionMerge 64 None 63: 11 Load 39(i)
BranchConditional 62 63 64 Store 62(param) 63
63: Label 65: 9(int) Load 55(cpid)
69: 11 Load 67(i) Store 64(param) 65
Store 68(param) 69 66:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 62(param) 64(param)
Store 70(param) 59 67: 7(fvec3) CompositeExtract 66 0
71:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 68(param) 70(param) 69: 68(ptr) AccessChain 60(@entryPointOutput.val) 61
72: 27(ptr) AccessChain 66(pcf_out) 30 Store 69 67
Store 72 71 ControlBarrier 70 71 72
77: 11 Load 74(i) 73: 9(int) Load 57(cpid)
Store 76(param) 77 75: 74(bool) IEqual 73 30
Store 78(param) 75 SelectionMerge 77 None
79:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 76(param) 78(param) BranchConditional 75 76 77
80: 27(ptr) AccessChain 66(pcf_out) 73 76: Label
Store 80 79 82: 11 Load 80(i)
84: 11 Load 82(i) Store 81(param) 82
Store 83(param) 84 Store 83(param) 72
Store 85(param) 57 84:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 81(param) 83(param)
86:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 83(param) 85(param) 85: 27(ptr) AccessChain 79(pcf_out) 30
87: 27(ptr) AccessChain 66(pcf_out) 81 Store 85 84
Store 87 86 89: 11 Load 86(i)
90: 20 Load 66(pcf_out) Store 88(param) 89
91:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 90 Store 90(param) 87
Store 89(@patchConstantResult) 91 91:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 88(param) 90(param)
96: 95(ptr) AccessChain 89(@patchConstantResult) 30 30 92: 27(ptr) AccessChain 79(pcf_out) 47
97: 6(float) Load 96 Store 92 91
99: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 30 95: 11 Load 93(i)
Store 99 97 Store 94(param) 95
100: 95(ptr) AccessChain 89(@patchConstantResult) 30 73 Store 96(param) 70
101: 6(float) Load 100 97:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 94(param) 96(param)
102: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 73 98: 27(ptr) AccessChain 79(pcf_out) 51
Store 102 101 Store 98 97
103: 95(ptr) AccessChain 89(@patchConstantResult) 30 81 101: 20 Load 79(pcf_out)
104: 6(float) Load 103 102:22(hs_pcf_t) FunctionCall 25(PCF(struct-hs_out_t-vf31[3];) 101
105: 98(ptr) AccessChain 94(@patchConstantOutput.tfactor) 81 Store 100(@patchConstantResult) 102
Store 105 104 107: 106(ptr) AccessChain 100(@patchConstantResult) 30 30
109: 95(ptr) AccessChain 89(@patchConstantResult) 73 108: 6(float) Load 107
110: 6(float) Load 109 110: 109(ptr) AccessChain 105(@patchConstantOutput.tfactor) 30
111: 98(ptr) AccessChain 108(@patchConstantOutput.flInFactor) 30 Store 110 108
Store 111 110 111: 106(ptr) AccessChain 100(@patchConstantResult) 30 47
Branch 64 112: 6(float) Load 111
64: Label 113: 109(ptr) AccessChain 105(@patchConstantOutput.tfactor) 47
Store 113 112
114: 106(ptr) AccessChain 100(@patchConstantResult) 30 51
115: 6(float) Load 114
116: 109(ptr) AccessChain 105(@patchConstantOutput.tfactor) 51
Store 116 115
120: 106(ptr) AccessChain 100(@patchConstantResult) 47
121: 6(float) Load 120
122: 109(ptr) AccessChain 119(@patchConstantOutput.flInFactor) 30
Store 122 121
Branch 77
77: Label
Return Return
FunctionEnd FunctionEnd
18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15 18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15
@ -587,18 +676,18 @@ triangle order = cw
25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23 25(PCF(struct-hs_out_t-vf31[3];):22(hs_pcf_t) Function None 23
24(pcf_out): 20 FunctionParameter 24(pcf_out): 20 FunctionParameter
26: Label 26: Label
112(o): 88(ptr) Variable Function 123(o): 99(ptr) Variable Function
113: 6(float) CompositeExtract 24(pcf_out) 0 0 0 124: 6(float) CompositeExtract 24(pcf_out) 0 0 0
114: 95(ptr) AccessChain 112(o) 30 30 125: 106(ptr) AccessChain 123(o) 30 30
Store 114 113 Store 125 124
115: 6(float) CompositeExtract 24(pcf_out) 1 0 0 126: 6(float) CompositeExtract 24(pcf_out) 1 0 0
116: 95(ptr) AccessChain 112(o) 30 73 127: 106(ptr) AccessChain 123(o) 30 47
Store 116 115 Store 127 126
117: 6(float) CompositeExtract 24(pcf_out) 2 0 0 128: 6(float) CompositeExtract 24(pcf_out) 2 0 0
118: 95(ptr) AccessChain 112(o) 30 81 129: 106(ptr) AccessChain 123(o) 30 51
Store 118 117 Store 129 128
120: 95(ptr) AccessChain 112(o) 73 131: 106(ptr) AccessChain 123(o) 47
Store 120 119 Store 131 130
121:22(hs_pcf_t) Load 112(o) 132:22(hs_pcf_t) Load 123(o)
ReturnValue 121 ReturnValue 132
FunctionEnd FunctionEnd

View File

@ -29,19 +29,57 @@ triangle order = cw
0:28 Function Definition: main( ( temp void) 0:28 Function Definition: main( ( temp void)
0:28 Function Parameters: 0:28 Function Parameters:
0:? Sequence 0:? Sequence
0:28 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 move second child to first child ( temp 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:28 val: direct index for structure ( temp 3-component vector of float)
0:28 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp 3-component vector of float)
0:28 val: direct index for structure ( temp 3-component vector of float)
0:28 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28 Constant:
0:28 1 (const int)
0:28 move second child to first child ( temp 3-component vector of float)
0:28 val: direct index for structure ( temp 3-component vector of float)
0:28 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28 Constant:
0:28 2 (const int)
0:28 move second child to first child ( temp uint) 0:28 move second child to first child ( temp uint)
0:? 'cpid' ( temp uint) 0:? 'cpid' ( temp uint)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:28 move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:28 Sequence
0:28 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:28 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:28 indirect index (layout( location=0) out 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID)
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 val: direct index for structure ( temp 3-component vector of float)
0:? 'cpid' ( temp uint) 0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:? 'cpid' ( temp uint)
0:28 Constant:
0:28 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -198,8 +236,8 @@ triangle order = cw
0:46 Branch: Return with expression 0:46 Branch: Return with expression
0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
@ -238,19 +276,57 @@ triangle order = cw
0:28 Function Definition: main( ( temp void) 0:28 Function Definition: main( ( temp void)
0:28 Function Parameters: 0:28 Function Parameters:
0:? Sequence 0:? Sequence
0:28 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 Sequence
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 move second child to first child ( temp 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:28 val: direct index for structure ( temp 3-component vector of float)
0:28 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28 Constant:
0:28 0 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28 Constant:
0:28 0 (const int)
0:28 move second child to first child ( temp 3-component vector of float)
0:28 val: direct index for structure ( temp 3-component vector of float)
0:28 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28 Constant:
0:28 1 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28 Constant:
0:28 1 (const int)
0:28 move second child to first child ( temp 3-component vector of float)
0:28 val: direct index for structure ( temp 3-component vector of float)
0:28 direct index ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:28 Constant:
0:28 2 (const int)
0:28 Constant:
0:28 0 (const int)
0:28 direct index (layout( location=0) in 3-component vector of float)
0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:28 Constant:
0:28 2 (const int)
0:28 move second child to first child ( temp uint) 0:28 move second child to first child ( temp uint)
0:? 'cpid' ( temp uint) 0:? 'cpid' ( temp uint)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:28 move second child to first child ( temp structure{ temp 3-component vector of float val}) 0:28 Sequence
0:28 indirect index (layout( location=0) out structure{ temp 3-component vector of float val}) 0:28 move second child to first child ( temp 3-component vector of float)
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:28 indirect index (layout( location=0) out 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val}) 0:? 'cpid' ( in uint InvocationID)
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val}) 0:28 val: direct index for structure ( temp 3-component vector of float)
0:? 'cpid' ( temp uint) 0:28 Function Call: @main(struct-hs_in_t-vf31[3];u1; ( temp structure{ temp 3-component vector of float val})
0:? 'i' ( temp 3-element array of structure{ temp 3-component vector of float val})
0:? 'cpid' ( temp uint)
0:28 Constant:
0:28 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -407,20 +483,20 @@ triangle order = cw
0:46 Branch: Return with expression 0:46 Branch: Return with expression
0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor}) 0:46 'o' ( temp structure{ temp 3-element array of float tfactor, temp float flInFactor})
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float val}) 0:? '@entryPointOutput.val' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'i' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float val}) 0:? 'i.val' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'cpid' ( in uint InvocationID) 0:? 'cpid' ( in uint InvocationID)
0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter) 0:? '@patchConstantOutput.tfactor' ( patch out 4-element array of float TessLevelOuter)
0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 126 // Id's are bound by 137
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 42 46 49 96 110 EntryPoint TessellationControl 4 "main" 43 58 61 107 121
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalOdd ExecutionMode 4 SpacingFractionalOdd
@ -442,33 +518,33 @@ triangle order = cw
Name 25 "pcf_in" Name 25 "pcf_in"
Name 31 "o" Name 31 "o"
Name 40 "i" Name 40 "i"
Name 42 "i" Name 43 "i.val"
Name 44 "cpid" Name 56 "cpid"
Name 46 "cpid" Name 58 "cpid"
Name 49 "@entryPointOutput" Name 61 "@entryPointOutput.val"
Name 51 "param" Name 63 "param"
Name 53 "param" Name 65 "param"
Name 67 "pcf_out" Name 80 "pcf_out"
Name 68 "i" Name 81 "i"
Name 69 "param" Name 82 "param"
Name 71 "param"
Name 75 "i"
Name 77 "param"
Name 79 "param"
Name 83 "i"
Name 84 "param" Name 84 "param"
Name 86 "param" Name 87 "i"
Name 90 "@patchConstantResult" Name 89 "param"
Name 96 "@patchConstantOutput.tfactor" Name 91 "param"
Name 110 "@patchConstantOutput.flInFactor" Name 94 "i"
Name 114 "o" Name 95 "param"
Decorate 42(i) Location 0 Name 97 "param"
Decorate 46(cpid) BuiltIn InvocationId Name 101 "@patchConstantResult"
Decorate 49(@entryPointOutput) Location 0 Name 107 "@patchConstantOutput.tfactor"
Decorate 96(@patchConstantOutput.tfactor) Patch Name 121 "@patchConstantOutput.flInFactor"
Decorate 96(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter Name 125 "o"
Decorate 110(@patchConstantOutput.flInFactor) Patch Decorate 43(i.val) Location 0
Decorate 110(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner Decorate 58(cpid) BuiltIn InvocationId
Decorate 61(@entryPointOutput.val) Location 0
Decorate 107(@patchConstantOutput.tfactor) Patch
Decorate 107(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter
Decorate 121(@patchConstantOutput.flInFactor) Patch
Decorate 121(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -489,106 +565,119 @@ triangle order = cw
29: 28(int) Constant 0 29: 28(int) Constant 0
30: TypePointer Function 14(hs_out_t) 30: TypePointer Function 14(hs_out_t)
35: TypePointer Function 7(fvec3) 35: TypePointer Function 7(fvec3)
41: TypePointer Input 11 41: TypeArray 7(fvec3) 10
42(i): 41(ptr) Variable Input 42: TypePointer Input 41
45: TypePointer Input 9(int) 43(i.val): 42(ptr) Variable Input
46(cpid): 45(ptr) Variable Input 44: TypePointer Input 7(fvec3)
48: TypePointer Output 20 48: 28(int) Constant 1
49(@entryPointOutput): 48(ptr) Variable Output 52: 28(int) Constant 2
56: TypePointer Output 14(hs_out_t) 57: TypePointer Input 9(int)
58: 9(int) Constant 2 58(cpid): 57(ptr) Variable Input
59: 9(int) Constant 4 60: TypePointer Output 41
60: 9(int) Constant 0 61(@entryPointOutput.val): 60(ptr) Variable Output
62: TypeBool 69: TypePointer Output 7(fvec3)
66: TypePointer Function 20 71: 9(int) Constant 2
74: 28(int) Constant 1 72: 9(int) Constant 4
76: 9(int) Constant 1 73: 9(int) Constant 0
82: 28(int) Constant 2 75: TypeBool
89: TypePointer Function 22(hs_pcf_t) 79: TypePointer Function 20
94: TypeArray 6(float) 59 88: 9(int) Constant 1
95: TypePointer Output 94 100: TypePointer Function 22(hs_pcf_t)
96(@patchConstantOutput.tfactor): 95(ptr) Variable Output 105: TypeArray 6(float) 72
97: TypePointer Function 6(float) 106: TypePointer Output 105
100: TypePointer Output 6(float) 107(@patchConstantOutput.tfactor): 106(ptr) Variable Output
108: TypeArray 6(float) 58 108: TypePointer Function 6(float)
109: TypePointer Output 108 111: TypePointer Output 6(float)
110(@patchConstantOutput.flInFactor): 109(ptr) Variable Output 119: TypeArray 6(float) 71
121: 6(float) Constant 1082130432 120: TypePointer Output 119
121(@patchConstantOutput.flInFactor): 120(ptr) Variable Output
132: 6(float) Constant 1082130432
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
40(i): 12(ptr) Variable Function 40(i): 12(ptr) Variable Function
44(cpid): 13(ptr) Variable Function 56(cpid): 13(ptr) Variable Function
51(param): 12(ptr) Variable Function 63(param): 12(ptr) Variable Function
53(param): 13(ptr) Variable Function 65(param): 13(ptr) Variable Function
67(pcf_out): 66(ptr) Variable Function 80(pcf_out): 79(ptr) Variable Function
68(i): 12(ptr) Variable Function 81(i): 12(ptr) Variable Function
69(param): 12(ptr) Variable Function 82(param): 12(ptr) Variable Function
71(param): 13(ptr) Variable Function 84(param): 13(ptr) Variable Function
75(i): 12(ptr) Variable Function 87(i): 12(ptr) Variable Function
77(param): 12(ptr) Variable Function 89(param): 12(ptr) Variable Function
79(param): 13(ptr) Variable Function 91(param): 13(ptr) Variable Function
83(i): 12(ptr) Variable Function 94(i): 12(ptr) Variable Function
84(param): 12(ptr) Variable Function 95(param): 12(ptr) Variable Function
86(param): 13(ptr) Variable Function 97(param): 13(ptr) Variable Function
90(@patchConstantResult): 89(ptr) Variable Function 101(@patchConstantResult): 100(ptr) Variable Function
43: 11 Load 42(i) 45: 44(ptr) AccessChain 43(i.val) 29
Store 40(i) 43 46: 7(fvec3) Load 45
47: 9(int) Load 46(cpid) 47: 35(ptr) AccessChain 40(i) 29 29
Store 44(cpid) 47 Store 47 46
50: 9(int) Load 46(cpid) 49: 44(ptr) AccessChain 43(i.val) 48
52: 11 Load 40(i) 50: 7(fvec3) Load 49
Store 51(param) 52 51: 35(ptr) AccessChain 40(i) 48 29
54: 9(int) Load 44(cpid) Store 51 50
Store 53(param) 54 53: 44(ptr) AccessChain 43(i.val) 52
55:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 51(param) 53(param) 54: 7(fvec3) Load 53
57: 56(ptr) AccessChain 49(@entryPointOutput) 50 55: 35(ptr) AccessChain 40(i) 52 29
Store 57 55 Store 55 54
ControlBarrier 58 59 60 59: 9(int) Load 58(cpid)
61: 9(int) Load 46(cpid) Store 56(cpid) 59
63: 62(bool) IEqual 61 29 62: 9(int) Load 58(cpid)
SelectionMerge 65 None 64: 11 Load 40(i)
BranchConditional 63 64 65 Store 63(param) 64
64: Label 66: 9(int) Load 56(cpid)
70: 11 Load 68(i) Store 65(param) 66
Store 69(param) 70 67:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 63(param) 65(param)
Store 71(param) 60 68: 7(fvec3) CompositeExtract 67 0
72:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 69(param) 71(param) 70: 69(ptr) AccessChain 61(@entryPointOutput.val) 62
73: 30(ptr) AccessChain 67(pcf_out) 29 Store 70 68
Store 73 72 ControlBarrier 71 72 73
78: 11 Load 75(i) 74: 9(int) Load 58(cpid)
Store 77(param) 78 76: 75(bool) IEqual 74 29
Store 79(param) 76 SelectionMerge 78 None
80:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 77(param) 79(param) BranchConditional 76 77 78
81: 30(ptr) AccessChain 67(pcf_out) 74 77: Label
Store 81 80 83: 11 Load 81(i)
85: 11 Load 83(i) Store 82(param) 83
Store 84(param) 85 Store 84(param) 73
Store 86(param) 58 85:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 82(param) 84(param)
87:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 84(param) 86(param) 86: 30(ptr) AccessChain 80(pcf_out) 29
88: 30(ptr) AccessChain 67(pcf_out) 82 Store 86 85
Store 88 87 90: 11 Load 87(i)
91: 20 Load 67(pcf_out) Store 89(param) 90
92: 11 Load 40(i) Store 91(param) 88
93:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 91 92 92:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 89(param) 91(param)
Store 90(@patchConstantResult) 93 93: 30(ptr) AccessChain 80(pcf_out) 48
98: 97(ptr) AccessChain 90(@patchConstantResult) 29 29 Store 93 92
99: 6(float) Load 98 96: 11 Load 94(i)
101: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 29 Store 95(param) 96
Store 101 99 Store 97(param) 71
102: 97(ptr) AccessChain 90(@patchConstantResult) 29 74 98:14(hs_out_t) FunctionCall 18(@main(struct-hs_in_t-vf31[3];u1;) 95(param) 97(param)
103: 6(float) Load 102 99: 30(ptr) AccessChain 80(pcf_out) 52
104: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 74 Store 99 98
Store 104 103 102: 20 Load 80(pcf_out)
105: 97(ptr) AccessChain 90(@patchConstantResult) 29 82 103: 11 Load 40(i)
106: 6(float) Load 105 104:22(hs_pcf_t) FunctionCall 26(PCF(struct-hs_out_t-vf31[3];struct-hs_in_t-vf31[3];) 102 103
107: 100(ptr) AccessChain 96(@patchConstantOutput.tfactor) 82 Store 101(@patchConstantResult) 104
Store 107 106 109: 108(ptr) AccessChain 101(@patchConstantResult) 29 29
111: 97(ptr) AccessChain 90(@patchConstantResult) 74 110: 6(float) Load 109
112: 6(float) Load 111 112: 111(ptr) AccessChain 107(@patchConstantOutput.tfactor) 29
113: 100(ptr) AccessChain 110(@patchConstantOutput.flInFactor) 29 Store 112 110
Store 113 112 113: 108(ptr) AccessChain 101(@patchConstantResult) 29 48
Branch 65 114: 6(float) Load 113
65: Label 115: 111(ptr) AccessChain 107(@patchConstantOutput.tfactor) 48
Store 115 114
116: 108(ptr) AccessChain 101(@patchConstantResult) 29 52
117: 6(float) Load 116
118: 111(ptr) AccessChain 107(@patchConstantOutput.tfactor) 52
Store 118 117
122: 108(ptr) AccessChain 101(@patchConstantResult) 48
123: 6(float) Load 122
124: 111(ptr) AccessChain 121(@patchConstantOutput.flInFactor) 29
Store 124 123
Branch 78
78: Label
Return Return
FunctionEnd FunctionEnd
18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15 18(@main(struct-hs_in_t-vf31[3];u1;):14(hs_out_t) Function None 15
@ -608,18 +697,18 @@ triangle order = cw
24(pcf_out): 20 FunctionParameter 24(pcf_out): 20 FunctionParameter
25(pcf_in): 11 FunctionParameter 25(pcf_in): 11 FunctionParameter
27: Label 27: Label
114(o): 89(ptr) Variable Function 125(o): 100(ptr) Variable Function
115: 6(float) CompositeExtract 24(pcf_out) 0 0 0 126: 6(float) CompositeExtract 24(pcf_out) 0 0 0
116: 97(ptr) AccessChain 114(o) 29 29 127: 108(ptr) AccessChain 125(o) 29 29
Store 116 115 Store 127 126
117: 6(float) CompositeExtract 24(pcf_out) 1 0 0 128: 6(float) CompositeExtract 24(pcf_out) 1 0 0
118: 97(ptr) AccessChain 114(o) 29 74 129: 108(ptr) AccessChain 125(o) 29 48
Store 118 117 Store 129 128
119: 6(float) CompositeExtract 24(pcf_out) 2 0 0 130: 6(float) CompositeExtract 24(pcf_out) 2 0 0
120: 97(ptr) AccessChain 114(o) 29 82 131: 108(ptr) AccessChain 125(o) 29 52
Store 120 119 Store 131 130
122: 97(ptr) AccessChain 114(o) 74 133: 108(ptr) AccessChain 125(o) 48
Store 122 121 Store 133 132
123:22(hs_pcf_t) Load 114(o) 134:22(hs_pcf_t) Load 125(o)
ReturnValue 123 ReturnValue 134
FunctionEnd FunctionEnd

View File

@ -25,15 +25,53 @@ triangle order = ccw
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'InvocationId' ( in uint InvocationID) 0:26 0 (const int)
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 Sequence
0:26 move second child to first child ( temp 3-component vector of float)
0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -47,8 +85,8 @@ triangle order = ccw
0:33 Function Definition: PCF( ( temp void) 0:33 Function Definition: PCF( ( temp void)
0:33 Function Parameters: 0:33 Function Parameters:
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID) 0:? 'InvocationId' ( in uint InvocationID)
@ -81,15 +119,53 @@ triangle order = ccw
0:26 Function Definition: main( ( temp void) 0:26 Function Definition: main( ( temp void)
0:26 Function Parameters: 0:26 Function Parameters:
0:? Sequence 0:? Sequence
0:26 move second child to first child ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Sequence
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 move second child to first child ( temp 3-component vector of float)
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 move second child to first child ( temp structure{ temp 3-component vector of float cpoint}) 0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:26 indirect index (layout( location=0) out structure{ temp 3-component vector of float cpoint}) 0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'InvocationId' ( in uint InvocationID) 0:26 0 (const int)
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint}) 0:26 Constant:
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint}) 0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:26 Constant:
0:26 0 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 1 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:26 Constant:
0:26 1 (const int)
0:26 move second child to first child ( temp 3-component vector of float)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 direct index ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 2 (const int)
0:26 Constant:
0:26 0 (const int)
0:26 direct index (layout( location=0) in 3-component vector of float)
0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:26 Constant:
0:26 2 (const int)
0:26 Sequence
0:26 move second child to first child ( temp 3-component vector of float)
0:26 indirect index (layout( location=0) out 3-component vector of float)
0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID)
0:26 cpoint: direct index for structure ( temp 3-component vector of float)
0:26 Function Call: @main(struct-VS_OUT-vf31[3]; ( temp structure{ temp 3-component vector of float cpoint})
0:? 'ip' ( temp 3-element array of structure{ temp 3-component vector of float cpoint})
0:26 Constant:
0:26 0 (const int)
0:? Barrier ( temp void) 0:? Barrier ( temp void)
0:? Test condition and select ( temp void) 0:? Test condition and select ( temp void)
0:? Condition 0:? Condition
@ -103,18 +179,18 @@ triangle order = ccw
0:33 Function Definition: PCF( ( temp void) 0:33 Function Definition: PCF( ( temp void)
0:33 Function Parameters: 0:33 Function Parameters:
0:? Linker Objects 0:? Linker Objects
0:? '@entryPointOutput' (layout( location=0) out 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? '@entryPointOutput.cpoint' (layout( location=0) out 3-element array of 3-component vector of float)
0:? 'ip' (layout( location=0) in 3-element array of structure{ temp 3-component vector of float cpoint}) 0:? 'ip.cpoint' (layout( location=0) in 3-element array of 3-component vector of float)
0:? 'InvocationId' ( in uint InvocationID) 0:? 'InvocationId' ( in uint InvocationID)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 55 // Id's are bound by 67
Capability Tessellation Capability Tessellation
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint TessellationControl 4 "main" 33 37 39 EntryPoint TessellationControl 4 "main" 34 48 50
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 SpacingFractionalEven ExecutionMode 4 SpacingFractionalEven
@ -130,13 +206,13 @@ triangle order = ccw
Name 18 "PCF(" Name 18 "PCF("
Name 21 "output" Name 21 "output"
Name 31 "ip" Name 31 "ip"
Name 33 "ip" Name 34 "ip.cpoint"
Name 37 "@entryPointOutput" Name 48 "@entryPointOutput.cpoint"
Name 39 "InvocationId" Name 50 "InvocationId"
Name 41 "param" Name 52 "param"
Decorate 33(ip) Location 0 Decorate 34(ip.cpoint) Location 0
Decorate 37(@entryPointOutput) Location 0 Decorate 48(@entryPointOutput.cpoint) Location 0
Decorate 39(InvocationId) BuiltIn InvocationId Decorate 50(InvocationId) BuiltIn InvocationId
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -152,39 +228,53 @@ triangle order = ccw
22: TypeInt 32 1 22: TypeInt 32 1
23: 22(int) Constant 0 23: 22(int) Constant 0
24: TypePointer Function 7(fvec3) 24: TypePointer Function 7(fvec3)
32: TypePointer Input 11 32: TypeArray 7(fvec3) 10
33(ip): 32(ptr) Variable Input 33: TypePointer Input 32
35: TypeArray 13(HS_OUT) 10 34(ip.cpoint): 33(ptr) Variable Input
36: TypePointer Output 35 35: TypePointer Input 7(fvec3)
37(@entryPointOutput): 36(ptr) Variable Output 39: 22(int) Constant 1
38: TypePointer Input 9(int) 43: 22(int) Constant 2
39(InvocationId): 38(ptr) Variable Input 47: TypePointer Output 32
44: TypePointer Output 13(HS_OUT) 48(@entryPointOutput.cpoint): 47(ptr) Variable Output
46: 9(int) Constant 2 49: TypePointer Input 9(int)
47: 9(int) Constant 4 50(InvocationId): 49(ptr) Variable Input
48: 9(int) Constant 0 56: TypePointer Output 7(fvec3)
50: TypeBool 58: 9(int) Constant 2
59: 9(int) Constant 4
60: 9(int) Constant 0
62: TypeBool
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
31(ip): 12(ptr) Variable Function 31(ip): 12(ptr) Variable Function
41(param): 12(ptr) Variable Function 52(param): 12(ptr) Variable Function
34: 11 Load 33(ip) 36: 35(ptr) AccessChain 34(ip.cpoint) 23
Store 31(ip) 34 37: 7(fvec3) Load 36
40: 9(int) Load 39(InvocationId) 38: 24(ptr) AccessChain 31(ip) 23 23
42: 11 Load 31(ip) Store 38 37
Store 41(param) 42 40: 35(ptr) AccessChain 34(ip.cpoint) 39
43: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 41(param) 41: 7(fvec3) Load 40
45: 44(ptr) AccessChain 37(@entryPointOutput) 40 42: 24(ptr) AccessChain 31(ip) 39 23
Store 45 43 Store 42 41
ControlBarrier 46 47 48 44: 35(ptr) AccessChain 34(ip.cpoint) 43
49: 9(int) Load 39(InvocationId) 45: 7(fvec3) Load 44
51: 50(bool) IEqual 49 23 46: 24(ptr) AccessChain 31(ip) 43 23
SelectionMerge 53 None Store 46 45
BranchConditional 51 52 53 51: 9(int) Load 50(InvocationId)
52: Label 53: 11 Load 31(ip)
54: 2 FunctionCall 18(PCF() Store 52(param) 53
Branch 53 54: 13(HS_OUT) FunctionCall 16(@main(struct-VS_OUT-vf31[3];) 52(param)
53: Label 55: 7(fvec3) CompositeExtract 54 0
57: 56(ptr) AccessChain 48(@entryPointOutput.cpoint) 51
Store 57 55
ControlBarrier 58 59 60
61: 9(int) Load 50(InvocationId)
63: 62(bool) IEqual 61 23
SelectionMerge 65 None
BranchConditional 63 64 65
64: Label
66: 2 FunctionCall 18(PCF()
Branch 65
65: Label
Return Return
FunctionEnd FunctionEnd
16(@main(struct-VS_OUT-vf31[3];): 13(HS_OUT) Function None 14 16(@main(struct-VS_OUT-vf31[3];): 13(HS_OUT) Function None 14

View File

@ -148,11 +148,8 @@ output primitive = triangle_strip
0:24 0 (const int) 0:24 0 (const int)
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index (layout( location=0) in 2-component vector of float)
0:24 direct index (layout( location=0) in structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
0:24 Constant:
0:24 0 (const int)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 0 (const int)
0:24 move second child to first child ( temp 4-component vector of float) 0:24 move second child to first child ( temp 4-component vector of float)
@ -175,13 +172,10 @@ output primitive = triangle_strip
0:24 1 (const int) 0:24 1 (const int)
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index (layout( location=0) in 2-component vector of float)
0:24 direct index (layout( location=0) in structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
0:24 Constant:
0:24 1 (const int)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 1 (const int)
0:24 move second child to first child ( temp 4-component vector of float) 0:24 move second child to first child ( temp 4-component vector of float)
0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
@ -202,19 +196,16 @@ output primitive = triangle_strip
0:24 2 (const int) 0:24 2 (const int)
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index (layout( location=0) in 2-component vector of float)
0:24 direct index (layout( location=0) in structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
0:24 Constant:
0:24 2 (const int)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 2 (const int)
0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void) 0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void)
0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
0:? Linker Objects 0:? Linker Objects
0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:? 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:? 'ts.pos' ( out 4-component vector of float Position) 0:? 'ts.pos' ( out 4-component vector of float Position)
0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float) 0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float) 0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
@ -374,11 +365,8 @@ output primitive = triangle_strip
0:24 0 (const int) 0:24 0 (const int)
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index (layout( location=0) in 2-component vector of float)
0:24 direct index (layout( location=0) in structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
0:24 Constant:
0:24 0 (const int)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 0 (const int)
0:24 move second child to first child ( temp 4-component vector of float) 0:24 move second child to first child ( temp 4-component vector of float)
@ -401,13 +389,10 @@ output primitive = triangle_strip
0:24 1 (const int) 0:24 1 (const int)
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index (layout( location=0) in 2-component vector of float)
0:24 direct index (layout( location=0) in structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
0:24 Constant:
0:24 1 (const int)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 1 (const int)
0:24 move second child to first child ( temp 4-component vector of float) 0:24 move second child to first child ( temp 4-component vector of float)
0:24 pos: direct index for structure ( temp 4-component vector of float) 0:24 pos: direct index for structure ( temp 4-component vector of float)
0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:24 direct index ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
@ -428,19 +413,16 @@ output primitive = triangle_strip
0:24 2 (const int) 0:24 2 (const int)
0:24 Constant: 0:24 Constant:
0:24 1 (const int) 0:24 1 (const int)
0:24 tc: direct index for structure ( temp 2-component vector of float) 0:24 direct index (layout( location=0) in 2-component vector of float)
0:24 direct index (layout( location=0) in structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:24 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc})
0:24 Constant:
0:24 2 (const int)
0:24 Constant: 0:24 Constant:
0:24 0 (const int) 0:24 2 (const int)
0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void) 0:24 Function Call: @main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111; ( temp void)
0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc}) 0:? 'tin' ( temp 3-element array of structure{ temp 4-component vector of float pos, temp 2-component vector of float tc})
0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io}) 0:? 'ts' ( temp structure{ temp structure{ temp 4-component vector of float pos, temp 2-component vector of float tc} psIn, temp structure{ temp 2-element array of float m0_array, temp int m1} contains_no_builtin_io})
0:? Linker Objects 0:? Linker Objects
0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position) 0:? 'tin.pos' ( in 3-element array of 4-component vector of float Position)
0:? 'tin' (layout( location=0) in 3-element array of structure{ temp 2-component vector of float tc}) 0:? 'tin.tc' (layout( location=0) in 3-element array of 2-component vector of float)
0:? 'ts.pos' ( out 4-component vector of float Position) 0:? 'ts.pos' ( out 4-component vector of float Position)
0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float) 0:? 'ts.psIn.tc' (layout( location=0) out 2-component vector of float)
0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float) 0:? 'ts.contains_no_builtin_io.m0_array[0]' (layout( location=1) out float)
@ -449,12 +431,12 @@ output primitive = triangle_strip
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 100 // Id's are bound by 99
Capability Geometry Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 48 52 56 59 63 69 77 EntryPoint Geometry 4 "main" 48 52 56 59 63 69 76
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1 ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputTriangleStrip
@ -481,19 +463,17 @@ output primitive = triangle_strip
Name 63 "ts.contains_no_builtin_io.m1" Name 63 "ts.contains_no_builtin_io.m1"
Name 66 "tin" Name 66 "tin"
Name 69 "tin.pos" Name 69 "tin.pos"
Name 74 "PS_IN" Name 76 "tin.tc"
MemberName 74(PS_IN) 0 "tc" Name 93 "ts"
Name 77 "tin" Name 94 "param"
Name 94 "ts" Name 96 "param"
Name 95 "param"
Name 97 "param"
Decorate 48(ts.pos) BuiltIn Position Decorate 48(ts.pos) BuiltIn Position
Decorate 52(ts.psIn.tc) Location 0 Decorate 52(ts.psIn.tc) Location 0
Decorate 56(ts.contains_no_builtin_io.m0_array[0]) Location 1 Decorate 56(ts.contains_no_builtin_io.m0_array[0]) Location 1
Decorate 59(ts.contains_no_builtin_io.m0_array[1]) Location 2 Decorate 59(ts.contains_no_builtin_io.m0_array[1]) Location 2
Decorate 63(ts.contains_no_builtin_io.m1) Location 3 Decorate 63(ts.contains_no_builtin_io.m1) Location 3
Decorate 69(tin.pos) BuiltIn Position Decorate 69(tin.pos) BuiltIn Position
Decorate 77(tin) Location 0 Decorate 76(tin.tc) Location 0
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -540,46 +520,45 @@ output primitive = triangle_strip
68: TypePointer Input 67 68: TypePointer Input 67
69(tin.pos): 68(ptr) Variable Input 69(tin.pos): 68(ptr) Variable Input
70: TypePointer Input 7(fvec4) 70: TypePointer Input 7(fvec4)
74(PS_IN): TypeStruct 8(fvec2) 74: TypeArray 8(fvec2) 11
75: TypeArray 74(PS_IN) 11 75: TypePointer Input 74
76: TypePointer Input 75 76(tin.tc): 75(ptr) Variable Input
77(tin): 76(ptr) Variable Input 77: TypePointer Input 8(fvec2)
78: TypePointer Input 8(fvec2)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
66(tin): 13(ptr) Variable Function 66(tin): 13(ptr) Variable Function
94(ts): 19(ptr) Variable Function 93(ts): 19(ptr) Variable Function
95(param): 13(ptr) Variable Function 94(param): 13(ptr) Variable Function
97(param): 19(ptr) Variable Function 96(param): 19(ptr) Variable Function
71: 70(ptr) AccessChain 69(tin.pos) 26 71: 70(ptr) AccessChain 69(tin.pos) 26
72: 7(fvec4) Load 71 72: 7(fvec4) Load 71
73: 32(ptr) AccessChain 66(tin) 26 26 73: 32(ptr) AccessChain 66(tin) 26 26
Store 73 72 Store 73 72
79: 78(ptr) AccessChain 77(tin) 26 26 78: 77(ptr) AccessChain 76(tin.tc) 26
80: 8(fvec2) Load 79 79: 8(fvec2) Load 78
81: 38(ptr) AccessChain 66(tin) 26 34 80: 38(ptr) AccessChain 66(tin) 26 34
Store 81 80 Store 80 79
82: 70(ptr) AccessChain 69(tin.pos) 34 81: 70(ptr) AccessChain 69(tin.pos) 34
83: 7(fvec4) Load 82 82: 7(fvec4) Load 81
84: 32(ptr) AccessChain 66(tin) 34 26 83: 32(ptr) AccessChain 66(tin) 34 26
Store 84 83 Store 83 82
85: 78(ptr) AccessChain 77(tin) 34 26 84: 77(ptr) AccessChain 76(tin.tc) 34
86: 8(fvec2) Load 85 85: 8(fvec2) Load 84
87: 38(ptr) AccessChain 66(tin) 34 34 86: 38(ptr) AccessChain 66(tin) 34 34
Store 87 86 Store 86 85
88: 70(ptr) AccessChain 69(tin.pos) 44 87: 70(ptr) AccessChain 69(tin.pos) 44
89: 7(fvec4) Load 88 88: 7(fvec4) Load 87
90: 32(ptr) AccessChain 66(tin) 44 26 89: 32(ptr) AccessChain 66(tin) 44 26
Store 90 89 Store 89 88
91: 78(ptr) AccessChain 77(tin) 44 26 90: 77(ptr) AccessChain 76(tin.tc) 44
92: 8(fvec2) Load 91 91: 8(fvec2) Load 90
93: 38(ptr) AccessChain 66(tin) 44 34 92: 38(ptr) AccessChain 66(tin) 44 34
Store 93 92 Store 92 91
96: 12 Load 66(tin) 95: 12 Load 66(tin)
Store 95(param) 96 Store 94(param) 95
98: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 95(param) 97(param) 97: 2 FunctionCall 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;) 94(param) 96(param)
99: 18(GS_OUT) Load 97(param) 98: 18(GS_OUT) Load 96(param)
Store 94(ts) 99 Store 93(ts) 98
Return Return
FunctionEnd FunctionEnd
23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 20 23(@main(struct-PS_IN-vf4-vf21[3];struct-GS_OUT-struct-PS_IN-vf4-vf21-struct-STRUCT_WITH_NO_BUILTIN_INTERSTAGE_IO-f1[2]-i111;): 2 Function None 20

View File

@ -70,14 +70,86 @@ output primitive = triangle_strip
0:16 Function Definition: main( ( temp void) 0:16 Function Definition: main( ( temp void)
0:16 Function Parameters: 0:16 Function Parameters:
0:? Sequence 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:16 Sequence
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:16 move second child to first child ( temp 4-component vector of float)
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 position: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 0 (const int)
0:16 direct index (layout( location=0) in 4-component vector of float)
0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 color: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 direct index (layout( location=1) in 4-component vector of float)
0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp 2-component vector of float)
0:16 uv: direct index for structure ( temp 2-component vector of float)
0:16 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:? '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:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 2 (const int)
0:16 direct index (layout( location=2) in 2-component vector of float)
0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 position: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 0 (const int)
0:16 direct index (layout( location=0) in 4-component vector of float)
0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 color: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 direct index (layout( location=1) in 4-component vector of float)
0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp 2-component vector of float)
0:16 uv: direct index for structure ( temp 2-component vector of float)
0:16 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:? '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:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 2 (const int)
0:16 direct index (layout( location=2) in 2-component vector of float)
0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float)
0:16 Constant:
0:16 1 (const int)
0:16 Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void) 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:? '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:? '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:? 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:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float)
0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float)
0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float)
0:? 'outStream.position' ( out 4-component vector of float Position) 0:? 'outStream.position' ( out 4-component vector of float Position)
0:? 'outStream.color' (layout( location=0) out 4-component vector of float) 0:? 'outStream.color' (layout( location=0) out 4-component vector of float)
0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
@ -157,26 +229,98 @@ output primitive = triangle_strip
0:16 Function Definition: main( ( temp void) 0:16 Function Definition: main( ( temp void)
0:16 Function Parameters: 0:16 Function Parameters:
0:? Sequence 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:16 Sequence
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:16 move second child to first child ( temp 4-component vector of float)
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 position: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 0 (const int)
0:16 direct index (layout( location=0) in 4-component vector of float)
0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 color: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 direct index (layout( location=1) in 4-component vector of float)
0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp 2-component vector of float)
0:16 uv: direct index for structure ( temp 2-component vector of float)
0:16 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:? '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:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 2 (const int)
0:16 direct index (layout( location=2) in 2-component vector of float)
0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 position: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 0 (const int)
0:16 direct index (layout( location=0) in 4-component vector of float)
0:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp 4-component vector of float)
0:16 color: direct index for structure ( temp 4-component vector of float)
0:16 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:? '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:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 1 (const int)
0:16 direct index (layout( location=1) in 4-component vector of float)
0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float)
0:16 Constant:
0:16 1 (const int)
0:16 move second child to first child ( temp 2-component vector of float)
0:16 uv: direct index for structure ( temp 2-component vector of float)
0:16 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:? '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:16 Constant:
0:16 1 (const int)
0:16 Constant:
0:16 2 (const int)
0:16 direct index (layout( location=2) in 2-component vector of float)
0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float)
0:16 Constant:
0:16 1 (const int)
0:16 Function Call: @main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21; ( temp void) 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:? '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:? '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:? 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:? 'vin.position' (layout( location=0) in 2-element array of 4-component vector of float)
0:? 'vin.color' (layout( location=1) in 2-element array of 4-component vector of float)
0:? 'vin.uv' (layout( location=2) in 2-element array of 2-component vector of float)
0:? 'outStream.position' ( out 4-component vector of float Position) 0:? 'outStream.position' ( out 4-component vector of float Position)
0:? 'outStream.color' (layout( location=0) out 4-component vector of float) 0:? 'outStream.color' (layout( location=0) out 4-component vector of float)
0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float)
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 58 // Id's are bound by 82
Capability Geometry Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450 MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 38 41 45 50 EntryPoint Geometry 4 "main" 38 41 45 51 56 62
ExecutionMode 4 InputLines ExecutionMode 4 InputLines
ExecutionMode 4 Invocations 1 ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip ExecutionMode 4 OutputTriangleStrip
@ -199,14 +343,18 @@ output primitive = triangle_strip
Name 41 "outStream.color" Name 41 "outStream.color"
Name 45 "outStream.uv" Name 45 "outStream.uv"
Name 48 "vin" Name 48 "vin"
Name 50 "vin" Name 51 "vin.position"
Name 52 "outStream" Name 56 "vin.color"
Name 53 "param" Name 62 "vin.uv"
Name 55 "param" Name 76 "outStream"
Name 77 "param"
Name 79 "param"
Decorate 38(outStream.position) BuiltIn Position Decorate 38(outStream.position) BuiltIn Position
Decorate 41(outStream.color) Location 0 Decorate 41(outStream.color) Location 0
Decorate 45(outStream.uv) Location 1 Decorate 45(outStream.uv) Location 1
Decorate 50(vin) Location 0 Decorate 51(vin.position) Location 0
Decorate 56(vin.color) Location 1
Decorate 62(vin.uv) Location 2
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeFloat 32 6: TypeFloat 32
@ -231,21 +379,50 @@ output primitive = triangle_strip
41(outStream.color): 37(ptr) Variable Output 41(outStream.color): 37(ptr) Variable Output
44: TypePointer Output 8(fvec2) 44: TypePointer Output 8(fvec2)
45(outStream.uv): 44(ptr) Variable Output 45(outStream.uv): 44(ptr) Variable Output
49: TypePointer Input 12 49: TypeArray 7(fvec4) 11
50(vin): 49(ptr) Variable Input 50: TypePointer Input 49
51(vin.position): 50(ptr) Variable Input
52: TypePointer Input 7(fvec4)
56(vin.color): 50(ptr) Variable Input
60: TypeArray 8(fvec2) 11
61: TypePointer Input 60
62(vin.uv): 61(ptr) Variable Input
63: TypePointer Input 8(fvec2)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
48(vin): 13(ptr) Variable Function 48(vin): 13(ptr) Variable Function
52(outStream): 15(ptr) Variable Function 76(outStream): 15(ptr) Variable Function
53(param): 13(ptr) Variable Function 77(param): 13(ptr) Variable Function
55(param): 15(ptr) Variable Function 79(param): 15(ptr) Variable Function
51: 12 Load 50(vin) 53: 52(ptr) AccessChain 51(vin.position) 33
Store 48(vin) 51 54: 7(fvec4) Load 53
54: 12 Load 48(vin) 55: 24(ptr) AccessChain 48(vin) 33 33
Store 53(param) 54 Store 55 54
56: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 53(param) 55(param) 57: 52(ptr) AccessChain 56(vin.color) 33
57: 14(PS_IN) Load 55(param) 58: 7(fvec4) Load 57
Store 52(outStream) 57 59: 24(ptr) AccessChain 48(vin) 33 23
Store 59 58
64: 63(ptr) AccessChain 62(vin.uv) 33
65: 8(fvec2) Load 64
66: 29(ptr) AccessChain 48(vin) 33 28
Store 66 65
67: 52(ptr) AccessChain 51(vin.position) 23
68: 7(fvec4) Load 67
69: 24(ptr) AccessChain 48(vin) 23 33
Store 69 68
70: 52(ptr) AccessChain 56(vin.color) 23
71: 7(fvec4) Load 70
72: 24(ptr) AccessChain 48(vin) 23 23
Store 72 71
73: 63(ptr) AccessChain 62(vin.uv) 23
74: 8(fvec2) Load 73
75: 29(ptr) AccessChain 48(vin) 23 28
Store 75 74
78: 12 Load 48(vin)
Store 77(param) 78
80: 2 FunctionCall 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;) 77(param) 79(param)
81: 14(PS_IN) Load 79(param)
Store 76(outStream) 81
Return Return
FunctionEnd FunctionEnd
19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;): 2 Function None 16 19(@main(struct-VertexData-vf4-vf4-vf21[2];struct-PS_IN-vf4-vf4-vf21;): 2 Function None 16

View File

@ -42,9 +42,34 @@ output primitive = triangle_strip
0:14 Function Definition: main( ( temp void) 0:14 Function Definition: main( ( temp void)
0:14 Function Parameters: 0:14 Function Parameters:
0:? Sequence 0:? Sequence
0:14 move second child to first child ( temp 3-element array of structure{}) 0:14 Sequence
0:? 'input' ( temp 3-element array of structure{}) 0:14 move second child to first child ( temp structure{})
0:? 'input' ( in 3-element array of structure{}) 0:14 direct index ( temp structure{})
0:? 'input' ( temp 3-element array of structure{})
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Constant:
0:14 0 (const int)
0:14 move second child to first child ( temp structure{})
0:14 direct index ( temp structure{})
0:? 'input' ( temp 3-element array of structure{})
0:14 Constant:
0:14 1 (const int)
0:14 direct index ( in structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Constant:
0:14 1 (const int)
0:14 move second child to first child ( temp structure{})
0:14 direct index ( temp structure{})
0:? 'input' ( temp 3-element array of structure{})
0:14 Constant:
0:14 2 (const int)
0:14 direct index ( in structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Constant:
0:14 2 (const int)
0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void) 0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
0:? 'input' ( temp 3-element array of structure{}) 0:? 'input' ( temp 3-element array of structure{})
0:? 'TriStream' ( temp structure{}) 0:? 'TriStream' ( temp structure{})
@ -97,9 +122,34 @@ output primitive = triangle_strip
0:14 Function Definition: main( ( temp void) 0:14 Function Definition: main( ( temp void)
0:14 Function Parameters: 0:14 Function Parameters:
0:? Sequence 0:? Sequence
0:14 move second child to first child ( temp 3-element array of structure{}) 0:14 Sequence
0:? 'input' ( temp 3-element array of structure{}) 0:14 move second child to first child ( temp structure{})
0:? 'input' ( in 3-element array of structure{}) 0:14 direct index ( temp structure{})
0:? 'input' ( temp 3-element array of structure{})
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( in structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Constant:
0:14 0 (const int)
0:14 move second child to first child ( temp structure{})
0:14 direct index ( temp structure{})
0:? 'input' ( temp 3-element array of structure{})
0:14 Constant:
0:14 1 (const int)
0:14 direct index ( in structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Constant:
0:14 1 (const int)
0:14 move second child to first child ( temp structure{})
0:14 direct index ( temp structure{})
0:? 'input' ( temp 3-element array of structure{})
0:14 Constant:
0:14 2 (const int)
0:14 direct index ( in structure{})
0:? 'input' ( in 3-element array of structure{})
0:14 Constant:
0:14 2 (const int)
0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void) 0:14 Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
0:? 'input' ( temp 3-element array of structure{}) 0:? 'input' ( temp 3-element array of structure{})
0:? 'TriStream' ( temp structure{}) 0:? 'TriStream' ( temp structure{})
@ -108,7 +158,7 @@ output primitive = triangle_strip
Validation failed Validation failed
// Module Version 10000 // Module Version 10000
// Generated by (magic number): 80008 // Generated by (magic number): 80008
// Id's are bound by 57 // Id's are bound by 66
Capability Geometry Capability Geometry
1: ExtInstImport "GLSL.std.450" 1: ExtInstImport "GLSL.std.450"
@ -136,9 +186,9 @@ Validation failed
Name 44 "param" Name 44 "param"
Name 47 "input" Name 47 "input"
Name 49 "input" Name 49 "input"
Name 51 "TriStream" Name 60 "TriStream"
Name 52 "param" Name 61 "param"
Name 54 "param" Name 63 "param"
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6(GSPS_INPUT): TypeStruct 6(GSPS_INPUT): TypeStruct
@ -157,19 +207,30 @@ Validation failed
40: 25(int) Constant 2 40: 25(int) Constant 2
48: TypePointer Input 15 48: TypePointer Input 15
49(input): 48(ptr) Variable Input 49(input): 48(ptr) Variable Input
50: TypePointer Input 6(GSPS_INPUT)
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
47(input): 16(ptr) Variable Function 47(input): 16(ptr) Variable Function
51(TriStream): 7(ptr) Variable Function 60(TriStream): 7(ptr) Variable Function
52(param): 16(ptr) Variable Function 61(param): 16(ptr) Variable Function
54(param): 7(ptr) Variable Function 63(param): 7(ptr) Variable Function
50: 15 Load 49(input) 51: 50(ptr) AccessChain 49(input) 26
Store 47(input) 50 52:6(GSPS_INPUT) Load 51
53: 15 Load 47(input) 53: 7(ptr) AccessChain 47(input) 26
Store 52(param) 53 Store 53 52
55: 2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 52(param) 54(param) 54: 50(ptr) AccessChain 49(input) 33
56:6(GSPS_INPUT) Load 54(param) 55:6(GSPS_INPUT) Load 54
Store 51(TriStream) 56 56: 7(ptr) AccessChain 47(input) 33
Store 56 55
57: 50(ptr) AccessChain 49(input) 40
58:6(GSPS_INPUT) Load 57
59: 7(ptr) AccessChain 47(input) 40
Store 59 58
62: 15 Load 47(input)
Store 61(param) 62
64: 2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 61(param) 63(param)
65:6(GSPS_INPUT) Load 63(param)
Store 60(TriStream) 65
Return Return
FunctionEnd FunctionEnd
11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;): 2 Function None 8 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;): 2 Function None 8

View File

@ -1169,7 +1169,7 @@ bool HlslParseContext::shouldFlatten(const TType& type, TStorageQualifier qualif
} }
// Top level variable flattening: construct data // Top level variable flattening: construct data
void HlslParseContext::flatten(const TVariable& variable, bool linkage) void HlslParseContext::flatten(const TVariable& variable, bool linkage, bool arrayed)
{ {
const TType& type = variable.getType(); const TType& type = variable.getType();
@ -1181,8 +1181,15 @@ void HlslParseContext::flatten(const TVariable& variable, bool linkage)
TFlattenData(type.getQualifier().layoutBinding, TFlattenData(type.getQualifier().layoutBinding,
type.getQualifier().layoutLocation))); type.getQualifier().layoutLocation)));
// the item is a map pair, so first->second is the TFlattenData itself. // if flattening arrayed io struct, array each member of dereferenced type
flatten(variable, type, entry.first->second, variable.getName(), linkage, type.getQualifier(), nullptr); if (arrayed) {
const TType dereferencedType(type, 0);
flatten(variable, dereferencedType, entry.first->second, variable.getName(), linkage,
type.getQualifier(), type.getArraySizes());
} else {
flatten(variable, type, entry.first->second, variable.getName(), linkage,
type.getQualifier(), nullptr);
}
} }
// Recursively flatten the given variable at the provided type, building the flattenData as we go. // Recursively flatten the given variable at the provided type, building the flattenData as we go.
@ -1256,6 +1263,10 @@ int HlslParseContext::addFlattenedMember(const TVariable& variable, const TType&
} }
} }
// Only propagate arraysizes here for arrayed io
if (variable.getType().getQualifier().isArrayedIo(language) && builtInArraySizes != nullptr)
memberVariable->getWritableType().copyArraySizes(*builtInArraySizes);
flattenData.offsets.push_back(static_cast<int>(flattenData.members.size())); flattenData.offsets.push_back(static_cast<int>(flattenData.members.size()));
flattenData.members.push_back(memberVariable); flattenData.members.push_back(memberVariable);
@ -2068,11 +2079,8 @@ TIntermNode* HlslParseContext::transformEntryPoint(const TSourceLoc& loc, TFunct
// Further this return/in/out transform by flattening, splitting, and assigning locations // Further this return/in/out transform by flattening, splitting, and assigning locations
const auto makeVariableInOut = [&](TVariable& variable) { const auto makeVariableInOut = [&](TVariable& variable) {
if (variable.getType().isStruct()) { if (variable.getType().isStruct()) {
if (variable.getType().getQualifier().isArrayedIo(language)) { bool arrayed = variable.getType().getQualifier().isArrayedIo(language);
if (variable.getType().containsBuiltIn()) flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */, arrayed);
split(variable);
} else if (shouldFlatten(variable.getType(), EvqVaryingIn /* not assigned yet, but close enough */, true))
flatten(variable, false /* don't track linkage here, it will be tracked in assignToInterface() */);
} }
// TODO: flatten arrays too // TODO: flatten arrays too
// TODO: flatten everything in I/O // TODO: flatten everything in I/O
@ -2733,17 +2741,33 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
wasSplit(binaryNode->getLeft()); wasSplit(binaryNode->getLeft());
}; };
// Return symbol if node is symbol or index ref
const auto getSymbol = [](const TIntermTyped* node) -> const TIntermSymbol* {
const TIntermSymbol* symbolNode = node->getAsSymbolNode();
if (symbolNode != nullptr)
return symbolNode;
const TIntermBinary* binaryNode = node->getAsBinaryNode();
if (binaryNode != nullptr && (binaryNode->getOp() == EOpIndexDirect || binaryNode->getOp() == EOpIndexIndirect))
return binaryNode->getLeft()->getAsSymbolNode();
return nullptr;
};
// Return true if this stage assigns clip position with potentially inverted Y // Return true if this stage assigns clip position with potentially inverted Y
const auto assignsClipPos = [this](const TIntermTyped* node) -> bool { const auto assignsClipPos = [this](const TIntermTyped* node) -> bool {
return node->getType().getQualifier().builtIn == EbvPosition && return node->getType().getQualifier().builtIn == EbvPosition &&
(language == EShLangVertex || language == EShLangGeometry || language == EShLangTessEvaluation); (language == EShLangVertex || language == EShLangGeometry || language == EShLangTessEvaluation);
}; };
const TIntermSymbol* leftSymbol = getSymbol(left);
const TIntermSymbol* rightSymbol = getSymbol(right);
const bool isSplitLeft = wasSplit(left) || indexesSplit(left); const bool isSplitLeft = wasSplit(left) || indexesSplit(left);
const bool isSplitRight = wasSplit(right) || indexesSplit(right); const bool isSplitRight = wasSplit(right) || indexesSplit(right);
const bool isFlattenLeft = wasFlattened(left); const bool isFlattenLeft = wasFlattened(leftSymbol);
const bool isFlattenRight = wasFlattened(right); const bool isFlattenRight = wasFlattened(rightSymbol);
// OK to do a single assign if neither side is split or flattened. Otherwise, // OK to do a single assign if neither side is split or flattened. Otherwise,
// fall through to a member-wise copy. // fall through to a member-wise copy.
@ -2791,10 +2815,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
memberCount = left->getType().getCumulativeArraySize(); memberCount = left->getType().getCumulativeArraySize();
if (isFlattenLeft) if (isFlattenLeft)
leftVariables = &flattenMap.find(left->getAsSymbolNode()->getId())->second.members; leftVariables = &flattenMap.find(leftSymbol->getId())->second.members;
if (isFlattenRight) { if (isFlattenRight) {
rightVariables = &flattenMap.find(right->getAsSymbolNode()->getId())->second.members; rightVariables = &flattenMap.find(rightSymbol->getId())->second.members;
} else { } else {
// The RHS is not flattened. There are several cases: // The RHS is not flattened. There are several cases:
// 1. 1 item to copy: Use the RHS directly. // 1. 1 item to copy: Use the RHS directly.
@ -2828,8 +2852,10 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
TStorageQualifier leftStorage = left->getType().getQualifier().storage; TStorageQualifier leftStorage = left->getType().getQualifier().storage;
TStorageQualifier rightStorage = right->getType().getQualifier().storage; TStorageQualifier rightStorage = right->getType().getQualifier().storage;
int leftOffset = findSubtreeOffset(*left); int leftOffsetStart = findSubtreeOffset(*left);
int rightOffset = findSubtreeOffset(*right); int rightOffsetStart = findSubtreeOffset(*right);
int leftOffset = leftOffsetStart;
int rightOffset = rightOffsetStart;
const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember, const auto getMember = [&](bool isLeft, const TType& type, int member, TIntermTyped* splitNode, int splitMember,
bool flattened) bool flattened)
@ -2869,10 +2895,35 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
} }
} }
} else if (flattened && !shouldFlatten(derefType, isLeft ? leftStorage : rightStorage, false)) { } else if (flattened && !shouldFlatten(derefType, isLeft ? leftStorage : rightStorage, false)) {
if (isLeft) if (isLeft) {
// offset will cycle through variables for arrayed io
if (leftOffset >= static_cast<int>(leftVariables->size()))
leftOffset = leftOffsetStart;
subTree = intermediate.addSymbol(*(*leftVariables)[leftOffset++]); subTree = intermediate.addSymbol(*(*leftVariables)[leftOffset++]);
else } else {
// offset will cycle through variables for arrayed io
if (rightOffset >= static_cast<int>(rightVariables->size()))
rightOffset = rightOffsetStart;
subTree = intermediate.addSymbol(*(*rightVariables)[rightOffset++]); subTree = intermediate.addSymbol(*(*rightVariables)[rightOffset++]);
}
// arrayed io
if (subTree->getType().isArray()) {
if (!arrayElement.empty()) {
const TType derefType(subTree->getType(), arrayElement.front());
subTree = intermediate.addIndex(EOpIndexDirect, subTree,
intermediate.addConstantUnion(arrayElement.front(), loc), loc);
subTree->setType(derefType);
} else {
// There's an index operation we should transfer to the output builtin.
assert(splitNode->getAsOperator() != nullptr &&
splitNode->getAsOperator()->getOp() == EOpIndexIndirect);
const TType splitDerefType(subTree->getType(), 0);
subTree = intermediate.addIndex(splitNode->getAsOperator()->getOp(), subTree,
splitNode->getAsBinaryNode()->getRight(), loc);
subTree->setType(splitDerefType);
}
}
} else { } else {
// Index operator if it's an aggregate, else EOpNull // Index operator if it's an aggregate, else EOpNull
const TOperator accessOp = type.isArray() ? EOpIndexDirect const TOperator accessOp = type.isArray() ? EOpIndexDirect
@ -9911,8 +9962,8 @@ void HlslParseContext::addPatchConstantInvocation()
TVariable* pcfOutput = makeInternalVariable("@patchConstantOutput", outType); TVariable* pcfOutput = makeInternalVariable("@patchConstantOutput", outType);
pcfOutput->getWritableType().getQualifier().storage = EvqVaryingOut; pcfOutput->getWritableType().getQualifier().storage = EvqVaryingOut;
if (pcfOutput->getType().containsBuiltIn()) if (pcfOutput->getType().isStruct())
split(*pcfOutput); flatten(*pcfOutput, false);
assignToInterface(*pcfOutput); assignToInterface(*pcfOutput);

View File

@ -276,7 +276,7 @@ protected:
void fixBuiltInIoType(TType&); void fixBuiltInIoType(TType&);
void flatten(const TVariable& variable, bool linkage); void flatten(const TVariable& variable, bool linkage, bool arrayed = false);
int flatten(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, int flatten(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage,
const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes);
int flattenStruct(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage, int flattenStruct(const TVariable& variable, const TType&, TFlattenData&, TString name, bool linkage,