 32a385e9d7
			
		
	
	
		32a385e9d7
		
	
	
	
	
		
			
			Vector conditions properly convert the true/false expression types to same width vector as the condition. Scalar conditions make the true/false expressions convert to each other.
		
			
				
	
	
		
			43 lines
		
	
	
		
			967 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			967 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| float4 c4;
 | |
| float4 t4;
 | |
| float4 f4;
 | |
| float t;
 | |
| float f;
 | |
| 
 | |
| float4 vectorCond()
 | |
| {
 | |
|     return (c4 ? t4 : f4) +
 | |
|            (c4 ? t  : f ) +
 | |
|            (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)
 | |
| {
 | |
|     return cnd ? src0 : src1;
 | |
| }
 | |
| 
 | |
| float4 PixelShaderFunction(float4 input) : COLOR0
 | |
| {
 | |
|     int a = 1 < 2 ? 3 < 4 ? 5 : 6 : 7;
 | |
|     int b = 1 < 2 ? 3 > 4 ? 5 : 6 : 7;
 | |
|     int c = 1 > 2 ? 3 > 4 ? 5 : 6 : 7;
 | |
|     int d = 1 > 2 ? 3 < 4 ? 5 : 6 : 7;
 | |
|     float4 ret = a * input + 
 | |
|                  b * input +
 | |
|                  c * input +
 | |
|                  d * input;
 | |
|     int e;
 | |
|     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() + scalarCond() +
 | |
|            float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0);
 | |
| }
 |