/*#pragma settings NoInline*/

uniform half4 colorRed, colorGreen, colorWhite, colorBlack;

void setToColorBlack(out half4 x) {
    x = colorBlack;
}

half4 main(float2 coords) {
    half4 a, b, c, d;

    (b = colorRed), (c = colorGreen);
    a = (setToColorBlack(d), colorWhite);

    // These uniforms only contain 1s and 0s so these multiplies should be no-ops.
    a *= a;
    b *= b;
    c *= c;
    d *= d;

    return (a == colorWhite &&
            b == colorRed &&
            c == colorGreen &&
            d == colorBlack) ? colorGreen : colorRed;
}
