diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index 6e6f76afa2eec0f40f555c0db75ffce4e4bce6af..7397c6f2af493a7399a3dcfad6c4ea91efb52474 100755 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -5,178 +5,231 @@ gl_FragCoord origin is upper left 0:8 Function Definition: vectorCond( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence -0:11 Branch: Return with expression -0:10 add ( temp 4-component vector of float) -0:9 add ( temp 4-component vector of float) -0:9 mix ( temp 4-component vector of float) -0:9 f4: direct index for structure ( uniform 4-component vector of float) -0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:9 Constant: -0:9 2 (const uint) -0:9 t4: direct index for structure ( uniform 4-component vector of float) -0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:9 Constant: -0:9 1 (const uint) -0:9 Convert float to bool ( temp 4-component vector of bool) -0:9 c4: direct index for structure ( uniform 4-component vector of float) +0:12 Branch: Return with expression +0:11 add ( temp 4-component vector of float) +0:10 add ( temp 4-component vector of float) +0:9 add ( temp 4-component vector of float) +0:9 mix ( temp 4-component vector of float) +0:9 f4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: -0:9 0 (const uint) -0:10 mix ( temp 4-component vector of float) -0:10 Construct vec4 ( temp 4-component vector of float) -0:10 f: direct index for structure ( uniform float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:10 Constant: -0:10 4 (const uint) -0:10 Construct vec4 ( temp 4-component vector of float) -0:10 t: direct index for structure ( uniform float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:10 Constant: -0:10 3 (const uint) -0:10 Convert float to bool ( temp 4-component vector of bool) -0:10 c4: direct index for structure ( uniform 4-component vector of float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:10 Constant: -0:10 0 (const uint) -0:11 mix ( temp 4-component vector of float) -0:11 f4: direct index for structure ( uniform 4-component vector of float) -0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:11 Constant: -0:11 2 (const uint) -0:11 t4: direct index for structure ( uniform 4-component vector of float) -0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:11 Constant: -0:11 1 (const uint) -0:11 Compare Less Than ( temp 4-component vector of bool) -0:11 t4: direct index for structure ( uniform 4-component vector of float) -0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:11 Constant: -0:11 1 (const uint) +0:9 2 (const uint) +0:9 t4: direct index for structure ( uniform 4-component vector of float) +0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:9 Constant: +0:9 1 (const uint) +0:9 Convert float to bool ( temp 4-component vector of bool) +0:9 c4: direct index for structure ( uniform 4-component vector of float) +0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:9 Constant: +0:9 0 (const uint) +0:10 mix ( temp 4-component vector of float) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 f: direct index for structure ( uniform float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:10 Constant: +0:10 4 (const uint) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 t: direct index for structure ( uniform float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:10 Constant: +0:10 3 (const uint) +0:10 Convert float to bool ( temp 4-component vector of bool) +0:10 c4: direct index for structure ( uniform 4-component vector of float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:10 Constant: +0:10 0 (const uint) +0:11 mix ( temp 4-component vector of float) 0:11 f4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 2 (const uint) -0:15 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) -0:15 Function Parameters: -0:15 'cnd' ( in 2-component vector of bool) -0:15 'src0' ( in 2-component vector of float) -0:15 'src1' ( in 2-component vector of float) +0:11 t4: direct index for structure ( uniform 4-component vector of float) +0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:11 Constant: +0:11 1 (const uint) +0:11 Compare Less Than ( temp 4-component vector of bool) +0:11 t4: direct index for structure ( uniform 4-component vector of float) +0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:11 Constant: +0:11 1 (const uint) +0:11 f4: direct index for structure ( uniform 4-component vector of float) +0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:11 Constant: +0:11 2 (const uint) +0:12 mix ( temp 4-component vector of float) +0:12 f4: direct index for structure ( uniform 4-component vector of float) +0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:12 Constant: +0:12 2 (const uint) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 t: direct index for structure ( uniform float) +0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:12 Constant: +0:12 3 (const uint) +0:12 Convert float to bool ( temp 4-component vector of bool) +0:12 c4: direct index for structure ( uniform 4-component vector of float) +0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:12 Constant: +0:12 0 (const uint) +0:16 Function Definition: scalarCond( ( temp 4-component vector of float) +0:16 Function Parameters: 0:? Sequence -0:16 Branch: Return with expression -0:16 mix ( temp 2-component vector of float) -0:16 'src1' ( in 2-component vector of float) -0:16 'src0' ( in 2-component vector of float) -0:16 'cnd' ( in 2-component vector of bool) -0:20 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:20 Function Parameters: -0:20 'input' ( in 4-component vector of float) +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'ret' ( temp 4-component vector of float) +0:17 Test condition and select ( temp 4-component vector of float) +0:17 Condition +0:17 Compare Not Equal ( temp bool) +0:17 t: direct index for structure ( uniform float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 3 (const uint) +0:17 f: direct index for structure ( uniform float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 4 (const uint) +0:17 true case +0:17 vector-scale ( temp 4-component vector of float) +0:17 t: direct index for structure ( uniform float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 3 (const uint) +0:17 f4: direct index for structure ( uniform 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 2 (const uint) +0:17 false case +0:17 Constant: +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:18 Branch: Return with expression +0:18 'ret' ( temp 4-component vector of float) +0:22 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:22 Function Parameters: +0:22 'cnd' ( in 2-component vector of bool) +0:22 'src0' ( in 2-component vector of float) +0:22 'src1' ( in 2-component vector of float) 0:? Sequence -0:21 Sequence -0:21 move second child to first child ( temp int) -0:21 'a' ( temp int) -0:21 Constant: -0:21 5 (const int) -0:22 Sequence -0:22 move second child to first child ( temp int) -0:22 'b' ( temp int) -0:22 Constant: -0:22 6 (const int) -0:23 Sequence -0:23 move second child to first child ( temp int) -0:23 'c' ( temp int) -0:23 Constant: -0:23 7 (const int) -0:24 Sequence -0:24 move second child to first child ( temp int) -0:24 'd' ( temp int) -0:24 Constant: -0:24 7 (const int) -0:25 Sequence -0:25 move second child to first child ( temp 4-component vector of float) -0:25 'ret' ( temp 4-component vector of float) -0:27 add ( temp 4-component vector of float) -0:26 add ( temp 4-component vector of float) -0:25 add ( temp 4-component vector of float) -0:25 vector-scale ( temp 4-component vector of float) -0:25 Convert int to float ( temp float) -0:25 'a' ( temp int) -0:25 'input' ( in 4-component vector of float) -0:26 vector-scale ( temp 4-component vector of float) -0:26 Convert int to float ( temp float) -0:26 'b' ( temp int) -0:26 'input' ( in 4-component vector of float) -0:27 vector-scale ( temp 4-component vector of float) -0:27 Convert int to float ( temp float) -0:27 'c' ( temp int) -0:27 'input' ( in 4-component vector of float) -0:28 vector-scale ( temp 4-component vector of float) -0:28 Convert int to float ( temp float) -0:28 'd' ( temp int) -0:28 'input' ( in 4-component vector of float) -0:30 Comma ( temp int) -0:30 move second child to first child ( temp int) -0:30 'e' ( temp int) -0:30 move second child to first child ( temp int) -0:30 'a' ( temp int) -0:30 Test condition and select ( temp int) -0:30 Condition -0:30 Convert int to bool ( temp bool) -0:30 'b' ( temp int) -0:30 true case -0:30 move second child to first child ( temp int) -0:30 'c' ( temp int) -0:30 'd' ( temp int) -0:30 false case -0:30 Constant: -0:30 10 (const int) +0:23 Branch: Return with expression +0:23 mix ( temp 2-component vector of float) +0:23 'src1' ( in 2-component vector of float) +0:23 'src0' ( in 2-component vector of float) +0:23 'cnd' ( in 2-component vector of bool) +0:27 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:27 Function Parameters: +0:27 'input' ( in 4-component vector of float) +0:? Sequence +0:28 Sequence +0:28 move second child to first child ( temp int) +0:28 'a' ( temp int) +0:28 Constant: +0:28 5 (const int) +0:29 Sequence +0:29 move second child to first child ( temp int) +0:29 'b' ( temp int) +0:29 Constant: +0:29 6 (const int) +0:30 Sequence 0:30 move second child to first child ( temp int) -0:30 'b' ( temp int) -0:30 Test condition and select ( temp int) -0:30 Condition -0:30 Convert int to bool ( temp bool) -0:30 'a' ( temp int) -0:30 true case -0:30 move second child to first child ( temp int) -0:30 'd' ( temp int) -0:30 'c' ( temp int) -0:30 false case -0:30 Constant: -0:30 11 (const int) -0:32 move second child to first child ( temp 4-component vector of float) -0:32 'f' ( temp 4-component vector of float) -0:32 Test condition and select ( temp 4-component vector of float) -0:32 Condition -0:32 Compare Less Than ( temp bool) -0:32 direct index ( temp float) -0:32 'ret' ( temp 4-component vector of float) -0:32 Constant: -0:32 0 (const int) -0:32 direct index ( temp float) -0:32 'input' ( in 4-component vector of float) -0:32 Constant: -0:32 1 (const int) -0:32 true case -0:32 vector-scale ( temp 4-component vector of float) -0:32 Convert int to float ( temp float) -0:32 'c' ( temp int) -0:32 'input' ( in 4-component vector of float) -0:32 false case -0:32 vector-scale ( temp 4-component vector of float) -0:32 Convert int to float ( temp float) -0:32 'd' ( temp int) -0:32 'input' ( in 4-component vector of float) -0:34 Branch: Return with expression -0:33 add ( temp 4-component vector of float) -0:33 add ( temp 4-component vector of float) +0:30 'c' ( temp int) +0:30 Constant: +0:30 7 (const int) +0:31 Sequence +0:31 move second child to first child ( temp int) +0:31 'd' ( temp int) +0:31 Constant: +0:31 7 (const int) +0:32 Sequence +0:32 move second child to first child ( temp 4-component vector of float) +0:32 'ret' ( temp 4-component vector of float) +0:34 add ( temp 4-component vector of float) 0:33 add ( temp 4-component vector of float) -0:33 vector-scale ( temp 4-component vector of float) -0:33 Convert int to float ( temp float) -0:33 'e' ( temp int) -0:33 'ret' ( temp 4-component vector of float) -0:33 'f' ( temp 4-component vector of float) -0:33 Function Call: vectorCond( ( temp 4-component vector of float) +0:32 add ( temp 4-component vector of float) +0:32 vector-scale ( temp 4-component vector of float) +0:32 Convert int to float ( temp float) +0:32 'a' ( temp int) +0:32 'input' ( in 4-component vector of float) +0:33 vector-scale ( temp 4-component vector of float) +0:33 Convert int to float ( temp float) +0:33 'b' ( temp int) +0:33 'input' ( in 4-component vector of float) +0:34 vector-scale ( temp 4-component vector of float) +0:34 Convert int to float ( temp float) +0:34 'c' ( temp int) +0:34 'input' ( in 4-component vector of float) +0:35 vector-scale ( temp 4-component vector of float) +0:35 Convert int to float ( temp float) +0:35 'd' ( temp int) +0:35 'input' ( in 4-component vector of float) +0:37 Comma ( temp int) +0:37 move second child to first child ( temp int) +0:37 'e' ( temp int) +0:37 move second child to first child ( temp int) +0:37 'a' ( temp int) +0:37 Test condition and select ( temp int) +0:37 Condition +0:37 Convert int to bool ( temp bool) +0:37 'b' ( temp int) +0:37 true case +0:37 move second child to first child ( temp int) +0:37 'c' ( temp int) +0:37 'd' ( temp int) +0:37 false case +0:37 Constant: +0:37 10 (const int) +0:37 move second child to first child ( temp int) +0:37 'b' ( temp int) +0:37 Test condition and select ( temp int) +0:37 Condition +0:37 Convert int to bool ( temp bool) +0:37 'a' ( temp int) +0:37 true case +0:37 move second child to first child ( temp int) +0:37 'd' ( temp int) +0:37 'c' ( temp int) +0:37 false case +0:37 Constant: +0:37 11 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 'f' ( temp 4-component vector of float) +0:39 Test condition and select ( temp 4-component vector of float) +0:39 Condition +0:39 Compare Less Than ( temp bool) +0:39 direct index ( temp float) +0:39 'ret' ( temp 4-component vector of float) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( temp float) +0:39 'input' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const int) +0:39 true case +0:39 vector-scale ( temp 4-component vector of float) +0:39 Convert int to float ( temp float) +0:39 'c' ( temp int) +0:39 'input' ( in 4-component vector of float) +0:39 false case +0:39 vector-scale ( temp 4-component vector of float) +0:39 Convert int to float ( temp float) +0:39 'd' ( temp int) +0:39 'input' ( in 4-component vector of float) +0:41 Branch: Return with expression +0:40 add ( temp 4-component vector of float) +0:40 add ( temp 4-component vector of float) +0:40 add ( temp 4-component vector of float) +0:40 add ( temp 4-component vector of float) +0:40 vector-scale ( temp 4-component vector of float) +0:40 Convert int to float ( temp float) +0:40 'e' ( temp int) +0:40 'ret' ( temp 4-component vector of float) +0:40 'f' ( temp 4-component vector of float) +0:40 Function Call: vectorCond( ( temp 4-component vector of float) +0:40 Function Call: scalarCond( ( temp 4-component vector of float) 0:? Construct vec4 ( temp 4-component vector of float) -0:34 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) 0:? Constant: 0:? true (const bool) 0:? false (const bool) @@ -186,19 +239,19 @@ gl_FragCoord origin is upper left 0:? Constant: 0:? 3.000000 0:? 4.000000 -0:34 Constant: -0:34 10.000000 -0:34 Constant: -0:34 10.000000 -0:20 Function Definition: PixelShaderFunction( ( temp void) -0:20 Function Parameters: +0:41 Constant: +0:41 10.000000 +0:41 Constant: +0:41 10.000000 +0:27 Function Definition: PixelShaderFunction( ( temp void) +0:27 Function Parameters: 0:? Sequence -0:20 move second child to first child ( temp 4-component vector of float) +0:27 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) -0:20 move second child to first child ( temp 4-component vector of float) +0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:20 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:27 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) @@ -215,178 +268,231 @@ gl_FragCoord origin is upper left 0:8 Function Definition: vectorCond( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence -0:11 Branch: Return with expression -0:10 add ( temp 4-component vector of float) -0:9 add ( temp 4-component vector of float) -0:9 mix ( temp 4-component vector of float) -0:9 f4: direct index for structure ( uniform 4-component vector of float) -0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:9 Constant: -0:9 2 (const uint) -0:9 t4: direct index for structure ( uniform 4-component vector of float) -0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:9 Constant: -0:9 1 (const uint) -0:9 Convert float to bool ( temp 4-component vector of bool) -0:9 c4: direct index for structure ( uniform 4-component vector of float) +0:12 Branch: Return with expression +0:11 add ( temp 4-component vector of float) +0:10 add ( temp 4-component vector of float) +0:9 add ( temp 4-component vector of float) +0:9 mix ( temp 4-component vector of float) +0:9 f4: direct index for structure ( uniform 4-component vector of float) 0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:9 Constant: -0:9 0 (const uint) -0:10 mix ( temp 4-component vector of float) -0:10 Construct vec4 ( temp 4-component vector of float) -0:10 f: direct index for structure ( uniform float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:10 Constant: -0:10 4 (const uint) -0:10 Construct vec4 ( temp 4-component vector of float) -0:10 t: direct index for structure ( uniform float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:10 Constant: -0:10 3 (const uint) -0:10 Convert float to bool ( temp 4-component vector of bool) -0:10 c4: direct index for structure ( uniform 4-component vector of float) -0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:10 Constant: -0:10 0 (const uint) -0:11 mix ( temp 4-component vector of float) -0:11 f4: direct index for structure ( uniform 4-component vector of float) -0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:11 Constant: -0:11 2 (const uint) -0:11 t4: direct index for structure ( uniform 4-component vector of float) -0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:11 Constant: -0:11 1 (const uint) -0:11 Compare Less Than ( temp 4-component vector of bool) -0:11 t4: direct index for structure ( uniform 4-component vector of float) -0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) -0:11 Constant: -0:11 1 (const uint) +0:9 2 (const uint) +0:9 t4: direct index for structure ( uniform 4-component vector of float) +0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:9 Constant: +0:9 1 (const uint) +0:9 Convert float to bool ( temp 4-component vector of bool) +0:9 c4: direct index for structure ( uniform 4-component vector of float) +0:9 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:9 Constant: +0:9 0 (const uint) +0:10 mix ( temp 4-component vector of float) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 f: direct index for structure ( uniform float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:10 Constant: +0:10 4 (const uint) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 t: direct index for structure ( uniform float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:10 Constant: +0:10 3 (const uint) +0:10 Convert float to bool ( temp 4-component vector of bool) +0:10 c4: direct index for structure ( uniform 4-component vector of float) +0:10 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:10 Constant: +0:10 0 (const uint) +0:11 mix ( temp 4-component vector of float) 0:11 f4: direct index for structure ( uniform 4-component vector of float) 0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) 0:11 Constant: 0:11 2 (const uint) -0:15 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) -0:15 Function Parameters: -0:15 'cnd' ( in 2-component vector of bool) -0:15 'src0' ( in 2-component vector of float) -0:15 'src1' ( in 2-component vector of float) +0:11 t4: direct index for structure ( uniform 4-component vector of float) +0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:11 Constant: +0:11 1 (const uint) +0:11 Compare Less Than ( temp 4-component vector of bool) +0:11 t4: direct index for structure ( uniform 4-component vector of float) +0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:11 Constant: +0:11 1 (const uint) +0:11 f4: direct index for structure ( uniform 4-component vector of float) +0:11 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:11 Constant: +0:11 2 (const uint) +0:12 mix ( temp 4-component vector of float) +0:12 f4: direct index for structure ( uniform 4-component vector of float) +0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:12 Constant: +0:12 2 (const uint) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 t: direct index for structure ( uniform float) +0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:12 Constant: +0:12 3 (const uint) +0:12 Convert float to bool ( temp 4-component vector of bool) +0:12 c4: direct index for structure ( uniform 4-component vector of float) +0:12 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:12 Constant: +0:12 0 (const uint) +0:16 Function Definition: scalarCond( ( temp 4-component vector of float) +0:16 Function Parameters: 0:? Sequence -0:16 Branch: Return with expression -0:16 mix ( temp 2-component vector of float) -0:16 'src1' ( in 2-component vector of float) -0:16 'src0' ( in 2-component vector of float) -0:16 'cnd' ( in 2-component vector of bool) -0:20 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:20 Function Parameters: -0:20 'input' ( in 4-component vector of float) +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'ret' ( temp 4-component vector of float) +0:17 Test condition and select ( temp 4-component vector of float) +0:17 Condition +0:17 Compare Not Equal ( temp bool) +0:17 t: direct index for structure ( uniform float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 3 (const uint) +0:17 f: direct index for structure ( uniform float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 4 (const uint) +0:17 true case +0:17 vector-scale ( temp 4-component vector of float) +0:17 t: direct index for structure ( uniform float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 3 (const uint) +0:17 f4: direct index for structure ( uniform 4-component vector of float) +0:17 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) +0:17 Constant: +0:17 2 (const uint) +0:17 false case +0:17 Constant: +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:17 1.000000 +0:18 Branch: Return with expression +0:18 'ret' ( temp 4-component vector of float) +0:22 Function Definition: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:22 Function Parameters: +0:22 'cnd' ( in 2-component vector of bool) +0:22 'src0' ( in 2-component vector of float) +0:22 'src1' ( in 2-component vector of float) 0:? Sequence -0:21 Sequence -0:21 move second child to first child ( temp int) -0:21 'a' ( temp int) -0:21 Constant: -0:21 5 (const int) -0:22 Sequence -0:22 move second child to first child ( temp int) -0:22 'b' ( temp int) -0:22 Constant: -0:22 6 (const int) -0:23 Sequence -0:23 move second child to first child ( temp int) -0:23 'c' ( temp int) -0:23 Constant: -0:23 7 (const int) -0:24 Sequence -0:24 move second child to first child ( temp int) -0:24 'd' ( temp int) -0:24 Constant: -0:24 7 (const int) -0:25 Sequence -0:25 move second child to first child ( temp 4-component vector of float) -0:25 'ret' ( temp 4-component vector of float) -0:27 add ( temp 4-component vector of float) -0:26 add ( temp 4-component vector of float) -0:25 add ( temp 4-component vector of float) -0:25 vector-scale ( temp 4-component vector of float) -0:25 Convert int to float ( temp float) -0:25 'a' ( temp int) -0:25 'input' ( in 4-component vector of float) -0:26 vector-scale ( temp 4-component vector of float) -0:26 Convert int to float ( temp float) -0:26 'b' ( temp int) -0:26 'input' ( in 4-component vector of float) -0:27 vector-scale ( temp 4-component vector of float) -0:27 Convert int to float ( temp float) -0:27 'c' ( temp int) -0:27 'input' ( in 4-component vector of float) -0:28 vector-scale ( temp 4-component vector of float) -0:28 Convert int to float ( temp float) -0:28 'd' ( temp int) -0:28 'input' ( in 4-component vector of float) -0:30 Comma ( temp int) -0:30 move second child to first child ( temp int) -0:30 'e' ( temp int) -0:30 move second child to first child ( temp int) -0:30 'a' ( temp int) -0:30 Test condition and select ( temp int) -0:30 Condition -0:30 Convert int to bool ( temp bool) -0:30 'b' ( temp int) -0:30 true case -0:30 move second child to first child ( temp int) -0:30 'c' ( temp int) -0:30 'd' ( temp int) -0:30 false case -0:30 Constant: -0:30 10 (const int) +0:23 Branch: Return with expression +0:23 mix ( temp 2-component vector of float) +0:23 'src1' ( in 2-component vector of float) +0:23 'src0' ( in 2-component vector of float) +0:23 'cnd' ( in 2-component vector of bool) +0:27 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:27 Function Parameters: +0:27 'input' ( in 4-component vector of float) +0:? Sequence +0:28 Sequence +0:28 move second child to first child ( temp int) +0:28 'a' ( temp int) +0:28 Constant: +0:28 5 (const int) +0:29 Sequence +0:29 move second child to first child ( temp int) +0:29 'b' ( temp int) +0:29 Constant: +0:29 6 (const int) +0:30 Sequence 0:30 move second child to first child ( temp int) -0:30 'b' ( temp int) -0:30 Test condition and select ( temp int) -0:30 Condition -0:30 Convert int to bool ( temp bool) -0:30 'a' ( temp int) -0:30 true case -0:30 move second child to first child ( temp int) -0:30 'd' ( temp int) -0:30 'c' ( temp int) -0:30 false case -0:30 Constant: -0:30 11 (const int) -0:32 move second child to first child ( temp 4-component vector of float) -0:32 'f' ( temp 4-component vector of float) -0:32 Test condition and select ( temp 4-component vector of float) -0:32 Condition -0:32 Compare Less Than ( temp bool) -0:32 direct index ( temp float) -0:32 'ret' ( temp 4-component vector of float) -0:32 Constant: -0:32 0 (const int) -0:32 direct index ( temp float) -0:32 'input' ( in 4-component vector of float) -0:32 Constant: -0:32 1 (const int) -0:32 true case -0:32 vector-scale ( temp 4-component vector of float) -0:32 Convert int to float ( temp float) -0:32 'c' ( temp int) -0:32 'input' ( in 4-component vector of float) -0:32 false case -0:32 vector-scale ( temp 4-component vector of float) -0:32 Convert int to float ( temp float) -0:32 'd' ( temp int) -0:32 'input' ( in 4-component vector of float) -0:34 Branch: Return with expression -0:33 add ( temp 4-component vector of float) -0:33 add ( temp 4-component vector of float) +0:30 'c' ( temp int) +0:30 Constant: +0:30 7 (const int) +0:31 Sequence +0:31 move second child to first child ( temp int) +0:31 'd' ( temp int) +0:31 Constant: +0:31 7 (const int) +0:32 Sequence +0:32 move second child to first child ( temp 4-component vector of float) +0:32 'ret' ( temp 4-component vector of float) +0:34 add ( temp 4-component vector of float) 0:33 add ( temp 4-component vector of float) -0:33 vector-scale ( temp 4-component vector of float) -0:33 Convert int to float ( temp float) -0:33 'e' ( temp int) -0:33 'ret' ( temp 4-component vector of float) -0:33 'f' ( temp 4-component vector of float) -0:33 Function Call: vectorCond( ( temp 4-component vector of float) +0:32 add ( temp 4-component vector of float) +0:32 vector-scale ( temp 4-component vector of float) +0:32 Convert int to float ( temp float) +0:32 'a' ( temp int) +0:32 'input' ( in 4-component vector of float) +0:33 vector-scale ( temp 4-component vector of float) +0:33 Convert int to float ( temp float) +0:33 'b' ( temp int) +0:33 'input' ( in 4-component vector of float) +0:34 vector-scale ( temp 4-component vector of float) +0:34 Convert int to float ( temp float) +0:34 'c' ( temp int) +0:34 'input' ( in 4-component vector of float) +0:35 vector-scale ( temp 4-component vector of float) +0:35 Convert int to float ( temp float) +0:35 'd' ( temp int) +0:35 'input' ( in 4-component vector of float) +0:37 Comma ( temp int) +0:37 move second child to first child ( temp int) +0:37 'e' ( temp int) +0:37 move second child to first child ( temp int) +0:37 'a' ( temp int) +0:37 Test condition and select ( temp int) +0:37 Condition +0:37 Convert int to bool ( temp bool) +0:37 'b' ( temp int) +0:37 true case +0:37 move second child to first child ( temp int) +0:37 'c' ( temp int) +0:37 'd' ( temp int) +0:37 false case +0:37 Constant: +0:37 10 (const int) +0:37 move second child to first child ( temp int) +0:37 'b' ( temp int) +0:37 Test condition and select ( temp int) +0:37 Condition +0:37 Convert int to bool ( temp bool) +0:37 'a' ( temp int) +0:37 true case +0:37 move second child to first child ( temp int) +0:37 'd' ( temp int) +0:37 'c' ( temp int) +0:37 false case +0:37 Constant: +0:37 11 (const int) +0:39 move second child to first child ( temp 4-component vector of float) +0:39 'f' ( temp 4-component vector of float) +0:39 Test condition and select ( temp 4-component vector of float) +0:39 Condition +0:39 Compare Less Than ( temp bool) +0:39 direct index ( temp float) +0:39 'ret' ( temp 4-component vector of float) +0:39 Constant: +0:39 0 (const int) +0:39 direct index ( temp float) +0:39 'input' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const int) +0:39 true case +0:39 vector-scale ( temp 4-component vector of float) +0:39 Convert int to float ( temp float) +0:39 'c' ( temp int) +0:39 'input' ( in 4-component vector of float) +0:39 false case +0:39 vector-scale ( temp 4-component vector of float) +0:39 Convert int to float ( temp float) +0:39 'd' ( temp int) +0:39 'input' ( in 4-component vector of float) +0:41 Branch: Return with expression +0:40 add ( temp 4-component vector of float) +0:40 add ( temp 4-component vector of float) +0:40 add ( temp 4-component vector of float) +0:40 add ( temp 4-component vector of float) +0:40 vector-scale ( temp 4-component vector of float) +0:40 Convert int to float ( temp float) +0:40 'e' ( temp int) +0:40 'ret' ( temp 4-component vector of float) +0:40 'f' ( temp 4-component vector of float) +0:40 Function Call: vectorCond( ( temp 4-component vector of float) +0:40 Function Call: scalarCond( ( temp 4-component vector of float) 0:? Construct vec4 ( temp 4-component vector of float) -0:34 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) 0:? Constant: 0:? true (const bool) 0:? false (const bool) @@ -396,19 +502,19 @@ gl_FragCoord origin is upper left 0:? Constant: 0:? 3.000000 0:? 4.000000 -0:34 Constant: -0:34 10.000000 -0:34 Constant: -0:34 10.000000 -0:20 Function Definition: PixelShaderFunction( ( temp void) -0:20 Function Parameters: +0:41 Constant: +0:41 10.000000 +0:41 Constant: +0:41 10.000000 +0:27 Function Definition: PixelShaderFunction( ( temp void) +0:27 Function Parameters: 0:? Sequence -0:20 move second child to first child ( temp 4-component vector of float) +0:27 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) -0:20 move second child to first child ( temp 4-component vector of float) +0:27 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:20 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:27 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float c4, uniform 4-component vector of float t4, uniform 4-component vector of float f4, uniform float t, uniform float f}) @@ -417,270 +523,313 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 186 +// Id's are bound by 220 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 179 182 + EntryPoint Fragment 4 "PixelShaderFunction" 213 216 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 9 "vectorCond(" - Name 20 "fbSelect(vb2;vf2;vf2;" - Name 17 "cnd" - Name 18 "src0" - Name 19 "src1" - Name 25 "@PixelShaderFunction(vf4;" - Name 24 "input" - Name 27 "$Global" - MemberName 27($Global) 0 "c4" - MemberName 27($Global) 1 "t4" - MemberName 27($Global) 2 "f4" - MemberName 27($Global) 3 "t" - MemberName 27($Global) 4 "f" - Name 29 "" - Name 80 "a" - Name 82 "b" - Name 84 "c" - Name 86 "d" - Name 87 "ret" - Name 107 "e" - Name 128 "f" - Name 166 "param" - Name 167 "param" - Name 168 "param" - Name 177 "input" - Name 179 "input" - Name 182 "@entryPointOutput" - Name 183 "param" - MemberDecorate 27($Global) 0 Offset 0 - MemberDecorate 27($Global) 1 Offset 16 - MemberDecorate 27($Global) 2 Offset 32 - MemberDecorate 27($Global) 3 Offset 48 - MemberDecorate 27($Global) 4 Offset 52 - Decorate 27($Global) Block - Decorate 29 DescriptorSet 0 - Decorate 179(input) Location 0 - Decorate 182(@entryPointOutput) Location 0 + Name 11 "scalarCond(" + Name 22 "fbSelect(vb2;vf2;vf2;" + Name 19 "cnd" + Name 20 "src0" + Name 21 "src1" + Name 27 "@PixelShaderFunction(vf4;" + Name 26 "input" + Name 29 "$Global" + MemberName 29($Global) 0 "c4" + MemberName 29($Global) 1 "t4" + MemberName 29($Global) 2 "f4" + MemberName 29($Global) 3 "t" + MemberName 29($Global) 4 "f" + Name 31 "" + Name 85 "ret" + Name 113 "a" + Name 115 "b" + Name 117 "c" + Name 119 "d" + Name 120 "ret" + Name 140 "e" + Name 161 "f" + Name 200 "param" + Name 201 "param" + Name 202 "param" + Name 211 "input" + Name 213 "input" + Name 216 "@entryPointOutput" + Name 217 "param" + MemberDecorate 29($Global) 0 Offset 0 + MemberDecorate 29($Global) 1 Offset 16 + MemberDecorate 29($Global) 2 Offset 32 + MemberDecorate 29($Global) 3 Offset 48 + MemberDecorate 29($Global) 4 Offset 52 + Decorate 29($Global) Block + Decorate 31 DescriptorSet 0 + Decorate 213(input) Location 0 + Decorate 216(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) - 11: TypeBool - 12: TypeVector 11(bool) 2 - 13: TypePointer Function 12(bvec2) - 14: TypeVector 6(float) 2 - 15: TypePointer Function 14(fvec2) - 16: TypeFunction 14(fvec2) 13(ptr) 15(ptr) 15(ptr) - 22: TypePointer Function 7(fvec4) - 23: TypeFunction 7(fvec4) 22(ptr) - 27($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 6(float) 6(float) - 28: TypePointer Uniform 27($Global) - 29: 28(ptr) Variable Uniform - 30: TypeInt 32 1 - 31: 30(int) Constant 2 - 32: TypePointer Uniform 7(fvec4) - 35: 30(int) Constant 1 - 38: 30(int) Constant 0 - 41: TypeVector 11(bool) 4 - 42: 6(float) Constant 0 - 43: 7(fvec4) ConstantComposite 42 42 42 42 - 46: 30(int) Constant 4 - 47: TypePointer Uniform 6(float) - 51: 30(int) Constant 3 - 79: TypePointer Function 30(int) - 81: 30(int) Constant 5 - 83: 30(int) Constant 6 - 85: 30(int) Constant 7 - 110: TypeInt 32 0 - 111: 110(int) Constant 0 - 117: 30(int) Constant 10 - 126: 30(int) Constant 11 - 130: TypePointer Function 6(float) - 133: 110(int) Constant 1 - 157: 11(bool) ConstantTrue - 158: 11(bool) ConstantFalse - 159: 12(bvec2) ConstantComposite 157 158 - 160: 6(float) Constant 1065353216 - 161: 6(float) Constant 1073741824 - 162: 14(fvec2) ConstantComposite 160 161 - 163: 6(float) Constant 1077936128 - 164: 6(float) Constant 1082130432 - 165: 14(fvec2) ConstantComposite 163 164 - 170: 6(float) Constant 1092616192 - 178: TypePointer Input 7(fvec4) - 179(input): 178(ptr) Variable Input - 181: TypePointer Output 7(fvec4) -182(@entryPointOutput): 181(ptr) Variable Output + 13: TypeBool + 14: TypeVector 13(bool) 2 + 15: TypePointer Function 14(bvec2) + 16: TypeVector 6(float) 2 + 17: TypePointer Function 16(fvec2) + 18: TypeFunction 16(fvec2) 15(ptr) 17(ptr) 17(ptr) + 24: TypePointer Function 7(fvec4) + 25: TypeFunction 7(fvec4) 24(ptr) + 29($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 6(float) 6(float) + 30: TypePointer Uniform 29($Global) + 31: 30(ptr) Variable Uniform + 32: TypeInt 32 1 + 33: 32(int) Constant 2 + 34: TypePointer Uniform 7(fvec4) + 37: 32(int) Constant 1 + 40: 32(int) Constant 0 + 43: TypeVector 13(bool) 4 + 44: 6(float) Constant 0 + 45: 7(fvec4) ConstantComposite 44 44 44 44 + 48: 32(int) Constant 4 + 49: TypePointer Uniform 6(float) + 53: 32(int) Constant 3 + 100: 6(float) Constant 1065353216 + 101: 7(fvec4) ConstantComposite 100 100 100 100 + 112: TypePointer Function 32(int) + 114: 32(int) Constant 5 + 116: 32(int) Constant 6 + 118: 32(int) Constant 7 + 143: TypeInt 32 0 + 144: 143(int) Constant 0 + 150: 32(int) Constant 10 + 159: 32(int) Constant 11 + 163: TypePointer Function 6(float) + 166: 143(int) Constant 1 + 192: 13(bool) ConstantTrue + 193: 13(bool) ConstantFalse + 194: 14(bvec2) ConstantComposite 192 193 + 195: 6(float) Constant 1073741824 + 196: 16(fvec2) ConstantComposite 100 195 + 197: 6(float) Constant 1077936128 + 198: 6(float) Constant 1082130432 + 199: 16(fvec2) ConstantComposite 197 198 + 204: 6(float) Constant 1092616192 + 212: TypePointer Input 7(fvec4) + 213(input): 212(ptr) Variable Input + 215: TypePointer Output 7(fvec4) +216(@entryPointOutput): 215(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 177(input): 22(ptr) Variable Function - 183(param): 22(ptr) Variable Function - 180: 7(fvec4) Load 179(input) - Store 177(input) 180 - 184: 7(fvec4) Load 177(input) - Store 183(param) 184 - 185: 7(fvec4) FunctionCall 25(@PixelShaderFunction(vf4;) 183(param) - Store 182(@entryPointOutput) 185 + 211(input): 24(ptr) Variable Function + 217(param): 24(ptr) Variable Function + 214: 7(fvec4) Load 213(input) + Store 211(input) 214 + 218: 7(fvec4) Load 211(input) + Store 217(param) 218 + 219: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 217(param) + Store 216(@entryPointOutput) 219 Return FunctionEnd 9(vectorCond(): 7(fvec4) Function None 8 10: Label - 33: 32(ptr) AccessChain 29 31 - 34: 7(fvec4) Load 33 - 36: 32(ptr) AccessChain 29 35 - 37: 7(fvec4) Load 36 - 39: 32(ptr) AccessChain 29 38 - 40: 7(fvec4) Load 39 - 44: 41(bvec4) FOrdNotEqual 40 43 - 45: 7(fvec4) Select 44 37 34 - 48: 47(ptr) AccessChain 29 46 - 49: 6(float) Load 48 - 50: 7(fvec4) CompositeConstruct 49 49 49 49 - 52: 47(ptr) AccessChain 29 51 - 53: 6(float) Load 52 - 54: 7(fvec4) CompositeConstruct 53 53 53 53 - 55: 32(ptr) AccessChain 29 38 - 56: 7(fvec4) Load 55 - 57: 41(bvec4) FOrdNotEqual 56 43 - 58: 7(fvec4) Select 57 54 50 - 59: 7(fvec4) FAdd 45 58 - 60: 32(ptr) AccessChain 29 31 - 61: 7(fvec4) Load 60 - 62: 32(ptr) AccessChain 29 35 + 35: 34(ptr) AccessChain 31 33 + 36: 7(fvec4) Load 35 + 38: 34(ptr) AccessChain 31 37 + 39: 7(fvec4) Load 38 + 41: 34(ptr) AccessChain 31 40 + 42: 7(fvec4) Load 41 + 46: 43(bvec4) FOrdNotEqual 42 45 + 47: 7(fvec4) Select 46 39 36 + 50: 49(ptr) AccessChain 31 48 + 51: 6(float) Load 50 + 52: 7(fvec4) CompositeConstruct 51 51 51 51 + 54: 49(ptr) AccessChain 31 53 + 55: 6(float) Load 54 + 56: 7(fvec4) CompositeConstruct 55 55 55 55 + 57: 34(ptr) AccessChain 31 40 + 58: 7(fvec4) Load 57 + 59: 43(bvec4) FOrdNotEqual 58 45 + 60: 7(fvec4) Select 59 56 52 + 61: 7(fvec4) FAdd 47 60 + 62: 34(ptr) AccessChain 31 33 63: 7(fvec4) Load 62 - 64: 32(ptr) AccessChain 29 35 + 64: 34(ptr) AccessChain 31 37 65: 7(fvec4) Load 64 - 66: 32(ptr) AccessChain 29 31 + 66: 34(ptr) AccessChain 31 37 67: 7(fvec4) Load 66 - 68: 41(bvec4) FOrdLessThan 65 67 - 69: 7(fvec4) Select 68 63 61 - 70: 7(fvec4) FAdd 59 69 - ReturnValue 70 + 68: 34(ptr) AccessChain 31 33 + 69: 7(fvec4) Load 68 + 70: 43(bvec4) FOrdLessThan 67 69 + 71: 7(fvec4) Select 70 65 63 + 72: 7(fvec4) FAdd 61 71 + 73: 34(ptr) AccessChain 31 33 + 74: 7(fvec4) Load 73 + 75: 49(ptr) AccessChain 31 53 + 76: 6(float) Load 75 + 77: 7(fvec4) CompositeConstruct 76 76 76 76 + 78: 34(ptr) AccessChain 31 40 + 79: 7(fvec4) Load 78 + 80: 43(bvec4) FOrdNotEqual 79 45 + 81: 7(fvec4) Select 80 77 74 + 82: 7(fvec4) FAdd 72 81 + ReturnValue 82 + FunctionEnd + 11(scalarCond(): 7(fvec4) Function None 8 + 12: Label + 85(ret): 24(ptr) Variable Function + 86: 24(ptr) Variable Function + 87: 49(ptr) AccessChain 31 53 + 88: 6(float) Load 87 + 89: 49(ptr) AccessChain 31 48 + 90: 6(float) Load 89 + 91: 13(bool) FOrdNotEqual 88 90 + SelectionMerge 93 None + BranchConditional 91 92 99 + 92: Label + 94: 49(ptr) AccessChain 31 53 + 95: 6(float) Load 94 + 96: 34(ptr) AccessChain 31 33 + 97: 7(fvec4) Load 96 + 98: 7(fvec4) VectorTimesScalar 97 95 + Store 86 98 + Branch 93 + 99: Label + Store 86 101 + Branch 93 + 93: Label + 102: 7(fvec4) Load 86 + Store 85(ret) 102 + 103: 7(fvec4) Load 85(ret) + ReturnValue 103 FunctionEnd -20(fbSelect(vb2;vf2;vf2;): 14(fvec2) Function None 16 - 17(cnd): 13(ptr) FunctionParameter - 18(src0): 15(ptr) FunctionParameter - 19(src1): 15(ptr) FunctionParameter - 21: Label - 73: 14(fvec2) Load 19(src1) - 74: 14(fvec2) Load 18(src0) - 75: 12(bvec2) Load 17(cnd) - 76: 14(fvec2) Select 75 74 73 - ReturnValue 76 +22(fbSelect(vb2;vf2;vf2;): 16(fvec2) Function None 18 + 19(cnd): 15(ptr) FunctionParameter + 20(src0): 17(ptr) FunctionParameter + 21(src1): 17(ptr) FunctionParameter + 23: Label + 106: 16(fvec2) Load 21(src1) + 107: 16(fvec2) Load 20(src0) + 108: 14(bvec2) Load 19(cnd) + 109: 16(fvec2) Select 108 107 106 + ReturnValue 109 FunctionEnd -25(@PixelShaderFunction(vf4;): 7(fvec4) Function None 23 - 24(input): 22(ptr) FunctionParameter - 26: Label - 80(a): 79(ptr) Variable Function - 82(b): 79(ptr) Variable Function - 84(c): 79(ptr) Variable Function - 86(d): 79(ptr) Variable Function - 87(ret): 22(ptr) Variable Function - 107(e): 79(ptr) Variable Function - 108: 79(ptr) Variable Function - 119: 79(ptr) Variable Function - 128(f): 22(ptr) Variable Function - 129: 22(ptr) Variable Function - 166(param): 13(ptr) Variable Function - 167(param): 15(ptr) Variable Function - 168(param): 15(ptr) Variable Function - Store 80(a) 81 - Store 82(b) 83 - Store 84(c) 85 - Store 86(d) 85 - 88: 30(int) Load 80(a) - 89: 6(float) ConvertSToF 88 - 90: 7(fvec4) Load 24(input) - 91: 7(fvec4) VectorTimesScalar 90 89 - 92: 30(int) Load 82(b) - 93: 6(float) ConvertSToF 92 - 94: 7(fvec4) Load 24(input) - 95: 7(fvec4) VectorTimesScalar 94 93 - 96: 7(fvec4) FAdd 91 95 - 97: 30(int) Load 84(c) - 98: 6(float) ConvertSToF 97 - 99: 7(fvec4) Load 24(input) - 100: 7(fvec4) VectorTimesScalar 99 98 - 101: 7(fvec4) FAdd 96 100 - 102: 30(int) Load 86(d) - 103: 6(float) ConvertSToF 102 - 104: 7(fvec4) Load 24(input) - 105: 7(fvec4) VectorTimesScalar 104 103 - 106: 7(fvec4) FAdd 101 105 - Store 87(ret) 106 - 109: 30(int) Load 82(b) - 112: 11(bool) INotEqual 109 111 - SelectionMerge 114 None - BranchConditional 112 113 116 - 113: Label - 115: 30(int) Load 86(d) - Store 84(c) 115 - Store 108 115 - Branch 114 - 116: Label - Store 108 117 - Branch 114 - 114: Label - 118: 30(int) Load 108 - Store 80(a) 118 - Store 107(e) 118 - 120: 30(int) Load 80(a) - 121: 11(bool) INotEqual 120 111 - SelectionMerge 123 None - BranchConditional 121 122 125 - 122: Label - 124: 30(int) Load 84(c) - Store 86(d) 124 - Store 119 124 - Branch 123 - 125: Label - Store 119 126 - Branch 123 - 123: Label - 127: 30(int) Load 119 - Store 82(b) 127 - 131: 130(ptr) AccessChain 87(ret) 111 - 132: 6(float) Load 131 - 134: 130(ptr) AccessChain 24(input) 133 - 135: 6(float) Load 134 - 136: 11(bool) FOrdLessThan 132 135 - SelectionMerge 138 None - BranchConditional 136 137 143 - 137: Label - 139: 30(int) Load 84(c) - 140: 6(float) ConvertSToF 139 - 141: 7(fvec4) Load 24(input) - 142: 7(fvec4) VectorTimesScalar 141 140 - Store 129 142 - Branch 138 - 143: Label - 144: 30(int) Load 86(d) - 145: 6(float) ConvertSToF 144 - 146: 7(fvec4) Load 24(input) - 147: 7(fvec4) VectorTimesScalar 146 145 - Store 129 147 - Branch 138 - 138: Label - 148: 7(fvec4) Load 129 - Store 128(f) 148 - 149: 30(int) Load 107(e) - 150: 6(float) ConvertSToF 149 - 151: 7(fvec4) Load 87(ret) - 152: 7(fvec4) VectorTimesScalar 151 150 - 153: 7(fvec4) Load 128(f) - 154: 7(fvec4) FAdd 152 153 - 155: 7(fvec4) FunctionCall 9(vectorCond() - 156: 7(fvec4) FAdd 154 155 - Store 166(param) 159 - Store 167(param) 162 - Store 168(param) 165 - 169: 14(fvec2) FunctionCall 20(fbSelect(vb2;vf2;vf2;) 166(param) 167(param) 168(param) - 171: 6(float) CompositeExtract 169 0 - 172: 6(float) CompositeExtract 169 1 - 173: 7(fvec4) CompositeConstruct 171 172 170 170 - 174: 7(fvec4) FAdd 156 173 - ReturnValue 174 +27(@PixelShaderFunction(vf4;): 7(fvec4) Function None 25 + 26(input): 24(ptr) FunctionParameter + 28: Label + 113(a): 112(ptr) Variable Function + 115(b): 112(ptr) Variable Function + 117(c): 112(ptr) Variable Function + 119(d): 112(ptr) Variable Function + 120(ret): 24(ptr) Variable Function + 140(e): 112(ptr) Variable Function + 141: 112(ptr) Variable Function + 152: 112(ptr) Variable Function + 161(f): 24(ptr) Variable Function + 162: 24(ptr) Variable Function + 200(param): 15(ptr) Variable Function + 201(param): 17(ptr) Variable Function + 202(param): 17(ptr) Variable Function + Store 113(a) 114 + Store 115(b) 116 + Store 117(c) 118 + Store 119(d) 118 + 121: 32(int) Load 113(a) + 122: 6(float) ConvertSToF 121 + 123: 7(fvec4) Load 26(input) + 124: 7(fvec4) VectorTimesScalar 123 122 + 125: 32(int) Load 115(b) + 126: 6(float) ConvertSToF 125 + 127: 7(fvec4) Load 26(input) + 128: 7(fvec4) VectorTimesScalar 127 126 + 129: 7(fvec4) FAdd 124 128 + 130: 32(int) Load 117(c) + 131: 6(float) ConvertSToF 130 + 132: 7(fvec4) Load 26(input) + 133: 7(fvec4) VectorTimesScalar 132 131 + 134: 7(fvec4) FAdd 129 133 + 135: 32(int) Load 119(d) + 136: 6(float) ConvertSToF 135 + 137: 7(fvec4) Load 26(input) + 138: 7(fvec4) VectorTimesScalar 137 136 + 139: 7(fvec4) FAdd 134 138 + Store 120(ret) 139 + 142: 32(int) Load 115(b) + 145: 13(bool) INotEqual 142 144 + SelectionMerge 147 None + BranchConditional 145 146 149 + 146: Label + 148: 32(int) Load 119(d) + Store 117(c) 148 + Store 141 148 + Branch 147 + 149: Label + Store 141 150 + Branch 147 + 147: Label + 151: 32(int) Load 141 + Store 113(a) 151 + Store 140(e) 151 + 153: 32(int) Load 113(a) + 154: 13(bool) INotEqual 153 144 + SelectionMerge 156 None + BranchConditional 154 155 158 + 155: Label + 157: 32(int) Load 117(c) + Store 119(d) 157 + Store 152 157 + Branch 156 + 158: Label + Store 152 159 + Branch 156 + 156: Label + 160: 32(int) Load 152 + Store 115(b) 160 + 164: 163(ptr) AccessChain 120(ret) 144 + 165: 6(float) Load 164 + 167: 163(ptr) AccessChain 26(input) 166 + 168: 6(float) Load 167 + 169: 13(bool) FOrdLessThan 165 168 + SelectionMerge 171 None + BranchConditional 169 170 176 + 170: Label + 172: 32(int) Load 117(c) + 173: 6(float) ConvertSToF 172 + 174: 7(fvec4) Load 26(input) + 175: 7(fvec4) VectorTimesScalar 174 173 + Store 162 175 + Branch 171 + 176: Label + 177: 32(int) Load 119(d) + 178: 6(float) ConvertSToF 177 + 179: 7(fvec4) Load 26(input) + 180: 7(fvec4) VectorTimesScalar 179 178 + Store 162 180 + Branch 171 + 171: Label + 181: 7(fvec4) Load 162 + Store 161(f) 181 + 182: 32(int) Load 140(e) + 183: 6(float) ConvertSToF 182 + 184: 7(fvec4) Load 120(ret) + 185: 7(fvec4) VectorTimesScalar 184 183 + 186: 7(fvec4) Load 161(f) + 187: 7(fvec4) FAdd 185 186 + 188: 7(fvec4) FunctionCall 9(vectorCond() + 189: 7(fvec4) FAdd 187 188 + 190: 7(fvec4) FunctionCall 11(scalarCond() + 191: 7(fvec4) FAdd 189 190 + Store 200(param) 194 + Store 201(param) 196 + Store 202(param) 199 + 203: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 200(param) 201(param) 202(param) + 205: 6(float) CompositeExtract 203 0 + 206: 6(float) CompositeExtract 203 1 + 207: 7(fvec4) CompositeConstruct 205 206 204 204 + 208: 7(fvec4) FAdd 191 207 + ReturnValue 208 FunctionEnd diff --git a/Test/hlsl.conditional.frag b/Test/hlsl.conditional.frag index 8176d01ff67fa8e698f940681fff98fe34962f6a..91f75eec7fd2cc51f342eb6a02a8d651c435ef78 100644 --- a/Test/hlsl.conditional.frag +++ b/Test/hlsl.conditional.frag @@ -8,7 +8,14 @@ float4 vectorCond() { return (c4 ? t4 : f4) + (c4 ? t : f ) + - (t4 < f4 ? t4 : f4); + (t4 < f4 ? t4 : f4) + + (c4 ? t : f4); +} + +float4 scalarCond() +{ + float4 ret = t != f ? t * f4 : 1; + return ret; } float2 fbSelect(bool2 cnd, float2 src0, float2 src1) @@ -30,6 +37,6 @@ float4 PixelShaderFunction(float4 input) : COLOR0 e = a = b ? c = d : 10, b = a ? d = c : 11; float4 f; f = ret.x < input.y ? c * input : d * input; - return e * ret + f + vectorCond() + + return e * ret + f + vectorCond() + scalarCond() + float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0); } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 1d25692a481be8bc1b62fa0d644f9e56b63d36ae..2c54c5ebabdf2aecb79047989e8c34fd597d407b 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -836,6 +836,9 @@ TIntermTyped* TIntermediate::addUniShapeConversion(TOperator op, const TType& ty case EOpAssign: break; + case EOpMix: + break; + default: return node; } @@ -911,6 +914,8 @@ void TIntermediate::addBiShapeConversion(TOperator op, TIntermTyped*& lhsNode, T case EOpAnd: case EOpInclusiveOr: case EOpExclusiveOr: + + case EOpMix: break; default: @@ -1422,19 +1427,17 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* true return nullptr; } - // After conversion, types have to match. - if (falseBlock->getType() != trueBlock->getType()) - return nullptr; - // Handle a vector condition as a mix if (!cond->getType().isScalarOrVec1()) { TType targetVectorType(trueBlock->getType().getBasicType(), EvqTemporary, cond->getType().getVectorSize()); - // smear true/false operations if needed - if (trueBlock->getType().isScalarOrVec1()) - trueBlock = addShapeConversion(targetVectorType, trueBlock); - if (falseBlock->getType().isScalarOrVec1()) - falseBlock = addShapeConversion(targetVectorType, falseBlock); + // smear true/false operands as needed + trueBlock = addUniShapeConversion(EOpMix, targetVectorType, trueBlock); + falseBlock = addUniShapeConversion(EOpMix, targetVectorType, falseBlock); + + // After conversion, types have to match. + if (falseBlock->getType() != trueBlock->getType()) + return nullptr; // make the mix operation TIntermAggregate* mix = makeAggregate(loc); @@ -1449,6 +1452,13 @@ TIntermTyped* TIntermediate::addSelection(TIntermTyped* cond, TIntermTyped* true // Now have a scalar condition... + // Convert true and false expressions to matching types + addBiShapeConversion(EOpMix, trueBlock, falseBlock); + + // After conversion, types have to match. + if (falseBlock->getType() != trueBlock->getType()) + return nullptr; + // Eliminate the selection when the condition is a scalar and all operands are constant. if (cond->getAsConstantUnion() && trueBlock->getAsConstantUnion() && falseBlock->getAsConstantUnion()) { if (cond->getAsConstantUnion()->getConstArray()[0].getBConst())