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; }