xref: /aosp_15_r20/external/skia/resources/sksl/shared/TernaryComplexNesting.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorWhite;
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workernoinline bool IsEqual(half4 x, half4 y) {
4*c8dee2aaSAndroid Build Coastguard Worker    return x == y;
5*c8dee2aaSAndroid Build Coastguard Worker}
6*c8dee2aaSAndroid Build Coastguard Worker
7*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) {
8*c8dee2aaSAndroid Build Coastguard Worker    half4 colorBlue  = colorWhite.00ba,
9*c8dee2aaSAndroid Build Coastguard Worker          colorGreen = colorWhite.0g0a,
10*c8dee2aaSAndroid Build Coastguard Worker          colorRed   = colorWhite.r00a;
11*c8dee2aaSAndroid Build Coastguard Worker    half4 result;
12*c8dee2aaSAndroid Build Coastguard Worker    result = !IsEqual(colorWhite, colorBlue)                                // takes true side
13*c8dee2aaSAndroid Build Coastguard Worker               ? ( IsEqual(colorGreen, colorRed) ? colorRed : colorGreen)   // takes false side
14*c8dee2aaSAndroid Build Coastguard Worker               : (!IsEqual(colorRed, colorGreen) ? colorBlue : colorWhite); // not taken
15*c8dee2aaSAndroid Build Coastguard Worker
16*c8dee2aaSAndroid Build Coastguard Worker    return  IsEqual(colorRed, colorBlue ) ? colorWhite :
17*c8dee2aaSAndroid Build Coastguard Worker           !IsEqual(colorRed, colorGreen) ? result :     // is taken
18*c8dee2aaSAndroid Build Coastguard Worker            IsEqual(colorRed, colorWhite) ? colorBlue :
19*c8dee2aaSAndroid Build Coastguard Worker                                            colorRed;
20*c8dee2aaSAndroid Build Coastguard Worker}
21