1uniform half4 I, N; 2uniform half4 colorGreen, colorRed; 3 4half4 main(float2 xy) { 5 // Ensure that constant-evaluation is safe even when the expression cannot be optimized. 6 half expectedX = reflect(2245222*222*2, -2e34); 7 8 const half4 constI = half4(1, -2, 3, -4); 9 const half4 constN = half4(-5, 6, -7, 8); 10 11 expectedX = half (-49); 12 half2 expectedXY = half2(-169, 202); 13 half3 expectedXYZ = half3(-379, 454, -529); 14 half4 expectedXYZW = half4(-699, 838, -977, 1116); 15 16 return (reflect(I.x, N.x ) == expectedX && 17 reflect(I.xy, N.xy ) == expectedXY && 18 reflect(I.xyz, N.xyz ) == expectedXYZ && 19 reflect(I.xyzw, N.xyzw ) == expectedXYZW && 20 reflect(constI.x, constN.x ) == expectedX && 21 reflect(constI.xy, constN.xy ) == expectedXY && 22 reflect(constI.xyz, constN.xyz ) == expectedXYZ && 23 reflect(constI.xyzw, constN.xyzw) == expectedXYZW) ? colorGreen 24 : colorRed; 25} 26