skia2/resources/sksl/intrinsics/IsNan.sksl

19 lines
713 B
Plaintext
Raw Normal View History

uniform half4 testInputs; // equals (-1.25, 0, 0.75, 2.25)
uniform half4 colorGreen, colorRed;
half4 main(float2 coords) {
// NOTE: the ES3 spec does not mandate NaN support. This test may not succeed on some GPUs.
half4 valueIsNaN = 0 / testInputs.yyyy;
half4 valueIsNumber = 1 / testInputs;
return ( (isnan(valueIsNaN.x)) &&
all(isnan(valueIsNaN.xy)) &&
all(isnan(valueIsNaN.xyz)) &&
all(isnan(valueIsNaN.xyzw)) &&
! (isnan(valueIsNumber.x)) &&
!any(isnan(valueIsNumber.xy)) &&
!any(isnan(valueIsNumber.xyz)) &&
!any(isnan(valueIsNumber.xyzw))) ? colorGreen : colorRed;
}