HLSL: add geometry stage support for clip/cull distance

Changes:

(1) Allow clip/cull builtins as both input and output in the same shader stage.  Previously,
not enough data was tracked to handle this.

(2) Handle the extra array dimension in GS inputs.  The synthesized external variable can
now be created with the extra array dimension if needed, and the form conversion code is
able to handle it as well.

For example, both of these GS inputs would result in the same synthesized external type:

    triangle in float4 clip[3] : SV_ClipDistance

    triangle in float2 clip[3][2] : SV_ClipDistance

In the second case, the inner array dimension packs with the 2-vector of floats into an array[4],
which there is an array[3] of due to the triangle geometry.
This commit is contained in:
LoopDawg 2017-08-28 14:02:19 -06:00
parent ea0c1643ab
commit 5e5b12e931
13 changed files with 3448 additions and 204 deletions

View File

@ -1,80 +1,276 @@
hlsl.clipdistance-1.geom
ERROR: 0:13: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 0:13: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 0:20: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 0:20: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 4 compilation errors. No code generated.
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
ERROR: node is still EOpNull!
0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void)
0:13 Function Parameters:
0:13 'pos' ( in 3-element array of 4-component vector of float)
0:13 'VertexID' ( in 3-element array of uint)
0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:13 'clip' ( in 3-element array of float)
0:13 'cull' ( in 3-element array of float)
0:? Sequence
0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
0:11 Function Parameters:
0:11 'pos' ( in 3-element array of 4-component vector of float)
0:11 'VertexID' ( in 3-element array of uint)
0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:11 'clip' ( in 3-element array of 4-component vector of float)
0:? Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 pos: direct index for structure ( temp 4-component vector of float)
0:16 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:16 Constant:
0:16 0 (const int)
0:16 direct index ( temp 4-component vector of float)
0:16 'pos' ( in 3-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:17 move second child to first child ( temp float)
0:17 clip: direct index for structure ( temp float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:17 Constant:
0:17 1 (const int)
0:17 direct index ( temp float)
0:17 'clip' ( in 3-element array of float)
0:17 Constant:
0:17 0 (const int)
0:18 move second child to first child ( temp float)
0:18 cull: direct index for structure ( temp float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:18 Constant:
0:18 2 (const int)
0:18 direct index ( temp float)
0:18 'cull' ( in 3-element array of float)
0:18 Constant:
0:18 0 (const int)
0:20 Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
0:14 move second child to first child ( temp 4-component vector of float)
0:14 pos: direct index for structure ( temp 4-component vector of float)
0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( temp 4-component vector of float)
0:14 'pos' ( in 3-element array of 4-component vector of float)
0:14 Constant:
0:14 0 (const int)
0:15 move second child to first child ( temp 2-component vector of float)
0:15 clip: direct index for structure ( temp 2-component vector of float)
0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:15 Constant:
0:15 1 (const int)
0:15 vector swizzle ( temp 2-component vector of float)
0:15 direct index ( temp 4-component vector of float)
0:15 'clip' ( in 3-element array of 4-component vector of float)
0:15 Constant:
0:15 0 (const int)
0:15 Sequence
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 1 (const int)
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:20 pos: direct index for structure ( temp 4-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:20 Constant:
0:20 0 (const int)
0:20 EmitVertex ( temp void)
0:13 Function Definition: main( ( temp void)
0:13 Function Parameters:
0:17 pos: direct index for structure ( temp 4-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:17 Constant:
0:17 0 (const int)
0:? Sequence
0:17 move second child to first child ( temp float)
0:17 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
0:17 Constant:
0:17 0 (const int)
0:17 direct index ( temp float)
0:17 clip: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 0 (const int)
0:17 move second child to first child ( temp float)
0:17 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
0:17 Constant:
0:17 1 (const int)
0:17 direct index ( temp float)
0:17 clip: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 1 (const int)
0:17 EmitVertex ( temp void)
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
0:? Sequence
0:13 move second child to first child ( temp 3-element array of 4-component vector of float)
0:11 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:13 move second child to first child ( temp 3-element array of uint)
0:11 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:? 'clip' ( temp 3-element array of float)
0:? 'cull' ( temp 3-element array of float)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:? Linker Objects
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
Linked geometry stage:
@ -85,69 +281,457 @@ invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
ERROR: node is still EOpNull!
0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void)
0:13 Function Parameters:
0:13 'pos' ( in 3-element array of 4-component vector of float)
0:13 'VertexID' ( in 3-element array of uint)
0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:13 'clip' ( in 3-element array of float)
0:13 'cull' ( in 3-element array of float)
0:? Sequence
0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
0:11 Function Parameters:
0:11 'pos' ( in 3-element array of 4-component vector of float)
0:11 'VertexID' ( in 3-element array of uint)
0:11 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:11 'clip' ( in 3-element array of 4-component vector of float)
0:? Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 pos: direct index for structure ( temp 4-component vector of float)
0:16 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:16 Constant:
0:16 0 (const int)
0:16 direct index ( temp 4-component vector of float)
0:16 'pos' ( in 3-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:17 move second child to first child ( temp float)
0:17 clip: direct index for structure ( temp float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:17 Constant:
0:17 1 (const int)
0:17 direct index ( temp float)
0:17 'clip' ( in 3-element array of float)
0:17 Constant:
0:17 0 (const int)
0:18 move second child to first child ( temp float)
0:18 cull: direct index for structure ( temp float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:18 Constant:
0:18 2 (const int)
0:18 direct index ( temp float)
0:18 'cull' ( in 3-element array of float)
0:18 Constant:
0:18 0 (const int)
0:20 Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
0:14 move second child to first child ( temp 4-component vector of float)
0:14 pos: direct index for structure ( temp 4-component vector of float)
0:14 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:14 Constant:
0:14 0 (const int)
0:14 direct index ( temp 4-component vector of float)
0:14 'pos' ( in 3-element array of 4-component vector of float)
0:14 Constant:
0:14 0 (const int)
0:15 move second child to first child ( temp 2-component vector of float)
0:15 clip: direct index for structure ( temp 2-component vector of float)
0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:15 Constant:
0:15 1 (const int)
0:15 vector swizzle ( temp 2-component vector of float)
0:15 direct index ( temp 4-component vector of float)
0:15 'clip' ( in 3-element array of 4-component vector of float)
0:15 Constant:
0:15 0 (const int)
0:15 Sequence
0:15 Constant:
0:15 0 (const int)
0:15 Constant:
0:15 1 (const int)
0:17 Sequence
0:17 Sequence
0:17 move second child to first child ( temp 4-component vector of float)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:20 pos: direct index for structure ( temp 4-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:20 Constant:
0:20 0 (const int)
0:20 EmitVertex ( temp void)
0:13 Function Definition: main( ( temp void)
0:13 Function Parameters:
0:17 pos: direct index for structure ( temp 4-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:17 Constant:
0:17 0 (const int)
0:? Sequence
0:17 move second child to first child ( temp float)
0:17 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
0:17 Constant:
0:17 0 (const int)
0:17 direct index ( temp float)
0:17 clip: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 0 (const int)
0:17 move second child to first child ( temp float)
0:17 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
0:17 Constant:
0:17 1 (const int)
0:17 direct index ( temp float)
0:17 clip: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:17 Constant:
0:17 1 (const int)
0:17 Constant:
0:17 1 (const int)
0:17 EmitVertex ( temp void)
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
0:? Sequence
0:13 move second child to first child ( temp 3-element array of 4-component vector of float)
0:11 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:13 move second child to first child ( temp 3-element array of uint)
0:11 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-f1-f11;f1[3];f1[3]; ( temp void)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp float clip, temp float cull})
0:? 'clip' ( temp 3-element array of float)
0:? 'cull' ( temp 3-element array of float)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip})
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:? Linker Objects
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance)
SPIR-V is not generated for failed compile or link
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 118
Capability Geometry
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 38 44 57 61 68
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 3
Source HLSL 500
Name 4 "main"
Name 15 "S"
MemberName 15(S) 0 "pos"
MemberName 15(S) 1 "clip"
Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];"
Name 18 "pos"
Name 19 "VertexID"
Name 20 "OutputStream"
Name 21 "clip"
Name 24 "s"
Name 38 "OutputStream.pos"
Name 44 "OutputStream.clip"
Name 55 "pos"
Name 57 "pos"
Name 59 "VertexID"
Name 61 "VertexID"
Name 63 "clip"
Name 68 "clip"
Name 108 "OutputStream"
Name 109 "param"
Name 111 "param"
Name 113 "param"
Name 114 "param"
Decorate 38(OutputStream.pos) BuiltIn Position
Decorate 44(OutputStream.clip) BuiltIn ClipDistance
Decorate 57(pos) BuiltIn Position
Decorate 61(VertexID) Location 0
Decorate 68(clip) BuiltIn ClipDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 3
10: TypeArray 7(fvec4) 9
11: TypePointer Function 10
12: TypeArray 8(int) 9
13: TypePointer Function 12
14: TypeVector 6(float) 2
15(S): TypeStruct 7(fvec4) 14(fvec2)
16: TypePointer Function 15(S)
17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr)
25: TypeInt 32 1
26: 25(int) Constant 0
27: TypePointer Function 7(fvec4)
31: 25(int) Constant 1
35: TypePointer Function 14(fvec2)
37: TypePointer Output 7(fvec4)
38(OutputStream.pos): 37(ptr) Variable Output
41: 8(int) Constant 2
42: TypeArray 6(float) 41
43: TypePointer Output 42
44(OutputStream.clip): 43(ptr) Variable Output
45: 8(int) Constant 0
46: TypePointer Function 6(float)
49: TypePointer Output 6(float)
51: 8(int) Constant 1
56: TypePointer Input 10
57(pos): 56(ptr) Variable Input
60: TypePointer Input 12
61(VertexID): 60(ptr) Variable Input
64: 8(int) Constant 4
65: TypeArray 6(float) 64
66: TypeArray 65 9
67: TypePointer Input 66
68(clip): 67(ptr) Variable Input
69: TypePointer Input 6(float)
76: 25(int) Constant 2
80: 25(int) Constant 3
4(main): 2 Function None 3
5: Label
55(pos): 11(ptr) Variable Function
59(VertexID): 13(ptr) Variable Function
63(clip): 11(ptr) Variable Function
108(OutputStream): 16(ptr) Variable Function
109(param): 11(ptr) Variable Function
111(param): 13(ptr) Variable Function
113(param): 16(ptr) Variable Function
114(param): 11(ptr) Variable Function
58: 10 Load 57(pos)
Store 55(pos) 58
62: 12 Load 61(VertexID)
Store 59(VertexID) 62
70: 69(ptr) AccessChain 68(clip) 26 26
71: 6(float) Load 70
72: 46(ptr) AccessChain 63(clip) 26 45
Store 72 71
73: 69(ptr) AccessChain 68(clip) 26 31
74: 6(float) Load 73
75: 46(ptr) AccessChain 63(clip) 26 51
Store 75 74
77: 69(ptr) AccessChain 68(clip) 26 76
78: 6(float) Load 77
79: 46(ptr) AccessChain 63(clip) 26 41
Store 79 78
81: 69(ptr) AccessChain 68(clip) 26 80
82: 6(float) Load 81
83: 46(ptr) AccessChain 63(clip) 26 9
Store 83 82
84: 69(ptr) AccessChain 68(clip) 31 26
85: 6(float) Load 84
86: 46(ptr) AccessChain 63(clip) 31 45
Store 86 85
87: 69(ptr) AccessChain 68(clip) 31 31
88: 6(float) Load 87
89: 46(ptr) AccessChain 63(clip) 31 51
Store 89 88
90: 69(ptr) AccessChain 68(clip) 31 76
91: 6(float) Load 90
92: 46(ptr) AccessChain 63(clip) 31 41
Store 92 91
93: 69(ptr) AccessChain 68(clip) 31 80
94: 6(float) Load 93
95: 46(ptr) AccessChain 63(clip) 31 9
Store 95 94
96: 69(ptr) AccessChain 68(clip) 76 26
97: 6(float) Load 96
98: 46(ptr) AccessChain 63(clip) 76 45
Store 98 97
99: 69(ptr) AccessChain 68(clip) 76 31
100: 6(float) Load 99
101: 46(ptr) AccessChain 63(clip) 76 51
Store 101 100
102: 69(ptr) AccessChain 68(clip) 76 76
103: 6(float) Load 102
104: 46(ptr) AccessChain 63(clip) 76 41
Store 104 103
105: 69(ptr) AccessChain 68(clip) 76 80
106: 6(float) Load 105
107: 46(ptr) AccessChain 63(clip) 76 9
Store 107 106
110: 10 Load 55(pos)
Store 109(param) 110
112: 12 Load 59(VertexID)
Store 111(param) 112
115: 10 Load 63(clip)
Store 114(param) 115
116: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];) 109(param) 111(param) 113(param) 114(param)
117: 15(S) Load 113(param)
Store 108(OutputStream) 117
Return
FunctionEnd
22(@main(vf4[3];u1[3];struct-S-vf4-vf21;vf4[3];): 2 Function None 17
18(pos): 11(ptr) FunctionParameter
19(VertexID): 13(ptr) FunctionParameter
20(OutputStream): 16(ptr) FunctionParameter
21(clip): 11(ptr) FunctionParameter
23: Label
24(s): 16(ptr) Variable Function
28: 27(ptr) AccessChain 18(pos) 26
29: 7(fvec4) Load 28
30: 27(ptr) AccessChain 24(s) 26
Store 30 29
32: 27(ptr) AccessChain 21(clip) 26
33: 7(fvec4) Load 32
34: 14(fvec2) VectorShuffle 33 33 0 1
36: 35(ptr) AccessChain 24(s) 31
Store 36 34
39: 27(ptr) AccessChain 24(s) 26
40: 7(fvec4) Load 39
Store 38(OutputStream.pos) 40
47: 46(ptr) AccessChain 24(s) 31 45
48: 6(float) Load 47
50: 49(ptr) AccessChain 44(OutputStream.clip) 26
Store 50 48
52: 46(ptr) AccessChain 24(s) 31 51
53: 6(float) Load 52
54: 49(ptr) AccessChain 44(OutputStream.clip) 31
Store 54 53
EmitVertex
Return
FunctionEnd

View File

@ -1,15 +1,10 @@
hlsl.clipdistance-2.geom
ERROR: 0:11: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 0:18: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 2 compilation errors. No code generated.
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
ERROR: node is still EOpNull!
0:? Sequence
0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
0:11 Function Parameters:
0:11 'pos' ( in 3-element array of 4-component vector of float)
@ -64,6 +59,67 @@ ERROR: node is still EOpNull!
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 0 (const int)
0:? Sequence
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 0 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 1 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 2 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 3 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 EmitVertex ( temp void)
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
@ -74,6 +130,223 @@ ERROR: node is still EOpNull!
0:11 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
@ -83,6 +356,8 @@ ERROR: node is still EOpNull!
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
Linked geometry stage:
@ -93,7 +368,7 @@ invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
ERROR: node is still EOpNull!
0:? Sequence
0:11 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
0:11 Function Parameters:
0:11 'pos' ( in 3-element array of 4-component vector of float)
@ -148,6 +423,67 @@ ERROR: node is still EOpNull!
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 0 (const int)
0:? Sequence
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 0 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 1 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 2 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 0 (const int)
0:18 move second child to first child ( temp float)
0:18 direct index ( out float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
0:18 Constant:
0:18 3 (const int)
0:18 direct index ( temp float)
0:18 direct index ( temp 2-component vector of float)
0:18 clip: direct index for structure ( temp 2-element array of 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-element array of 2-component vector of float clip})
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 Constant:
0:18 1 (const int)
0:18 EmitVertex ( temp void)
0:11 Function Definition: main( ( temp void)
0:11 Function Parameters:
@ -158,6 +494,223 @@ ERROR: node is still EOpNull!
0:11 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? Sequence
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 0 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 2 (const int)
0:11 move second child to first child ( temp float)
0:11 direct index ( temp float)
0:11 direct index ( temp 2-component vector of float)
0:11 direct index ( temp 2-element array of 2-component vector of float)
0:? 'clip' ( temp 3-element array of 2-element array of 2-component vector of float)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 Constant:
0:11 1 (const int)
0:11 direct index ( in float ClipDistance)
0:11 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:11 Constant:
0:11 2 (const int)
0:11 Constant:
0:11 3 (const int)
0:11 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
@ -167,5 +720,205 @@ ERROR: node is still EOpNull!
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance)
SPIR-V is not generated for failed compile or link
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 128
Capability Geometry
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 44 50 71 75 80
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 3
Source HLSL 500
Name 4 "main"
Name 17 "S"
MemberName 17(S) 0 "pos"
MemberName 17(S) 1 "clip"
Name 26 "@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];"
Name 22 "pos"
Name 23 "VertexID"
Name 24 "OutputStream"
Name 25 "clip"
Name 28 "s"
Name 44 "OutputStream.pos"
Name 50 "OutputStream.clip"
Name 69 "pos"
Name 71 "pos"
Name 73 "VertexID"
Name 75 "VertexID"
Name 77 "clip"
Name 80 "clip"
Name 118 "OutputStream"
Name 119 "param"
Name 121 "param"
Name 123 "param"
Name 124 "param"
Decorate 44(OutputStream.pos) BuiltIn Position
Decorate 50(OutputStream.clip) BuiltIn ClipDistance
Decorate 71(pos) BuiltIn Position
Decorate 75(VertexID) Location 0
Decorate 80(clip) BuiltIn ClipDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 3
10: TypeArray 7(fvec4) 9
11: TypePointer Function 10
12: TypeArray 8(int) 9
13: TypePointer Function 12
14: TypeVector 6(float) 2
15: 8(int) Constant 2
16: TypeArray 14(fvec2) 15
17(S): TypeStruct 7(fvec4) 16
18: TypePointer Function 17(S)
19: TypeArray 16 9
20: TypePointer Function 19
21: TypeFunction 2 11(ptr) 13(ptr) 18(ptr) 20(ptr)
29: TypeInt 32 1
30: 29(int) Constant 0
31: TypePointer Function 7(fvec4)
35: 29(int) Constant 1
36: TypePointer Function 14(fvec2)
43: TypePointer Output 7(fvec4)
44(OutputStream.pos): 43(ptr) Variable Output
47: 8(int) Constant 4
48: TypeArray 6(float) 47
49: TypePointer Output 48
50(OutputStream.clip): 49(ptr) Variable Output
51: 8(int) Constant 0
52: TypePointer Function 6(float)
55: TypePointer Output 6(float)
57: 8(int) Constant 1
61: 29(int) Constant 2
65: 29(int) Constant 3
70: TypePointer Input 10
71(pos): 70(ptr) Variable Input
74: TypePointer Input 12
75(VertexID): 74(ptr) Variable Input
78: TypeArray 48 9
79: TypePointer Input 78
80(clip): 79(ptr) Variable Input
81: TypePointer Input 6(float)
4(main): 2 Function None 3
5: Label
69(pos): 11(ptr) Variable Function
73(VertexID): 13(ptr) Variable Function
77(clip): 20(ptr) Variable Function
118(OutputStream): 18(ptr) Variable Function
119(param): 11(ptr) Variable Function
121(param): 13(ptr) Variable Function
123(param): 18(ptr) Variable Function
124(param): 20(ptr) Variable Function
72: 10 Load 71(pos)
Store 69(pos) 72
76: 12 Load 75(VertexID)
Store 73(VertexID) 76
82: 81(ptr) AccessChain 80(clip) 30 30
83: 6(float) Load 82
84: 52(ptr) AccessChain 77(clip) 30 30 51
Store 84 83
85: 81(ptr) AccessChain 80(clip) 30 35
86: 6(float) Load 85
87: 52(ptr) AccessChain 77(clip) 30 30 57
Store 87 86
88: 81(ptr) AccessChain 80(clip) 30 61
89: 6(float) Load 88
90: 52(ptr) AccessChain 77(clip) 30 35 51
Store 90 89
91: 81(ptr) AccessChain 80(clip) 30 65
92: 6(float) Load 91
93: 52(ptr) AccessChain 77(clip) 30 35 57
Store 93 92
94: 81(ptr) AccessChain 80(clip) 35 30
95: 6(float) Load 94
96: 52(ptr) AccessChain 77(clip) 35 30 51
Store 96 95
97: 81(ptr) AccessChain 80(clip) 35 35
98: 6(float) Load 97
99: 52(ptr) AccessChain 77(clip) 35 30 57
Store 99 98
100: 81(ptr) AccessChain 80(clip) 35 61
101: 6(float) Load 100
102: 52(ptr) AccessChain 77(clip) 35 35 51
Store 102 101
103: 81(ptr) AccessChain 80(clip) 35 65
104: 6(float) Load 103
105: 52(ptr) AccessChain 77(clip) 35 35 57
Store 105 104
106: 81(ptr) AccessChain 80(clip) 61 30
107: 6(float) Load 106
108: 52(ptr) AccessChain 77(clip) 61 30 51
Store 108 107
109: 81(ptr) AccessChain 80(clip) 61 35
110: 6(float) Load 109
111: 52(ptr) AccessChain 77(clip) 61 30 57
Store 111 110
112: 81(ptr) AccessChain 80(clip) 61 61
113: 6(float) Load 112
114: 52(ptr) AccessChain 77(clip) 61 35 51
Store 114 113
115: 81(ptr) AccessChain 80(clip) 61 65
116: 6(float) Load 115
117: 52(ptr) AccessChain 77(clip) 61 35 57
Store 117 116
120: 10 Load 69(pos)
Store 119(param) 120
122: 12 Load 73(VertexID)
Store 121(param) 122
125: 19 Load 77(clip)
Store 124(param) 125
126: 2 FunctionCall 26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];) 119(param) 121(param) 123(param) 124(param)
127: 17(S) Load 123(param)
Store 118(OutputStream) 127
Return
FunctionEnd
26(@main(vf4[3];u1[3];struct-S-vf4-vf2[2]1;vf2[3][2];): 2 Function None 21
22(pos): 11(ptr) FunctionParameter
23(VertexID): 13(ptr) FunctionParameter
24(OutputStream): 18(ptr) FunctionParameter
25(clip): 20(ptr) FunctionParameter
27: Label
28(s): 18(ptr) Variable Function
32: 31(ptr) AccessChain 22(pos) 30
33: 7(fvec4) Load 32
34: 31(ptr) AccessChain 28(s) 30
Store 34 33
37: 36(ptr) AccessChain 25(clip) 30 30
38: 14(fvec2) Load 37
39: 36(ptr) AccessChain 28(s) 35 30
Store 39 38
40: 36(ptr) AccessChain 25(clip) 30 35
41: 14(fvec2) Load 40
42: 36(ptr) AccessChain 28(s) 35 35
Store 42 41
45: 31(ptr) AccessChain 28(s) 30
46: 7(fvec4) Load 45
Store 44(OutputStream.pos) 46
53: 52(ptr) AccessChain 28(s) 35 30 51
54: 6(float) Load 53
56: 55(ptr) AccessChain 50(OutputStream.clip) 30
Store 56 54
58: 52(ptr) AccessChain 28(s) 35 30 57
59: 6(float) Load 58
60: 55(ptr) AccessChain 50(OutputStream.clip) 35
Store 60 59
62: 52(ptr) AccessChain 28(s) 35 35 51
63: 6(float) Load 62
64: 55(ptr) AccessChain 50(OutputStream.clip) 61
Store 64 63
66: 52(ptr) AccessChain 28(s) 35 35 57
67: 6(float) Load 66
68: 55(ptr) AccessChain 50(OutputStream.clip) 65
Store 68 67
EmitVertex
Return
FunctionEnd

View File

@ -0,0 +1,830 @@
hlsl.clipdistance-3.geom
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
0:? Sequence
0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
0:12 Function Parameters:
0:12 'pos' ( in 3-element array of 4-component vector of float)
0:12 'VertexID' ( in 3-element array of uint)
0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:12 'clip' ( in 3-element array of 4-component vector of float)
0:? Sequence
0:15 move second child to first child ( temp 4-component vector of float)
0:15 pos: direct index for structure ( temp 4-component vector of float)
0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:15 Constant:
0:15 0 (const int)
0:15 direct index ( temp 4-component vector of float)
0:15 'pos' ( in 3-element array of 4-component vector of float)
0:15 Constant:
0:15 0 (const int)
0:16 move second child to first child ( temp 2-component vector of float)
0:16 clip0: direct index for structure ( temp 2-component vector of float)
0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:16 Constant:
0:16 1 (const int)
0:16 vector swizzle ( temp 2-component vector of float)
0:16 direct index ( temp 4-component vector of float)
0:16 'clip' ( in 3-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 Sequence
0:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 1 (const int)
0:17 move second child to first child ( temp 2-component vector of float)
0:17 clip1: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:17 Constant:
0:17 2 (const int)
0:17 vector swizzle ( temp 2-component vector of float)
0:17 direct index ( temp 4-component vector of float)
0:17 'clip' ( in 3-element array of 4-component vector of float)
0:17 Constant:
0:17 0 (const int)
0:17 Sequence
0:17 Constant:
0:17 2 (const int)
0:17 Constant:
0:17 3 (const int)
0:19 Sequence
0:19 Sequence
0:19 move second child to first child ( temp 4-component vector of float)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:19 pos: direct index for structure ( temp 4-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 0 (const int)
0:? Sequence
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 0 (const int)
0:19 direct index ( temp float)
0:19 clip0: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 1 (const int)
0:19 Constant:
0:19 0 (const int)
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 1 (const int)
0:19 direct index ( temp float)
0:19 clip0: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 1 (const int)
0:19 Constant:
0:19 1 (const int)
0:? Sequence
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 2 (const int)
0:19 direct index ( temp float)
0:19 clip1: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 2 (const int)
0:19 Constant:
0:19 0 (const int)
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 3 (const int)
0:19 direct index ( temp float)
0:19 clip1: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 2 (const int)
0:19 Constant:
0:19 1 (const int)
0:19 EmitVertex ( temp void)
0:12 Function Definition: main( ( temp void)
0:12 Function Parameters:
0:? Sequence
0:12 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:12 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:? Linker Objects
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
Linked geometry stage:
Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
0:? Sequence
0:12 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
0:12 Function Parameters:
0:12 'pos' ( in 3-element array of 4-component vector of float)
0:12 'VertexID' ( in 3-element array of uint)
0:12 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:12 'clip' ( in 3-element array of 4-component vector of float)
0:? Sequence
0:15 move second child to first child ( temp 4-component vector of float)
0:15 pos: direct index for structure ( temp 4-component vector of float)
0:15 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:15 Constant:
0:15 0 (const int)
0:15 direct index ( temp 4-component vector of float)
0:15 'pos' ( in 3-element array of 4-component vector of float)
0:15 Constant:
0:15 0 (const int)
0:16 move second child to first child ( temp 2-component vector of float)
0:16 clip0: direct index for structure ( temp 2-component vector of float)
0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:16 Constant:
0:16 1 (const int)
0:16 vector swizzle ( temp 2-component vector of float)
0:16 direct index ( temp 4-component vector of float)
0:16 'clip' ( in 3-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:16 Sequence
0:16 Constant:
0:16 0 (const int)
0:16 Constant:
0:16 1 (const int)
0:17 move second child to first child ( temp 2-component vector of float)
0:17 clip1: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:17 Constant:
0:17 2 (const int)
0:17 vector swizzle ( temp 2-component vector of float)
0:17 direct index ( temp 4-component vector of float)
0:17 'clip' ( in 3-element array of 4-component vector of float)
0:17 Constant:
0:17 0 (const int)
0:17 Sequence
0:17 Constant:
0:17 2 (const int)
0:17 Constant:
0:17 3 (const int)
0:19 Sequence
0:19 Sequence
0:19 move second child to first child ( temp 4-component vector of float)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:19 pos: direct index for structure ( temp 4-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 0 (const int)
0:? Sequence
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 0 (const int)
0:19 direct index ( temp float)
0:19 clip0: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 1 (const int)
0:19 Constant:
0:19 0 (const int)
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 1 (const int)
0:19 direct index ( temp float)
0:19 clip0: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 1 (const int)
0:19 Constant:
0:19 1 (const int)
0:? Sequence
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 2 (const int)
0:19 direct index ( temp float)
0:19 clip1: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 2 (const int)
0:19 Constant:
0:19 0 (const int)
0:19 move second child to first child ( temp float)
0:19 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:19 Constant:
0:19 3 (const int)
0:19 direct index ( temp float)
0:19 clip1: direct index for structure ( temp 2-component vector of float)
0:19 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:19 Constant:
0:19 2 (const int)
0:19 Constant:
0:19 1 (const int)
0:19 EmitVertex ( temp void)
0:12 Function Definition: main( ( temp void)
0:12 Function Parameters:
0:? Sequence
0:12 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:12 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? Sequence
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 0 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 1 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 0 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 1 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 2 (const int)
0:12 move second child to first child ( temp float)
0:12 direct index ( temp float)
0:12 direct index ( temp 4-component vector of float)
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 direct index ( in float ClipDistance)
0:12 direct index ( in 4-element array of float ClipDistance)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:12 Constant:
0:12 2 (const int)
0:12 Constant:
0:12 3 (const int)
0:12 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:? 'clip' ( temp 3-element array of 4-component vector of float)
0:? Linker Objects
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 127
Capability Geometry
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 43 49 69 73 78
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 3
Source HLSL 500
Name 4 "main"
Name 15 "S"
MemberName 15(S) 0 "pos"
MemberName 15(S) 1 "clip0"
MemberName 15(S) 2 "clip1"
Name 22 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];"
Name 18 "pos"
Name 19 "VertexID"
Name 20 "OutputStream"
Name 21 "clip"
Name 24 "s"
Name 43 "OutputStream.pos"
Name 49 "OutputStream.clip1"
Name 67 "pos"
Name 69 "pos"
Name 71 "VertexID"
Name 73 "VertexID"
Name 75 "clip"
Name 78 "clip"
Name 117 "OutputStream"
Name 118 "param"
Name 120 "param"
Name 122 "param"
Name 123 "param"
Decorate 43(OutputStream.pos) BuiltIn Position
Decorate 49(OutputStream.clip1) BuiltIn ClipDistance
Decorate 69(pos) BuiltIn Position
Decorate 73(VertexID) Location 0
Decorate 78(clip) BuiltIn ClipDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 3
10: TypeArray 7(fvec4) 9
11: TypePointer Function 10
12: TypeArray 8(int) 9
13: TypePointer Function 12
14: TypeVector 6(float) 2
15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2)
16: TypePointer Function 15(S)
17: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 11(ptr)
25: TypeInt 32 1
26: 25(int) Constant 0
27: TypePointer Function 7(fvec4)
31: 25(int) Constant 1
35: TypePointer Function 14(fvec2)
37: 25(int) Constant 2
42: TypePointer Output 7(fvec4)
43(OutputStream.pos): 42(ptr) Variable Output
46: 8(int) Constant 4
47: TypeArray 6(float) 46
48: TypePointer Output 47
49(OutputStream.clip1): 48(ptr) Variable Output
50: 8(int) Constant 0
51: TypePointer Function 6(float)
54: TypePointer Output 6(float)
56: 8(int) Constant 1
63: 25(int) Constant 3
68: TypePointer Input 10
69(pos): 68(ptr) Variable Input
72: TypePointer Input 12
73(VertexID): 72(ptr) Variable Input
76: TypeArray 47 9
77: TypePointer Input 76
78(clip): 77(ptr) Variable Input
79: TypePointer Input 6(float)
88: 8(int) Constant 2
4(main): 2 Function None 3
5: Label
67(pos): 11(ptr) Variable Function
71(VertexID): 13(ptr) Variable Function
75(clip): 11(ptr) Variable Function
117(OutputStream): 16(ptr) Variable Function
118(param): 11(ptr) Variable Function
120(param): 13(ptr) Variable Function
122(param): 16(ptr) Variable Function
123(param): 11(ptr) Variable Function
70: 10 Load 69(pos)
Store 67(pos) 70
74: 12 Load 73(VertexID)
Store 71(VertexID) 74
80: 79(ptr) AccessChain 78(clip) 26 26
81: 6(float) Load 80
82: 51(ptr) AccessChain 75(clip) 26 50
Store 82 81
83: 79(ptr) AccessChain 78(clip) 26 31
84: 6(float) Load 83
85: 51(ptr) AccessChain 75(clip) 26 56
Store 85 84
86: 79(ptr) AccessChain 78(clip) 26 37
87: 6(float) Load 86
89: 51(ptr) AccessChain 75(clip) 26 88
Store 89 87
90: 79(ptr) AccessChain 78(clip) 26 63
91: 6(float) Load 90
92: 51(ptr) AccessChain 75(clip) 26 9
Store 92 91
93: 79(ptr) AccessChain 78(clip) 31 26
94: 6(float) Load 93
95: 51(ptr) AccessChain 75(clip) 31 50
Store 95 94
96: 79(ptr) AccessChain 78(clip) 31 31
97: 6(float) Load 96
98: 51(ptr) AccessChain 75(clip) 31 56
Store 98 97
99: 79(ptr) AccessChain 78(clip) 31 37
100: 6(float) Load 99
101: 51(ptr) AccessChain 75(clip) 31 88
Store 101 100
102: 79(ptr) AccessChain 78(clip) 31 63
103: 6(float) Load 102
104: 51(ptr) AccessChain 75(clip) 31 9
Store 104 103
105: 79(ptr) AccessChain 78(clip) 37 26
106: 6(float) Load 105
107: 51(ptr) AccessChain 75(clip) 37 50
Store 107 106
108: 79(ptr) AccessChain 78(clip) 37 31
109: 6(float) Load 108
110: 51(ptr) AccessChain 75(clip) 37 56
Store 110 109
111: 79(ptr) AccessChain 78(clip) 37 37
112: 6(float) Load 111
113: 51(ptr) AccessChain 75(clip) 37 88
Store 113 112
114: 79(ptr) AccessChain 78(clip) 37 63
115: 6(float) Load 114
116: 51(ptr) AccessChain 75(clip) 37 9
Store 116 115
119: 10 Load 67(pos)
Store 118(param) 119
121: 12 Load 71(VertexID)
Store 120(param) 121
124: 10 Load 75(clip)
Store 123(param) 124
125: 2 FunctionCall 22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];) 118(param) 120(param) 122(param) 123(param)
126: 15(S) Load 122(param)
Store 117(OutputStream) 126
Return
FunctionEnd
22(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf4[3];): 2 Function None 17
18(pos): 11(ptr) FunctionParameter
19(VertexID): 13(ptr) FunctionParameter
20(OutputStream): 16(ptr) FunctionParameter
21(clip): 11(ptr) FunctionParameter
23: Label
24(s): 16(ptr) Variable Function
28: 27(ptr) AccessChain 18(pos) 26
29: 7(fvec4) Load 28
30: 27(ptr) AccessChain 24(s) 26
Store 30 29
32: 27(ptr) AccessChain 21(clip) 26
33: 7(fvec4) Load 32
34: 14(fvec2) VectorShuffle 33 33 0 1
36: 35(ptr) AccessChain 24(s) 31
Store 36 34
38: 27(ptr) AccessChain 21(clip) 26
39: 7(fvec4) Load 38
40: 14(fvec2) VectorShuffle 39 39 2 3
41: 35(ptr) AccessChain 24(s) 37
Store 41 40
44: 27(ptr) AccessChain 24(s) 26
45: 7(fvec4) Load 44
Store 43(OutputStream.pos) 45
52: 51(ptr) AccessChain 24(s) 31 50
53: 6(float) Load 52
55: 54(ptr) AccessChain 49(OutputStream.clip1) 26
Store 55 53
57: 51(ptr) AccessChain 24(s) 31 56
58: 6(float) Load 57
59: 54(ptr) AccessChain 49(OutputStream.clip1) 31
Store 59 58
60: 51(ptr) AccessChain 24(s) 37 50
61: 6(float) Load 60
62: 54(ptr) AccessChain 49(OutputStream.clip1) 37
Store 62 61
64: 51(ptr) AccessChain 24(s) 37 56
65: 6(float) Load 64
66: 54(ptr) AccessChain 49(OutputStream.clip1) 63
Store 66 65
EmitVertex
Return
FunctionEnd

View File

@ -0,0 +1,819 @@
hlsl.clipdistance-4.geom
Shader version: 500
invocations = -1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
0:? Sequence
0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
0:13 Function Parameters:
0:13 'pos' ( in 3-element array of 4-component vector of float)
0:13 'VertexID' ( in 3-element array of uint)
0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:13 'clip0' ( in 3-element array of 2-component vector of float)
0:13 'clip1' ( in 3-element array of 2-component vector of float)
0:? Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 pos: direct index for structure ( temp 4-component vector of float)
0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:16 Constant:
0:16 0 (const int)
0:16 direct index ( temp 4-component vector of float)
0:16 'pos' ( in 3-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:17 move second child to first child ( temp 2-component vector of float)
0:17 clip0: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:17 Constant:
0:17 1 (const int)
0:17 direct index ( temp 2-component vector of float)
0:17 'clip0' ( in 3-element array of 2-component vector of float)
0:17 Constant:
0:17 0 (const int)
0:18 move second child to first child ( temp 2-component vector of float)
0:18 clip1: direct index for structure ( temp 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:18 Constant:
0:18 2 (const int)
0:18 direct index ( temp 2-component vector of float)
0:18 'clip1' ( in 3-element array of 2-component vector of float)
0:18 Constant:
0:18 0 (const int)
0:20 Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:20 pos: direct index for structure ( temp 4-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 0 (const int)
0:? Sequence
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 0 (const int)
0:20 direct index ( temp float)
0:20 clip0: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 1 (const int)
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 1 (const int)
0:20 direct index ( temp float)
0:20 clip0: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 1 (const int)
0:20 Constant:
0:20 1 (const int)
0:? Sequence
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 2 (const int)
0:20 direct index ( temp float)
0:20 clip1: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 2 (const int)
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 3 (const int)
0:20 direct index ( temp float)
0:20 clip1: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 2 (const int)
0:20 Constant:
0:20 1 (const int)
0:20 EmitVertex ( temp void)
0:13 Function Definition: main( ( temp void)
0:13 Function Parameters:
0:? Sequence
0:13 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:13 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? Sequence
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 1 (const int)
0:? Sequence
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:? Linker Objects
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
Linked geometry stage:
Shader version: 500
invocations = 1
max_vertices = 3
input primitive = triangles
output primitive = line_strip
0:? Sequence
0:13 Function Definition: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
0:13 Function Parameters:
0:13 'pos' ( in 3-element array of 4-component vector of float)
0:13 'VertexID' ( in 3-element array of uint)
0:13 'OutputStream' ( out structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:13 'clip0' ( in 3-element array of 2-component vector of float)
0:13 'clip1' ( in 3-element array of 2-component vector of float)
0:? Sequence
0:16 move second child to first child ( temp 4-component vector of float)
0:16 pos: direct index for structure ( temp 4-component vector of float)
0:16 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:16 Constant:
0:16 0 (const int)
0:16 direct index ( temp 4-component vector of float)
0:16 'pos' ( in 3-element array of 4-component vector of float)
0:16 Constant:
0:16 0 (const int)
0:17 move second child to first child ( temp 2-component vector of float)
0:17 clip0: direct index for structure ( temp 2-component vector of float)
0:17 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:17 Constant:
0:17 1 (const int)
0:17 direct index ( temp 2-component vector of float)
0:17 'clip0' ( in 3-element array of 2-component vector of float)
0:17 Constant:
0:17 0 (const int)
0:18 move second child to first child ( temp 2-component vector of float)
0:18 clip1: direct index for structure ( temp 2-component vector of float)
0:18 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:18 Constant:
0:18 2 (const int)
0:18 direct index ( temp 2-component vector of float)
0:18 'clip1' ( in 3-element array of 2-component vector of float)
0:18 Constant:
0:18 0 (const int)
0:20 Sequence
0:20 Sequence
0:20 move second child to first child ( temp 4-component vector of float)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:20 pos: direct index for structure ( temp 4-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 0 (const int)
0:? Sequence
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 0 (const int)
0:20 direct index ( temp float)
0:20 clip0: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 1 (const int)
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 1 (const int)
0:20 direct index ( temp float)
0:20 clip0: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 1 (const int)
0:20 Constant:
0:20 1 (const int)
0:? Sequence
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 2 (const int)
0:20 direct index ( temp float)
0:20 clip1: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 2 (const int)
0:20 Constant:
0:20 0 (const int)
0:20 move second child to first child ( temp float)
0:20 direct index ( out float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
0:20 Constant:
0:20 3 (const int)
0:20 direct index ( temp float)
0:20 clip1: direct index for structure ( temp 2-component vector of float)
0:20 's' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:20 Constant:
0:20 2 (const int)
0:20 Constant:
0:20 1 (const int)
0:20 EmitVertex ( temp void)
0:13 Function Definition: main( ( temp void)
0:13 Function Parameters:
0:? Sequence
0:13 move second child to first child ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:13 move second child to first child ( temp 3-element array of uint)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? Sequence
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 1 (const int)
0:? Sequence
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 0 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 1 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 0 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 2 (const int)
0:13 move second child to first child ( temp float)
0:13 direct index ( temp float)
0:13 direct index ( temp 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 1 (const int)
0:13 direct index ( in float ClipDistance)
0:13 direct index ( in 4-element array of float ClipDistance)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:13 Constant:
0:13 2 (const int)
0:13 Constant:
0:13 3 (const int)
0:13 Function Call: @main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3]; ( temp void)
0:? 'pos' ( temp 3-element array of 4-component vector of float)
0:? 'VertexID' ( temp 3-element array of uint)
0:? 'OutputStream' ( temp structure{ temp 4-component vector of float pos, temp 2-component vector of float clip0, temp 2-component vector of float clip1})
0:? 'clip0' ( temp 3-element array of 2-component vector of float)
0:? 'clip1' ( temp 3-element array of 2-component vector of float)
0:? Linker Objects
0:? 'pos' ( in 3-element array of 4-component vector of float Position)
0:? 'VertexID' (layout( location=0) in 3-element array of uint)
0:? 'OutputStream.pos' ( out 4-component vector of float Position)
0:? 'clip0' ( in 3-element array of 4-element array of float ClipDistance)
0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance)
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 130
Capability Geometry
Capability ClipDistance
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 44 50 70 74 79
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 3
Source HLSL 500
Name 4 "main"
Name 15 "S"
MemberName 15(S) 0 "pos"
MemberName 15(S) 1 "clip0"
MemberName 15(S) 2 "clip1"
Name 25 "@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];"
Name 20 "pos"
Name 21 "VertexID"
Name 22 "OutputStream"
Name 23 "clip0"
Name 24 "clip1"
Name 27 "s"
Name 44 "OutputStream.pos"
Name 50 "OutputStream.clip1"
Name 68 "pos"
Name 70 "pos"
Name 72 "VertexID"
Name 74 "VertexID"
Name 76 "clip0"
Name 79 "clip0"
Name 99 "clip1"
Name 118 "OutputStream"
Name 119 "param"
Name 121 "param"
Name 123 "param"
Name 124 "param"
Name 126 "param"
Decorate 44(OutputStream.pos) BuiltIn Position
Decorate 50(OutputStream.clip1) BuiltIn ClipDistance
Decorate 70(pos) BuiltIn Position
Decorate 74(VertexID) Location 0
Decorate 79(clip0) BuiltIn ClipDistance
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
7: TypeVector 6(float) 4
8: TypeInt 32 0
9: 8(int) Constant 3
10: TypeArray 7(fvec4) 9
11: TypePointer Function 10
12: TypeArray 8(int) 9
13: TypePointer Function 12
14: TypeVector 6(float) 2
15(S): TypeStruct 7(fvec4) 14(fvec2) 14(fvec2)
16: TypePointer Function 15(S)
17: TypeArray 14(fvec2) 9
18: TypePointer Function 17
19: TypeFunction 2 11(ptr) 13(ptr) 16(ptr) 18(ptr) 18(ptr)
28: TypeInt 32 1
29: 28(int) Constant 0
30: TypePointer Function 7(fvec4)
34: 28(int) Constant 1
35: TypePointer Function 14(fvec2)
39: 28(int) Constant 2
43: TypePointer Output 7(fvec4)
44(OutputStream.pos): 43(ptr) Variable Output
47: 8(int) Constant 4
48: TypeArray 6(float) 47
49: TypePointer Output 48
50(OutputStream.clip1): 49(ptr) Variable Output
51: 8(int) Constant 0
52: TypePointer Function 6(float)
55: TypePointer Output 6(float)
57: 8(int) Constant 1
64: 28(int) Constant 3
69: TypePointer Input 10
70(pos): 69(ptr) Variable Input
73: TypePointer Input 12
74(VertexID): 73(ptr) Variable Input
77: TypeArray 48 9
78: TypePointer Input 77
79(clip0): 78(ptr) Variable Input
80: TypePointer Input 6(float)
4(main): 2 Function None 3
5: Label
68(pos): 11(ptr) Variable Function
72(VertexID): 13(ptr) Variable Function
76(clip0): 18(ptr) Variable Function
99(clip1): 18(ptr) Variable Function
118(OutputStream): 16(ptr) Variable Function
119(param): 11(ptr) Variable Function
121(param): 13(ptr) Variable Function
123(param): 16(ptr) Variable Function
124(param): 18(ptr) Variable Function
126(param): 18(ptr) Variable Function
71: 10 Load 70(pos)
Store 68(pos) 71
75: 12 Load 74(VertexID)
Store 72(VertexID) 75
81: 80(ptr) AccessChain 79(clip0) 29 29
82: 6(float) Load 81
83: 52(ptr) AccessChain 76(clip0) 29 51
Store 83 82
84: 80(ptr) AccessChain 79(clip0) 29 34
85: 6(float) Load 84
86: 52(ptr) AccessChain 76(clip0) 29 57
Store 86 85
87: 80(ptr) AccessChain 79(clip0) 29 39
88: 6(float) Load 87
89: 52(ptr) AccessChain 76(clip0) 34 51
Store 89 88
90: 80(ptr) AccessChain 79(clip0) 29 64
91: 6(float) Load 90
92: 52(ptr) AccessChain 76(clip0) 34 57
Store 92 91
93: 80(ptr) AccessChain 79(clip0) 34 29
94: 6(float) Load 93
95: 52(ptr) AccessChain 76(clip0) 39 51
Store 95 94
96: 80(ptr) AccessChain 79(clip0) 34 34
97: 6(float) Load 96
98: 52(ptr) AccessChain 76(clip0) 39 57
Store 98 97
100: 80(ptr) AccessChain 79(clip0) 29 39
101: 6(float) Load 100
102: 52(ptr) AccessChain 99(clip1) 29 51
Store 102 101
103: 80(ptr) AccessChain 79(clip0) 29 64
104: 6(float) Load 103
105: 52(ptr) AccessChain 99(clip1) 29 57
Store 105 104
106: 80(ptr) AccessChain 79(clip0) 34 39
107: 6(float) Load 106
108: 52(ptr) AccessChain 99(clip1) 34 51
Store 108 107
109: 80(ptr) AccessChain 79(clip0) 34 64
110: 6(float) Load 109
111: 52(ptr) AccessChain 99(clip1) 34 57
Store 111 110
112: 80(ptr) AccessChain 79(clip0) 39 39
113: 6(float) Load 112
114: 52(ptr) AccessChain 99(clip1) 39 51
Store 114 113
115: 80(ptr) AccessChain 79(clip0) 39 64
116: 6(float) Load 115
117: 52(ptr) AccessChain 99(clip1) 39 57
Store 117 116
120: 10 Load 68(pos)
Store 119(param) 120
122: 12 Load 72(VertexID)
Store 121(param) 122
125: 17 Load 76(clip0)
Store 124(param) 125
127: 17 Load 99(clip1)
Store 126(param) 127
128: 2 FunctionCall 25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];) 119(param) 121(param) 123(param) 124(param) 126(param)
129: 15(S) Load 123(param)
Store 118(OutputStream) 129
Return
FunctionEnd
25(@main(vf4[3];u1[3];struct-S-vf4-vf2-vf21;vf2[3];vf2[3];): 2 Function None 19
20(pos): 11(ptr) FunctionParameter
21(VertexID): 13(ptr) FunctionParameter
22(OutputStream): 16(ptr) FunctionParameter
23(clip0): 18(ptr) FunctionParameter
24(clip1): 18(ptr) FunctionParameter
26: Label
27(s): 16(ptr) Variable Function
31: 30(ptr) AccessChain 20(pos) 29
32: 7(fvec4) Load 31
33: 30(ptr) AccessChain 27(s) 29
Store 33 32
36: 35(ptr) AccessChain 23(clip0) 29
37: 14(fvec2) Load 36
38: 35(ptr) AccessChain 27(s) 34
Store 38 37
40: 35(ptr) AccessChain 24(clip1) 29
41: 14(fvec2) Load 40
42: 35(ptr) AccessChain 27(s) 39
Store 42 41
45: 30(ptr) AccessChain 27(s) 29
46: 7(fvec4) Load 45
Store 44(OutputStream.pos) 46
53: 52(ptr) AccessChain 27(s) 34 51
54: 6(float) Load 53
56: 55(ptr) AccessChain 50(OutputStream.clip1) 29
Store 56 54
58: 52(ptr) AccessChain 27(s) 34 57
59: 6(float) Load 58
60: 55(ptr) AccessChain 50(OutputStream.clip1) 34
Store 60 59
61: 52(ptr) AccessChain 27(s) 39 51
62: 6(float) Load 61
63: 55(ptr) AccessChain 50(OutputStream.clip1) 39
Store 63 62
65: 52(ptr) AccessChain 27(s) 39 57
66: 6(float) Load 65
67: 55(ptr) AccessChain 50(OutputStream.clip1) 64
Store 67 66
EmitVertex
Return
FunctionEnd

View File

@ -1,15 +1,10 @@
hlsl.semantic.geom
ERROR: 0:15: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 0:15: '' : unimplemented: clip/cull not currently implemented for this stage
ERROR: 2 compilation errors. No code generated.
Shader version: 500
invocations = -1
max_vertices = 4
input primitive = triangles
output primitive = line_strip
ERROR: node is still EOpNull!
0:? Sequence
0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
0:13 Function Parameters:
0:13 'VertexID' ( in 3-element array of uint)
@ -23,6 +18,26 @@ ERROR: node is still EOpNull!
0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:15 Constant:
0:15 0 (const int)
0:? Sequence
0:15 move second child to first child ( temp float)
0:15 direct index ( out float ClipDistance)
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
0:15 Constant:
0:15 0 (const int)
0:15 clip0: direct index for structure ( temp float)
0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:15 Constant:
0:15 1 (const int)
0:? Sequence
0:15 move second child to first child ( temp float)
0:15 direct index ( out float CullDistance)
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
0:15 Constant:
0:15 0 (const int)
0:15 cull0: direct index for structure ( temp float)
0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:15 Constant:
0:15 2 (const int)
0:15 move second child to first child ( temp uint)
0:? 'OutputStream.vpai' ( out uint ViewportIndex)
0:15 vpai: direct index for structure ( temp uint)
@ -57,6 +72,8 @@ ERROR: node is still EOpNull!
0:? 'OutputStream.vpai' ( out uint ViewportIndex)
0:? 'OutputStream.rtai' ( out uint Layer)
0:? 'OutputStream.ii' (layout( location=0) out int)
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
Linked geometry stage:
@ -67,7 +84,7 @@ invocations = 1
max_vertices = 4
input primitive = triangles
output primitive = line_strip
ERROR: node is still EOpNull!
0:? Sequence
0:13 Function Definition: @main(u1[3];struct-S-f1-f1-f1-u1-u1-i11; ( temp void)
0:13 Function Parameters:
0:13 'VertexID' ( in 3-element array of uint)
@ -81,6 +98,26 @@ ERROR: node is still EOpNull!
0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:15 Constant:
0:15 0 (const int)
0:? Sequence
0:15 move second child to first child ( temp float)
0:15 direct index ( out float ClipDistance)
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
0:15 Constant:
0:15 0 (const int)
0:15 clip0: direct index for structure ( temp float)
0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:15 Constant:
0:15 1 (const int)
0:? Sequence
0:15 move second child to first child ( temp float)
0:15 direct index ( out float CullDistance)
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
0:15 Constant:
0:15 0 (const int)
0:15 cull0: direct index for structure ( temp float)
0:15 's' ( temp structure{ temp float clip0, temp float clip0, temp float cull0, temp uint vpai, temp uint rtai, temp int ii})
0:15 Constant:
0:15 2 (const int)
0:15 move second child to first child ( temp uint)
0:? 'OutputStream.vpai' ( out uint ViewportIndex)
0:15 vpai: direct index for structure ( temp uint)
@ -115,5 +152,129 @@ ERROR: node is still EOpNull!
0:? 'OutputStream.vpai' ( out uint ViewportIndex)
0:? 'OutputStream.rtai' ( out uint Layer)
0:? 'OutputStream.ii' (layout( location=0) out int)
0:? 'OutputStream.clip0' ( out 1-element array of float ClipDistance)
0:? 'OutputStream.cull0' ( out 1-element array of float CullDistance)
SPIR-V is not generated for failed compile or link
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 65
Capability Geometry
Capability ClipDistance
Capability CullDistance
Capability MultiViewport
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Geometry 4 "main" 20 29 34 40 45 50 57
ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputLineStrip
ExecutionMode 4 OutputVertices 4
Source HLSL 500
Name 4 "main"
Name 12 "S"
MemberName 12(S) 0 "clip0"
MemberName 12(S) 1 "clip0"
MemberName 12(S) 2 "cull0"
MemberName 12(S) 3 "vpai"
MemberName 12(S) 4 "rtai"
MemberName 12(S) 5 "ii"
Name 17 "@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;"
Name 15 "VertexID"
Name 16 "OutputStream"
Name 20 "OutputStream.clip0"
Name 21 "s"
Name 29 "OutputStream.clip0"
Name 34 "OutputStream.cull0"
Name 40 "OutputStream.vpai"
Name 45 "OutputStream.rtai"
Name 50 "OutputStream.ii"
Name 55 "VertexID"
Name 57 "VertexID"
Name 59 "OutputStream"
Name 60 "param"
Name 62 "param"
Decorate 20(OutputStream.clip0) BuiltIn Position
Decorate 29(OutputStream.clip0) BuiltIn ClipDistance
Decorate 34(OutputStream.cull0) BuiltIn CullDistance
Decorate 40(OutputStream.vpai) BuiltIn ViewportIndex
Decorate 45(OutputStream.rtai) BuiltIn Layer
Decorate 50(OutputStream.ii) Location 0
Decorate 57(VertexID) Location 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: 6(int) Constant 3
8: TypeArray 6(int) 7
9: TypePointer Function 8
10: TypeFloat 32
11: TypeInt 32 1
12(S): TypeStruct 10(float) 10(float) 10(float) 6(int) 6(int) 11(int)
13: TypePointer Function 12(S)
14: TypeFunction 2 9(ptr) 13(ptr)
19: TypePointer Output 10(float)
20(OutputStream.clip0): 19(ptr) Variable Output
22: 11(int) Constant 0
23: TypePointer Function 10(float)
26: 6(int) Constant 1
27: TypeArray 10(float) 26
28: TypePointer Output 27
29(OutputStream.clip0): 28(ptr) Variable Output
30: 11(int) Constant 1
34(OutputStream.cull0): 28(ptr) Variable Output
35: 11(int) Constant 2
39: TypePointer Output 6(int)
40(OutputStream.vpai): 39(ptr) Variable Output
41: 11(int) Constant 3
42: TypePointer Function 6(int)
45(OutputStream.rtai): 39(ptr) Variable Output
46: 11(int) Constant 4
49: TypePointer Output 11(int)
50(OutputStream.ii): 49(ptr) Variable Output
51: 11(int) Constant 5
52: TypePointer Function 11(int)
56: TypePointer Input 8
57(VertexID): 56(ptr) Variable Input
4(main): 2 Function None 3
5: Label
55(VertexID): 9(ptr) Variable Function
59(OutputStream): 13(ptr) Variable Function
60(param): 9(ptr) Variable Function
62(param): 13(ptr) Variable Function
58: 8 Load 57(VertexID)
Store 55(VertexID) 58
61: 8 Load 55(VertexID)
Store 60(param) 61
63: 2 FunctionCall 17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;) 60(param) 62(param)
64: 12(S) Load 62(param)
Store 59(OutputStream) 64
Return
FunctionEnd
17(@main(u1[3];struct-S-f1-f1-f1-u1-u1-i11;): 2 Function None 14
15(VertexID): 9(ptr) FunctionParameter
16(OutputStream): 13(ptr) FunctionParameter
18: Label
21(s): 13(ptr) Variable Function
24: 23(ptr) AccessChain 21(s) 22
25: 10(float) Load 24
Store 20(OutputStream.clip0) 25
31: 23(ptr) AccessChain 21(s) 30
32: 10(float) Load 31
33: 19(ptr) AccessChain 29(OutputStream.clip0) 22
Store 33 32
36: 23(ptr) AccessChain 21(s) 35
37: 10(float) Load 36
38: 19(ptr) AccessChain 34(OutputStream.cull0) 22
Store 38 37
43: 42(ptr) AccessChain 21(s) 41
44: 6(int) Load 43
Store 40(OutputStream.vpai) 44
47: 42(ptr) AccessChain 21(s) 46
48: 6(int) Load 47
Store 45(OutputStream.rtai) 48
53: 52(ptr) AccessChain 21(s) 51
54: 11(int) Load 53
Store 50(OutputStream.ii) 54
EmitVertex
Return
FunctionEnd

View File

@ -1,21 +1,18 @@
struct S {
float4 pos : SV_Position;
float clip : SV_ClipDistance0;
float cull : SV_CullDistance0;
float4 pos : SV_Position;
float2 clip : SV_ClipDistance0;
};
[maxvertexcount(3)]
void main(triangle in float4 pos[3] : SV_Position,
triangle in uint VertexID[3] : VertexID,
inout LineStream<S> OutputStream,
triangle in float clip[3] : SV_ClipDistance, // scalar float
triangle in float cull[3] : SV_CullDistance) // scalar float
triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float.
{
S s;
s.pos = pos[0];
s.clip = clip[0];
s.cull = cull[0];
s.clip = clip[0].xy;
OutputStream.Append(s);
}

View File

@ -7,7 +7,7 @@ struct S {
void main(triangle in float4 pos[3] : SV_Position,
triangle in uint VertexID[3] : VertexID,
inout LineStream<S> OutputStream,
triangle in float2 clip[3][2] : SV_ClipDistance) // scalar float
triangle in float2 clip[3][2] : SV_ClipDistance) // externally: an array 3 of array 4 of float.
{
S s;

View File

@ -4,5 +4,3 @@ float4 main(in float4 pos : SV_Position,
{
return pos + clip[0] + cull[0];
}

View File

@ -0,0 +1,20 @@
struct S {
float4 pos : SV_Position;
float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally.
float2 clip1 : SV_ClipDistance1;
};
[maxvertexcount(3)]
void main(triangle in float4 pos[3] : SV_Position,
triangle in uint VertexID[3] : VertexID,
inout LineStream<S> OutputStream,
triangle in float4 clip[3] : SV_ClipDistance) // externally: an array 3 of array 4 (not vec4!) of float.
{
S s;
s.pos = pos[0];
s.clip0 = clip[0].xy;
s.clip1 = clip[0].zw;
OutputStream.Append(s);
}

View File

@ -0,0 +1,21 @@
struct S {
float4 pos : SV_Position;
float2 clip0 : SV_ClipDistance0; // clip0 and clip1 form an array of float[4] externally.
float2 clip1 : SV_ClipDistance1;
};
[maxvertexcount(3)]
void main(triangle in float4 pos[3] : SV_Position,
triangle in uint VertexID[3] : VertexID,
inout LineStream<S> OutputStream,
triangle in float2 clip0[3] : SV_ClipDistance0, // test input arrayed semantic vars
triangle in float2 clip1[3] : SV_ClipDistance1)
{
S s;
s.pos = pos[0];
s.clip0 = clip0[0];
s.clip1 = clip1[0];
OutputStream.Append(s);
}

View File

@ -104,8 +104,10 @@ INSTANTIATE_TEST_CASE_P(
{"hlsl.clipdistance-2.geom", "main"},
{"hlsl.clipdistance-2.vert", "main"},
{"hlsl.clipdistance-3.frag", "main"},
{"hlsl.clipdistance-3.geom", "main"},
{"hlsl.clipdistance-3.vert", "main"},
{"hlsl.clipdistance-4.frag", "main"},
{"hlsl.clipdistance-4.geom", "main"},
{"hlsl.clipdistance-4.vert", "main"},
{"hlsl.clipdistance-5.frag", "main"},
{"hlsl.clipdistance-5.vert", "main"},

View File

@ -66,8 +66,10 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int
entryPointFunction(nullptr),
entryPointFunctionBody(nullptr),
gsStreamOutput(nullptr),
clipDistanceVariable(nullptr),
cullDistanceVariable(nullptr)
clipDistanceInput(nullptr),
cullDistanceInput(nullptr),
clipDistanceOutput(nullptr),
cullDistanceOutput(nullptr)
{
globalUniformDefaults.clear();
globalUniformDefaults.layoutMatrix = ElmRowMajor;
@ -80,8 +82,10 @@ HlslParseContext::HlslParseContext(TSymbolTable& symbolTable, TIntermediate& int
globalInputDefaults.clear();
globalOutputDefaults.clear();
clipSemanticNSize.fill(0);
cullSemanticNSize.fill(0);
clipSemanticNSizeIn.fill(0);
cullSemanticNSizeIn.fill(0);
clipSemanticNSizeOut.fill(0);
cullSemanticNSizeOut.fill(0);
// "Shaders in the transform
// feedback capturing mode have an initial global default of
@ -1152,14 +1156,18 @@ void HlslParseContext::splitBuiltIn(const TString& baseName, const TType& member
if (arraySizes != nullptr && !memberType.isArray())
ioVar->getWritableType().newArraySizes(*arraySizes);
fixBuiltInIoType(ioVar->getWritableType());
splitBuiltIns[tInterstageIoData(memberType.getQualifier().builtIn, outerQualifier.storage)] = ioVar;
if (!isClipOrCullDistance(ioVar->getType()))
trackLinkage(*ioVar);
// Merge qualifier from the user structure
mergeQualifiers(ioVar->getWritableType().getQualifier(), outerQualifier);
// Fix the builtin type if needed (e.g, some types require fixed array sizes, no matter how the
// shader declared them). This is done after mergeQualifiers(), in case fixBuiltInIoType looks
// at the qualifier to determine e.g, in or out qualifications.
fixBuiltInIoType(ioVar->getWritableType());
// But, not location, we're losing that
ioVar->getWritableType().getQualifier().layoutLocation = TQualifier::layoutLocationEnd;
}
@ -1483,10 +1491,18 @@ void HlslParseContext::fixBuiltInIoType(TType& type)
}
default:
if (isClipOrCullDistance(type)) {
const int loc = type.getQualifier().layoutLocation;
if (type.getQualifier().builtIn == EbvClipDistance) {
clipSemanticNSize[type.getQualifier().layoutLocation] = type.getVectorSize();
if (type.getQualifier().storage == EvqVaryingIn)
clipSemanticNSizeIn[loc] = type.getVectorSize();
else
clipSemanticNSizeOut[loc] = type.getVectorSize();
} else {
cullSemanticNSize[type.getQualifier().layoutLocation] = type.getVectorSize();
if (type.getQualifier().storage == EvqVaryingIn)
cullSemanticNSizeIn[loc] = type.getVectorSize();
else
cullSemanticNSizeOut[loc] = type.getVectorSize();
}
}
@ -2274,6 +2290,7 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc
switch (language) {
case EShLangFragment:
case EShLangVertex:
case EShLangGeometry:
break;
default:
error(loc, "unimplemented: clip/cull not currently implemented for this stage", "", "");
@ -2292,17 +2309,17 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc
const TBuiltInVariable builtInType = clipCullNode->getQualifier().builtIn;
decltype(clipSemanticNSize)* semanticNSize = nullptr;
decltype(clipSemanticNSizeIn)* semanticNSize = nullptr;
// Refer to either the clip or the cull distance, depending on semantic.
switch (builtInType) {
case EbvClipDistance:
clipCullVar = &clipDistanceVariable;
semanticNSize = &clipSemanticNSize;
clipCullVar = isOutput ? &clipDistanceOutput : &clipDistanceInput;
semanticNSize = isOutput ? &clipSemanticNSizeOut : &clipSemanticNSizeIn;
break;
case EbvCullDistance:
clipCullVar = &cullDistanceVariable;
semanticNSize = &cullSemanticNSize;
clipCullVar = isOutput ? &cullDistanceOutput : &cullDistanceInput;
semanticNSize = isOutput ? &cullSemanticNSizeOut : &cullSemanticNSizeIn;
break;
// called invalidly: we expected a clip or a cull distance.
@ -2328,28 +2345,48 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc
vecItems += (*semanticNSize)[x];
arrayLoc += (*semanticNSize)[x];
}
// array sizes, or 1 if it's not an array:
const int internalNodeArraySize = (internalNode->getType().isArray() ? internalNode->getType().getOuterArraySize() : 1);
// It can have up to 2 array dimensions (in the case of geometry shader inputs)
const TArraySizes* const internalArraySizes = internalNode->getType().getArraySizes();
const int internalArrayDims = internalNode->getType().isArray() ? internalArraySizes->getNumDims() : 0;
// vector sizes:
const int internalNodeVectorSize = internalNode->getType().getVectorSize();
const int internalVectorSize = internalNode->getType().getVectorSize();
// array sizes, or 1 if it's not an array:
const int internalInnerArraySize = (internalArrayDims > 0 ? internalArraySizes->getDimSize(internalArrayDims-1) : 1);
const int internalOuterArraySize = (internalArrayDims > 1 ? internalArraySizes->getDimSize(0) : 1);
// The created type may be an array of arrays, e.g, for geometry shader inputs.
const bool isImplicitlyArrayed = (language == EShLangGeometry && !isOutput);
// If we haven't created the output already, create it now.
if (*clipCullVar == nullptr) {
// ClipDistance and CullDistance are handled specially in the entry point input/output copy
// algorithm, because they may need to be unpacked from components of vectors (or a scalar)
// into a float array, or vice versa. Here, we make the array the right size and type,
// which depends on the incoming data, which has several potential dimensions: Semantic ID
// vector size array size Of those, semantic ID and array size cannot appear
// simultaneously.
const int requiredArraySize = arrayLoc * internalNodeArraySize;
// which depends on the incoming data, which has several potential dimensions:
// * Semantic ID
// * vector size
// * array size
// Of those, semantic ID and array size cannot appear simultaneously.
//
// Also to note: for implicitly arrayed forms (e.g, geometry shader inputs), we need to create two
// array dimensions. The shader's declaration may have one or two array dimensions. One is always
// the geometry's dimension.
const bool useInnerSize = internalArrayDims > 1 || !isImplicitlyArrayed;
const int requiredInnerArraySize = arrayLoc * (useInnerSize ? internalInnerArraySize : 1);
const int requiredOuterArraySize = (internalArrayDims > 0) ? internalArraySizes->getDimSize(0) : 1;
TType clipCullType(EbtFloat, clipCullNode->getType().getQualifier().storage, 1);
clipCullType.getQualifier() = clipCullNode->getType().getQualifier();
// Create required array dimension
TArraySizes arraySizes;
arraySizes.addInnerSize(requiredArraySize);
if (isImplicitlyArrayed)
arraySizes.addInnerSize(requiredOuterArraySize);
arraySizes.addInnerSize(requiredInnerArraySize);
clipCullType.newArraySizes(arraySizes);
// Obtain symbol name: we'll use that for the symbol we introduce.
@ -2369,10 +2406,13 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc
// Create symbol for the clip or cull variable.
TIntermSymbol* clipCullSym = intermediate.addSymbol(**clipCullVar);
// array sizes, or 1 if it's not an array:
const int clipCullSymArraySize = (clipCullSym->getType().isArray() ? clipCullSym->getType().getOuterArraySize() : 1);
// vector sizes:
const int clipCullSymVectorSize = clipCullSym->getType().getVectorSize();
const int clipCullVectorSize = clipCullSym->getType().getVectorSize();
// array sizes, or 1 if it's not an array:
const TArraySizes* const clipCullArraySizes = clipCullSym->getType().getArraySizes();
const int clipCullOuterArraySize = isImplicitlyArrayed ? clipCullArraySizes->getDimSize(0) : 1;
const int clipCullInnerArraySize = clipCullArraySizes->getDimSize(isImplicitlyArrayed ? 1 : 0);
// clipCullSym has got to be an array of scalar floats, per SPIR-V semantics.
// fixBuiltInIoType() should have handled that upstream.
@ -2390,8 +2430,9 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc
// If the types are homomorphic, use a simple assign. No need to mess about with
// individual components.
if (clipCullSym->getType().isArray() == internalNode->getType().isArray() &&
clipCullSymArraySize == internalNodeArraySize &&
clipCullSymVectorSize == internalNodeVectorSize) {
clipCullInnerArraySize == internalInnerArraySize &&
clipCullOuterArraySize == internalOuterArraySize &&
clipCullVectorSize == internalVectorSize) {
if (isOutput)
clipCullAssign = intermediate.addAssign(op, clipCullSym, internalNode, loc);
@ -2407,47 +2448,61 @@ TIntermAggregate* HlslParseContext::assignClipCullDistance(const TSourceLoc& loc
// We are going to copy each component of the internal (per array element if indicated) to sequential
// array elements of the clipCullSym. This tracks the lhs element we're writing to as we go along.
// We may be starting in the middle - e.g, for a non-zero semantic ID calculated above.
int clipCullArrayPos = semanticOffset[semanticId];
int clipCullInnerArrayPos = semanticOffset[semanticId];
int clipCullOuterArrayPos = 0;
// Lambda to add an index to a node, set the type of the result, and return the new node.
const auto addIndex = [this, &loc](TIntermTyped* node, int pos) -> TIntermTyped* {
const TType derefType(node->getType(), 0);
node = intermediate.addIndex(EOpIndexDirect, node, intermediate.addConstantUnion(pos, loc), loc);
node->setType(derefType);
return node;
};
// Loop through every component of every element of the internal, and copy to or from the matching external.
for (int internalArrayPos = 0; internalArrayPos < internalNodeArraySize; ++internalArrayPos) {
for (int internalComponent = 0; internalComponent < internalNodeVectorSize; ++internalComponent) {
TIntermTyped* clipCullMember = clipCullSym;
for (int internalOuterArrayPos = 0; internalOuterArrayPos < internalOuterArraySize; ++internalOuterArrayPos) {
for (int internalInnerArrayPos = 0; internalInnerArrayPos < internalInnerArraySize; ++internalInnerArrayPos) {
for (int internalComponent = 0; internalComponent < internalVectorSize; ++internalComponent) {
// clip/cull array member to read from / write to:
TIntermTyped* clipCullMember = clipCullSym;
// array member to read from / write to:
{
const TType derefType(clipCullMember->getType(), 0);
clipCullMember = intermediate.addIndex(EOpIndexDirect, clipCullMember,
intermediate.addConstantUnion(clipCullArrayPos++, loc), loc);
clipCullMember->setType(derefType);
// If implicitly arrayed, there is an outer array dimension involved
if (isImplicitlyArrayed)
clipCullMember = addIndex(clipCullMember, clipCullOuterArrayPos);
// Index into proper array position for clip cull member
clipCullMember = addIndex(clipCullMember, clipCullInnerArrayPos++);
// if needed, start over with next outer array slice.
if (isImplicitlyArrayed && clipCullInnerArrayPos >= clipCullInnerArraySize) {
clipCullInnerArrayPos = semanticOffset[semanticId];
++clipCullOuterArrayPos;
}
// internal member to read from / write to:
TIntermTyped* internalMember = internalNode;
// If internal node has outer array dimension, index appropriately.
if (internalArrayDims > 1)
internalMember = addIndex(internalMember, internalOuterArrayPos);
// If internal node has inner array dimension, index appropriately.
if (internalArrayDims > 0)
internalMember = addIndex(internalMember, internalInnerArrayPos);
// If internal node is a vector, extract the component of interest.
if (internalNode->getType().isVector())
internalMember = addIndex(internalMember, internalComponent);
// Create an assignment: output from internal to clip cull, or input from clip cull to internal.
if (isOutput)
clipCullAssign = intermediate.addAssign(op, clipCullMember, internalMember, loc);
else
clipCullAssign = intermediate.addAssign(op, internalMember, clipCullMember, loc);
// Track assignment in the sequence.
assignList = intermediate.growAggregate(assignList, clipCullAssign);
}
TIntermTyped* internalMember = internalNode;
// If internal node is an array, extract the element of interest
if (internalNode->getType().isArray()) {
const TType derefType(internalMember->getType(), 0);
internalMember = intermediate.addIndex(EOpIndexDirect, internalMember,
intermediate.addConstantUnion(internalArrayPos, loc), loc);
internalMember->setType(derefType);
}
// If internal node is a vector, extract the component of interest.
if (internalNode->getType().isVector()) {
const TType derefType(internalMember->getType(), 0);
internalMember = intermediate.addIndex(EOpIndexDirect, internalMember,
intermediate.addConstantUnion(internalComponent, loc), loc);
internalMember->setType(derefType);
}
// Create an assignment: output from internal to clip cull, or input from clip cull to internal.
if (isOutput)
clipCullAssign = intermediate.addAssign(op, clipCullMember, internalMember, loc);
else
clipCullAssign = intermediate.addAssign(op, internalMember, clipCullMember, loc);
// Track assignment in the sequence.
assignList = intermediate.growAggregate(assignList, clipCullAssign);
}
}

View File

@ -435,12 +435,16 @@ protected:
TVariable* gsStreamOutput; // geometry shader stream outputs, for emit (Append method)
TVariable* clipDistanceVariable; // synthesized clip distance variable (shader might have >1)
TVariable* cullDistanceVariable; // synthesized cull distance variable (shader might have >1)
TVariable* clipDistanceOutput; // synthesized clip distance out variable (shader might have >1)
TVariable* cullDistanceOutput; // synthesized cull distance out variable (shader might have >1)
TVariable* clipDistanceInput; // synthesized clip distance in variable (shader might have >1)
TVariable* cullDistanceInput; // synthesized cull distance in variable (shader might have >1)
static const int maxClipCullRegs = 2;
std::array<int, maxClipCullRegs> clipSemanticNSize; // vector, indexed by clip semantic ID
std::array<int, maxClipCullRegs> cullSemanticNSize; // vector, indexed by cull semantic ID
std::array<int, maxClipCullRegs> clipSemanticNSizeIn; // vector, indexed by clip semantic ID
std::array<int, maxClipCullRegs> cullSemanticNSizeIn; // vector, indexed by cull semantic ID
std::array<int, maxClipCullRegs> clipSemanticNSizeOut; // vector, indexed by clip semantic ID
std::array<int, maxClipCullRegs> cullSemanticNSizeOut; // vector, indexed by cull semantic ID
// This tracks the first (mip level) argument to the .mips[][] operator. Since this can be nested as
// in tx.mips[tx.mips[0][1].x][2], we need a stack. We also track the TSourceLoc for error reporting