 e5921f1309
			
		
	
	
		e5921f1309
		
	
	
	
	
		
			
			This fixes defects as follows: 1. handleLvalue could be called on a non-L-value, and it shouldn't be. 2. HLSL allows unary negation on non-bool values. TUnaryOperator::promote can now promote other types (e.g, int, float) to bool for this op. 3. HLSL allows binary logical operations (&&, ||) on arbitrary types, similar (2). 4. HLSL allows mod operation on arbitrary types, which will be promoted. E.g, int % float -> float % float.
		
			
				
	
	
		
			30 lines
		
	
	
		
			403 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			403 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| struct PS_OUTPUT
 | |
| {
 | |
|     float4 Color : SV_Target0;
 | |
| };
 | |
| 
 | |
| uniform int    ival;
 | |
| uniform int4   ival4;
 | |
| uniform float  fval;
 | |
| uniform float4 fval4;
 | |
| 
 | |
| PS_OUTPUT main()
 | |
| {
 | |
|     !ival;  // scalar int
 | |
|     !ival4; // vector int
 | |
| 
 | |
|     !fval;  // scalar float
 | |
|     !fval4; // vector float
 | |
|     
 | |
|     if (ival);
 | |
|     if (fval);
 | |
|     if (!ival);
 | |
|     if (!fval);
 | |
| 
 | |
|     PS_OUTPUT psout;
 | |
|     psout.Color = 1.0;
 | |
|     return psout;
 | |
| }
 | |
| 
 | |
| 
 |