/*#pragma settings RewriteSwitchStatements*/

uniform half4 colorGreen, colorRed;

bool switch_fallthrough(int value) {
    bool ok = false;
    switch (value) {
        case 2:  break;
        case 1:
        case 0:  ok = true; break;
        default: break;
    }
    return ok;
}

bool switch_fallthrough_twice(int value) {
    bool ok = false;
    switch (value) {
        case 0:  break;
        case 1:
        case 2:
        case 3:  ok = true; break;
        default: break;
    }
    return ok;
}

half4 main(float2 coords) {
    int x = int(colorGreen.g);
    return (switch_fallthrough(x) && switch_fallthrough_twice(x)) ? colorGreen : colorRed;
}
