/*#pragma settings NoInline*/ uniform half4 colorRed, colorGreen, colorWhite, colorBlack; void setToColorBlack(out half4 x) { x = colorBlack; } half4 main() { 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; }