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