// An if-else statement at the end of a function, with a return as the last statement on all // paths, are not actually "early" returns. The inliner is able to recognize this pattern. uniform half4 colorGreen, colorRed; inline half branchy() { if (colorGreen.g == 0) return 0; else if (colorRed.r == 0) return 0; else if (colorGreen == colorRed) return 0; else return 1; } inline half branchyAndBlocky() { if (colorGreen.g == 0) {{{ return 0; }}} else if (colorRed.r == 0) {{ return 0; }} else { if (colorGreen == colorRed) return 0; else {{ return 1; }}} } half4 main(float2 coords) { return bool(branchy() * branchyAndBlocky()) ? colorGreen : colorRed; }