uniform half4 testInputs;
uniform half4 colorGreen, colorRed;

half4 main(float2 coords) {
    int4 intValues = int4(testInputs * 100);
    int4 intGreen  = int4(colorGreen * 100);
    const int4 constVal = int4(-125, 0, 75, 225);
    const int4 constGreen = int4(0, 100, 0, 100);

    int4 expectedA = int4(50, 50, 75, 225);
    int4 expectedB = int4(0, 100, 75, 225);
    return (max(intValues.x,    50)              == expectedA.x     &&
            max(intValues.xy,   50)              == expectedA.xy    &&
            max(intValues.xyz,  50)              == expectedA.xyz   &&
            max(intValues.xyzw, 50)              == expectedA.xyzw  &&
            max(constVal.x,     50)              == expectedA.x     &&
            max(constVal.xy,    50)              == expectedA.xy    &&
            max(constVal.xyz,   50)              == expectedA.xyz   &&
            max(constVal.xyzw,  50)              == expectedA.xyzw  &&
            max(intValues.x,    intGreen.x)      == expectedB.x     &&
            max(intValues.xy,   intGreen.xy)     == expectedB.xy    &&
            max(intValues.xyz,  intGreen.xyz)    == expectedB.xyz   &&
            max(intValues.xyzw, intGreen.xyzw)   == expectedB.xyzw  &&
            max(constVal.x,     constGreen.x)    == expectedB.x     &&
            max(constVal.xy,    constGreen.xy)   == expectedB.xy    &&
            max(constVal.xyz,   constGreen.xyz)  == expectedB.xyz   &&
            max(constVal.xyzw,  constGreen.xyzw) == expectedB.xyzw) ? colorGreen : colorRed;
}
