| uniform float2x2 testMatrix2x2; // = {1, 2, 3, 4} |
| uniform half4 colorGreen, colorRed; |
| |
| half4 main(float2 coords) { |
| // We should not attempt to constant-fold `sqrt(negative values)`. This sqrt call should remain |
| // in the generated code as-is. |
| const float4 negativeVal = half4(-1, -4, -16, -64); |
| coords.xy = sqrt(negativeVal).xy; |
| |
| float4 inputVal = float4(testMatrix2x2) + half4(0, 2, 6, 12); // = {1, 4, 9, 16} |
| const float4 constVal = float4(1, 4, 9, 16); |
| const float4 expected = float4(1, 2, 3, 4); |
| const float4 allowedDelta = float4(0.05); |
| |
| return ( ( (abs(sqrt(inputVal.x) - expected.x) < allowedDelta.x)) && |
| all(lessThan(abs(sqrt(inputVal.xy) - expected.xy), allowedDelta.xy)) && |
| all(lessThan(abs(sqrt(inputVal.xyz) - expected.xyz), allowedDelta.xyz)) && |
| all(lessThan(abs(sqrt(inputVal.xyzw) - expected.xyzw), allowedDelta.xyzw)) && |
| ( (abs(sqrt(constVal.x) - expected.x) < allowedDelta.x)) && |
| all(lessThan(abs(sqrt(constVal.xy) - expected.xy), allowedDelta.xy)) && |
| all(lessThan(abs(sqrt(constVal.xyz) - expected.xyz), allowedDelta.xyz)) && |
| all(lessThan(abs(sqrt(constVal.xyzw) - expected.xyzw), allowedDelta.xyzw))) |
| ? colorGreen : colorRed; |
| } |