diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index f72e25b0938935d40cb21869575b27688a54bf0b..6e6f76afa2eec0f40f555c0db75ffce4e4bce6af 100755 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -5,154 +5,200 @@ gl_FragCoord origin is upper left 0:8 Function Definition: vectorCond( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence -0:10 Branch: Return with expression -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: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 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:14 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:14 Function Parameters: -0:14 'input' ( in 4-component vector of float) +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: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: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:? Sequence -0:15 Sequence -0:15 move second child to first child ( temp int) -0:15 'a' ( temp int) -0:15 Constant: -0:15 5 (const int) -0:16 Sequence -0:16 move second child to first child ( temp int) -0:16 'b' ( temp int) -0:16 Constant: -0:16 6 (const int) -0:17 Sequence -0:17 move second child to first child ( temp int) -0:17 'c' ( temp int) -0:17 Constant: -0:17 7 (const int) -0:18 Sequence -0:18 move second child to first child ( temp int) -0:18 'd' ( temp int) -0:18 Constant: -0:18 7 (const int) -0:19 Sequence -0:19 move second child to first child ( temp 4-component vector of float) -0:19 'ret' ( temp 4-component vector of float) -0:21 add ( temp 4-component vector of float) -0:20 add ( temp 4-component vector of float) -0:19 add ( temp 4-component vector of float) -0:19 vector-scale ( temp 4-component vector of float) -0:19 Convert int to float ( temp float) -0:19 'a' ( temp int) -0:19 'input' ( in 4-component vector of float) -0:20 vector-scale ( temp 4-component vector of float) -0:20 Convert int to float ( temp float) -0:20 'b' ( temp int) -0:20 'input' ( in 4-component vector of float) -0:21 vector-scale ( temp 4-component vector of float) -0:21 Convert int to float ( temp float) -0:21 'c' ( temp int) -0:21 'input' ( in 4-component vector of float) -0:22 vector-scale ( temp 4-component vector of float) -0:22 Convert int to float ( temp float) -0:22 'd' ( temp int) -0:22 'input' ( in 4-component vector of float) -0:24 Comma ( temp int) -0:24 move second child to first child ( temp int) -0:24 'e' ( temp int) -0:24 move second child to first child ( temp int) -0:24 'a' ( temp int) -0:24 Test condition and select ( temp int) -0:24 Condition -0:24 Convert int to bool ( temp bool) -0:24 'b' ( temp int) -0:24 true case -0:24 move second child to first child ( temp int) -0:24 'c' ( temp int) -0:24 'd' ( temp int) -0:24 false case -0:24 Constant: -0:24 10 (const int) +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:? 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 'b' ( temp int) -0:24 Test condition and select ( temp int) -0:24 Condition -0:24 Convert int to bool ( temp bool) -0:24 'a' ( temp int) -0:24 true case -0:24 move second child to first child ( temp int) -0:24 'd' ( temp int) -0:24 'c' ( temp int) -0:24 false case -0:24 Constant: -0:24 11 (const int) -0:26 move second child to first child ( temp 4-component vector of float) -0:26 'f' ( temp 4-component vector of float) -0:26 Test condition and select ( temp 4-component vector of float) -0:26 Condition -0:26 Compare Less Than ( temp bool) -0:26 direct index ( temp float) -0:26 'ret' ( temp 4-component vector of float) -0:26 Constant: -0:26 0 (const int) -0:26 direct index ( temp float) -0:26 'input' ( in 4-component vector of float) -0:26 Constant: -0:26 1 (const int) -0:26 true case -0:26 vector-scale ( temp 4-component vector of float) -0:26 Convert int to float ( temp float) -0:26 'c' ( temp int) -0:26 'input' ( in 4-component vector of float) -0:26 false case -0:26 vector-scale ( temp 4-component vector of float) -0:26 Convert int to float ( temp float) -0:26 'd' ( temp int) -0:26 'input' ( in 4-component vector of float) -0:27 Branch: Return with expression -0:27 add ( temp 4-component vector of float) +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:27 vector-scale ( temp 4-component vector of float) -0:27 Convert int to float ( temp float) -0:27 'e' ( temp int) -0:27 'ret' ( temp 4-component vector of float) -0:27 'f' ( temp 4-component vector of float) -0:27 Function Call: vectorCond( ( temp 4-component vector of float) -0:14 Function Definition: PixelShaderFunction( ( temp void) -0:14 Function Parameters: +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: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: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:? Construct vec4 ( temp 4-component vector of float) +0:34 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:? Constant: +0:? true (const bool) +0:? false (const bool) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +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:? Sequence -0:14 move second child to first child ( temp 4-component vector of float) +0:20 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:14 move second child to first child ( temp 4-component vector of float) +0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:14 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:20 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}) @@ -169,154 +215,200 @@ gl_FragCoord origin is upper left 0:8 Function Definition: vectorCond( ( temp 4-component vector of float) 0:8 Function Parameters: 0:? Sequence -0:10 Branch: Return with expression -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: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 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:14 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:14 Function Parameters: -0:14 'input' ( in 4-component vector of float) +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: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: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:? Sequence -0:15 Sequence -0:15 move second child to first child ( temp int) -0:15 'a' ( temp int) -0:15 Constant: -0:15 5 (const int) -0:16 Sequence -0:16 move second child to first child ( temp int) -0:16 'b' ( temp int) -0:16 Constant: -0:16 6 (const int) -0:17 Sequence -0:17 move second child to first child ( temp int) -0:17 'c' ( temp int) -0:17 Constant: -0:17 7 (const int) -0:18 Sequence -0:18 move second child to first child ( temp int) -0:18 'd' ( temp int) -0:18 Constant: -0:18 7 (const int) -0:19 Sequence -0:19 move second child to first child ( temp 4-component vector of float) -0:19 'ret' ( temp 4-component vector of float) -0:21 add ( temp 4-component vector of float) -0:20 add ( temp 4-component vector of float) -0:19 add ( temp 4-component vector of float) -0:19 vector-scale ( temp 4-component vector of float) -0:19 Convert int to float ( temp float) -0:19 'a' ( temp int) -0:19 'input' ( in 4-component vector of float) -0:20 vector-scale ( temp 4-component vector of float) -0:20 Convert int to float ( temp float) -0:20 'b' ( temp int) -0:20 'input' ( in 4-component vector of float) -0:21 vector-scale ( temp 4-component vector of float) -0:21 Convert int to float ( temp float) -0:21 'c' ( temp int) -0:21 'input' ( in 4-component vector of float) -0:22 vector-scale ( temp 4-component vector of float) -0:22 Convert int to float ( temp float) -0:22 'd' ( temp int) -0:22 'input' ( in 4-component vector of float) -0:24 Comma ( temp int) -0:24 move second child to first child ( temp int) -0:24 'e' ( temp int) -0:24 move second child to first child ( temp int) -0:24 'a' ( temp int) -0:24 Test condition and select ( temp int) -0:24 Condition -0:24 Convert int to bool ( temp bool) -0:24 'b' ( temp int) -0:24 true case -0:24 move second child to first child ( temp int) -0:24 'c' ( temp int) -0:24 'd' ( temp int) -0:24 false case -0:24 Constant: -0:24 10 (const int) +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:? 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 'b' ( temp int) -0:24 Test condition and select ( temp int) -0:24 Condition -0:24 Convert int to bool ( temp bool) -0:24 'a' ( temp int) -0:24 true case -0:24 move second child to first child ( temp int) -0:24 'd' ( temp int) -0:24 'c' ( temp int) -0:24 false case -0:24 Constant: -0:24 11 (const int) -0:26 move second child to first child ( temp 4-component vector of float) -0:26 'f' ( temp 4-component vector of float) -0:26 Test condition and select ( temp 4-component vector of float) -0:26 Condition -0:26 Compare Less Than ( temp bool) -0:26 direct index ( temp float) -0:26 'ret' ( temp 4-component vector of float) -0:26 Constant: -0:26 0 (const int) -0:26 direct index ( temp float) -0:26 'input' ( in 4-component vector of float) -0:26 Constant: -0:26 1 (const int) -0:26 true case -0:26 vector-scale ( temp 4-component vector of float) -0:26 Convert int to float ( temp float) -0:26 'c' ( temp int) -0:26 'input' ( in 4-component vector of float) -0:26 false case -0:26 vector-scale ( temp 4-component vector of float) -0:26 Convert int to float ( temp float) -0:26 'd' ( temp int) -0:26 'input' ( in 4-component vector of float) -0:27 Branch: Return with expression -0:27 add ( temp 4-component vector of float) +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:27 vector-scale ( temp 4-component vector of float) -0:27 Convert int to float ( temp float) -0:27 'e' ( temp int) -0:27 'ret' ( temp 4-component vector of float) -0:27 'f' ( temp 4-component vector of float) -0:27 Function Call: vectorCond( ( temp 4-component vector of float) -0:14 Function Definition: PixelShaderFunction( ( temp void) -0:14 Function Parameters: +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: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: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:? Construct vec4 ( temp 4-component vector of float) +0:34 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:? Constant: +0:? true (const bool) +0:? false (const bool) +0:? Constant: +0:? 1.000000 +0:? 2.000000 +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:? Sequence -0:14 move second child to first child ( temp 4-component vector of float) +0:20 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:14 move second child to first child ( temp 4-component vector of float) +0:20 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:14 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:20 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}) @@ -325,215 +417,270 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 141 +// Id's are bound by 186 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 134 137 + EntryPoint Fragment 4 "PixelShaderFunction" 179 182 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 9 "vectorCond(" - Name 14 "@PixelShaderFunction(vf4;" - Name 13 "input" - Name 16 "$Global" - MemberName 16($Global) 0 "c4" - MemberName 16($Global) 1 "t4" - MemberName 16($Global) 2 "f4" - MemberName 16($Global) 3 "t" - MemberName 16($Global) 4 "f" - Name 18 "" - Name 53 "a" - Name 55 "b" - Name 57 "c" - Name 59 "d" - Name 60 "ret" - Name 80 "e" - Name 101 "f" - Name 132 "input" - Name 134 "input" - Name 137 "@entryPointOutput" - Name 138 "param" - MemberDecorate 16($Global) 0 Offset 0 - MemberDecorate 16($Global) 1 Offset 16 - MemberDecorate 16($Global) 2 Offset 32 - MemberDecorate 16($Global) 3 Offset 48 - MemberDecorate 16($Global) 4 Offset 52 - Decorate 16($Global) Block - Decorate 18 DescriptorSet 0 - Decorate 134(input) Location 0 - Decorate 137(@entryPointOutput) Location 0 + 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 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) - 11: TypePointer Function 7(fvec4) - 12: TypeFunction 7(fvec4) 11(ptr) - 16($Global): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 6(float) 6(float) - 17: TypePointer Uniform 16($Global) - 18: 17(ptr) Variable Uniform - 19: TypeInt 32 1 - 20: 19(int) Constant 2 - 21: TypePointer Uniform 7(fvec4) - 24: 19(int) Constant 1 - 27: 19(int) Constant 0 - 30: TypeBool - 31: TypeVector 30(bool) 4 - 32: 6(float) Constant 0 - 33: 7(fvec4) ConstantComposite 32 32 32 32 - 36: 19(int) Constant 4 - 37: TypePointer Uniform 6(float) - 41: 19(int) Constant 3 - 52: TypePointer Function 19(int) - 54: 19(int) Constant 5 - 56: 19(int) Constant 6 - 58: 19(int) Constant 7 - 83: TypeInt 32 0 - 84: 83(int) Constant 0 - 90: 19(int) Constant 10 - 99: 19(int) Constant 11 - 103: TypePointer Function 6(float) - 106: 83(int) Constant 1 - 133: TypePointer Input 7(fvec4) - 134(input): 133(ptr) Variable Input - 136: TypePointer Output 7(fvec4) -137(@entryPointOutput): 136(ptr) Variable Output + 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 4(PixelShaderFunction): 2 Function None 3 5: Label - 132(input): 11(ptr) Variable Function - 138(param): 11(ptr) Variable Function - 135: 7(fvec4) Load 134(input) - Store 132(input) 135 - 139: 7(fvec4) Load 132(input) - Store 138(param) 139 - 140: 7(fvec4) FunctionCall 14(@PixelShaderFunction(vf4;) 138(param) - Store 137(@entryPointOutput) 140 + 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 Return FunctionEnd 9(vectorCond(): 7(fvec4) Function None 8 10: Label - 22: 21(ptr) AccessChain 18 20 - 23: 7(fvec4) Load 22 - 25: 21(ptr) AccessChain 18 24 - 26: 7(fvec4) Load 25 - 28: 21(ptr) AccessChain 18 27 - 29: 7(fvec4) Load 28 - 34: 31(bvec4) FOrdNotEqual 29 33 - 35: 7(fvec4) Select 34 26 23 - 38: 37(ptr) AccessChain 18 36 - 39: 6(float) Load 38 - 40: 7(fvec4) CompositeConstruct 39 39 39 39 - 42: 37(ptr) AccessChain 18 41 - 43: 6(float) Load 42 - 44: 7(fvec4) CompositeConstruct 43 43 43 43 - 45: 21(ptr) AccessChain 18 27 - 46: 7(fvec4) Load 45 - 47: 31(bvec4) FOrdNotEqual 46 33 - 48: 7(fvec4) Select 47 44 40 - 49: 7(fvec4) FAdd 35 48 - ReturnValue 49 + 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 + 63: 7(fvec4) Load 62 + 64: 32(ptr) AccessChain 29 35 + 65: 7(fvec4) Load 64 + 66: 32(ptr) AccessChain 29 31 + 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 + 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 FunctionEnd -14(@PixelShaderFunction(vf4;): 7(fvec4) Function None 12 - 13(input): 11(ptr) FunctionParameter - 15: Label - 53(a): 52(ptr) Variable Function - 55(b): 52(ptr) Variable Function - 57(c): 52(ptr) Variable Function - 59(d): 52(ptr) Variable Function - 60(ret): 11(ptr) Variable Function - 80(e): 52(ptr) Variable Function - 81: 52(ptr) Variable Function - 92: 52(ptr) Variable Function - 101(f): 11(ptr) Variable Function - 102: 11(ptr) Variable Function - Store 53(a) 54 - Store 55(b) 56 - Store 57(c) 58 - Store 59(d) 58 - 61: 19(int) Load 53(a) - 62: 6(float) ConvertSToF 61 - 63: 7(fvec4) Load 13(input) - 64: 7(fvec4) VectorTimesScalar 63 62 - 65: 19(int) Load 55(b) - 66: 6(float) ConvertSToF 65 - 67: 7(fvec4) Load 13(input) - 68: 7(fvec4) VectorTimesScalar 67 66 - 69: 7(fvec4) FAdd 64 68 - 70: 19(int) Load 57(c) - 71: 6(float) ConvertSToF 70 - 72: 7(fvec4) Load 13(input) - 73: 7(fvec4) VectorTimesScalar 72 71 - 74: 7(fvec4) FAdd 69 73 - 75: 19(int) Load 59(d) - 76: 6(float) ConvertSToF 75 - 77: 7(fvec4) Load 13(input) - 78: 7(fvec4) VectorTimesScalar 77 76 - 79: 7(fvec4) FAdd 74 78 - Store 60(ret) 79 - 82: 19(int) Load 55(b) - 85: 30(bool) INotEqual 82 84 - SelectionMerge 87 None - BranchConditional 85 86 89 - 86: Label - 88: 19(int) Load 59(d) - Store 57(c) 88 - Store 81 88 - Branch 87 - 89: Label - Store 81 90 - Branch 87 - 87: Label - 91: 19(int) Load 81 - Store 53(a) 91 - Store 80(e) 91 - 93: 19(int) Load 53(a) - 94: 30(bool) INotEqual 93 84 - SelectionMerge 96 None - BranchConditional 94 95 98 - 95: Label - 97: 19(int) Load 57(c) - Store 59(d) 97 - Store 92 97 - Branch 96 - 98: Label - Store 92 99 - Branch 96 - 96: Label - 100: 19(int) Load 92 - Store 55(b) 100 - 104: 103(ptr) AccessChain 60(ret) 84 - 105: 6(float) Load 104 - 107: 103(ptr) AccessChain 13(input) 106 - 108: 6(float) Load 107 - 109: 30(bool) FOrdLessThan 105 108 - SelectionMerge 111 None - BranchConditional 109 110 116 - 110: Label - 112: 19(int) Load 57(c) - 113: 6(float) ConvertSToF 112 - 114: 7(fvec4) Load 13(input) - 115: 7(fvec4) VectorTimesScalar 114 113 - Store 102 115 - Branch 111 +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 - 117: 19(int) Load 59(d) - 118: 6(float) ConvertSToF 117 - 119: 7(fvec4) Load 13(input) - 120: 7(fvec4) VectorTimesScalar 119 118 - Store 102 120 - Branch 111 - 111: Label - 121: 7(fvec4) Load 102 - Store 101(f) 121 - 122: 19(int) Load 80(e) - 123: 6(float) ConvertSToF 122 - 124: 7(fvec4) Load 60(ret) - 125: 7(fvec4) VectorTimesScalar 124 123 - 126: 7(fvec4) Load 101(f) - 127: 7(fvec4) FAdd 125 126 - 128: 7(fvec4) FunctionCall 9(vectorCond() - 129: 7(fvec4) FAdd 127 128 - ReturnValue 129 + 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 FunctionEnd diff --git a/Test/hlsl.conditional.frag b/Test/hlsl.conditional.frag index 69ff8f7e2a05b14f14cde35cb29396b631a002a6..8176d01ff67fa8e698f940681fff98fe34962f6a 100644 --- a/Test/hlsl.conditional.frag +++ b/Test/hlsl.conditional.frag @@ -7,7 +7,13 @@ float f; float4 vectorCond() { return (c4 ? t4 : f4) + - (c4 ? t : f ); + (c4 ? t : f ) + + (t4 < f4 ? t4 : f4); +} + +float2 fbSelect(bool2 cnd, float2 src0, float2 src1) +{ + return cnd ? src0 : src1; } float4 PixelShaderFunction(float4 input) : COLOR0 @@ -24,5 +30,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() + + float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0); } diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 1c081d08bd48543aa07023088f9d74c26dab60b1..5528dfe75e895373057d9fbb479ec82e81056d88 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -2,5 +2,5 @@ // For the version, it uses the latest git tag followed by the number of commits. // For the date, it uses the current date (when then script is run). -#define GLSLANG_REVISION "Overload400-PrecQual.1992" +#define GLSLANG_REVISION "Overload400-PrecQual.1994" #define GLSLANG_DATE "11-Apr-2017" diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 67da2e990643ffc03236610d4dd07e2ec1687492..a92ecdf6170c740c9f45d592dbd155df00e10c8e 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -4536,7 +4536,7 @@ TIntermTyped* HlslParseContext::convertConditionalExpression(const TSourceLoc& l return nullptr; } - return intermediate.addConversion(EOpConstructBool, TType(EbtBool), condition); + return intermediate.addConversion(EOpConstructBool, TType(EbtBool, EvqTemporary, condition->getVectorSize()), condition); } //