uniform half4 colorGreen, colorRed, colorBlack, colorWhite, testInputs; // This test covers mix(vec, vec, bvec). // See MixFloatES2 and MixBool for additional forms of mix. half4 main(float2 coords) { const half4 constBlack = half4(0, 0, 0, 1); const half4 constWhite = half4(1); const half4 constVal = half4(-1.25, 0, 0.75, 2.25); const bool4 constTFTF = bool4(true, false, true, false); bool4 FTFT = bool4(colorGreen); bool4 TFTF = FTFT.wzyx; return (mix(colorBlack.x, colorWhite.x, FTFT.x) == colorBlack.x && mix(colorBlack.xy, colorWhite.xy, FTFT.xy) == colorBlack.x1 && mix(colorBlack.xyz, colorWhite.xyz, FTFT.xyz) == colorBlack.x1z && mix(colorBlack.xyzw, colorWhite.xyzw, FTFT.xyzw) == colorBlack.x1z1 && mix(colorWhite.x, testInputs.x, TFTF.x) == testInputs.x && mix(colorWhite.xy, testInputs.xy, TFTF.xy) == testInputs.x1 && mix(colorWhite.xyz, testInputs.xyz, TFTF.xyz) == testInputs.x1z && mix(colorWhite.xyzw, testInputs.xyzw, TFTF.xyzw) == testInputs.x1z1 && mix(constWhite.x, constVal.x, constTFTF.x) == constVal.x && mix(constWhite.xy, constVal.xy, constTFTF.xy) == constVal.x1 && mix(constWhite.xyz, constVal.xyz, constTFTF.xyz) == constVal.x1z && mix(constWhite.xyzw, constVal.xyzw, constTFTF.xyzw) == constVal.x1z1) ? colorGreen : colorRed; }