xref: /aosp_15_r20/external/skia/resources/sksl/intrinsics/MixFloatES3.sksl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1uniform half4 colorGreen, colorRed, colorBlack, colorWhite, testInputs;
2
3// This test covers mix(vec, vec, bvec).
4// See MixFloatES2 and MixBool for additional forms of mix.
5
6half4 main(float2 coords) {
7    const half4 constBlack = half4(0, 0, 0, 1);
8    const half4 constWhite = half4(1);
9    const half4 constVal = half4(-1.25, 0, 0.75, 2.25);
10
11    const bool4 constTFTF = bool4(true, false, true, false);
12    bool4 FTFT = bool4(colorGreen);
13    bool4 TFTF = FTFT.wzyx;
14
15    return (mix(colorBlack.x,    colorWhite.x,    FTFT.x)         == colorBlack.x    &&
16            mix(colorBlack.xy,   colorWhite.xy,   FTFT.xy)        == colorBlack.x1   &&
17            mix(colorBlack.xyz,  colorWhite.xyz,  FTFT.xyz)       == colorBlack.x1z  &&
18            mix(colorBlack.xyzw, colorWhite.xyzw, FTFT.xyzw)      == colorBlack.x1z1 &&
19            mix(colorWhite.x,    testInputs.x,    TFTF.x)         == testInputs.x    &&
20            mix(colorWhite.xy,   testInputs.xy,   TFTF.xy)        == testInputs.x1   &&
21            mix(colorWhite.xyz,  testInputs.xyz,  TFTF.xyz)       == testInputs.x1z  &&
22            mix(colorWhite.xyzw, testInputs.xyzw, TFTF.xyzw)      == testInputs.x1z1 &&
23            mix(constWhite.x,    constVal.x,      constTFTF.x)    == constVal.x      &&
24            mix(constWhite.xy,   constVal.xy,     constTFTF.xy)   == constVal.x1     &&
25            mix(constWhite.xyz,  constVal.xyz,    constTFTF.xyz)  == constVal.x1z    &&
26            mix(constWhite.xyzw, constVal.xyzw,   constTFTF.xyzw) == constVal.x1z1)
27                ? colorGreen : colorRed;
28}
29