Use 1e-4 rather than 1e-5 as "nonZeroAlpha" in various shader code.
1e-5 may be zero in fp16.
Bug: skia:9099
Change-Id: I28a518f5cf1aa7926f7422625c0f14ed1a082809
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/218558
Commit-Queue: Brian Salomon <bsalomon@google.com>
Auto-Submit: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/effects/SkHighContrastFilter.cpp b/src/effects/SkHighContrastFilter.cpp
index 131f4f5..e9db7bd 100644
--- a/src/effects/SkHighContrastFilter.cpp
+++ b/src/effects/SkHighContrastFilter.cpp
@@ -248,7 +248,7 @@
fragBuilder->codeAppendf("half4 color = %s;", args.fInputColor);
// Unpremultiply. The max() is to guard against 0 / 0.
- fragBuilder->codeAppendf("half nonZeroAlpha = max(color.a, 0.00001);");
+ fragBuilder->codeAppendf("half nonZeroAlpha = max(color.a, 0.0001);");
fragBuilder->codeAppendf("color = half4(color.rgb / nonZeroAlpha, nonZeroAlpha);");
if (hcfe.linearize()) {
diff --git a/src/gpu/effects/GrColorMatrixFragmentProcessor.fp b/src/gpu/effects/GrColorMatrixFragmentProcessor.fp
index f971fb4..74203b5 100644
--- a/src/gpu/effects/GrColorMatrixFragmentProcessor.fp
+++ b/src/gpu/effects/GrColorMatrixFragmentProcessor.fp
@@ -20,7 +20,7 @@
@if (unpremulInput) {
// The max() is to guard against 0 / 0 during unpremul when the incoming color is
// transparent black.
- half nonZeroAlpha = max(inputColor.a, 0.00001);
+ half nonZeroAlpha = max(inputColor.a, 0.0001);
inputColor = half4(inputColor.rgb / nonZeroAlpha, nonZeroAlpha);
}
sk_OutColor = m * inputColor + v;
diff --git a/src/gpu/effects/GrSRGBEffect.cpp b/src/gpu/effects/GrSRGBEffect.cpp
index 9443a05..b7e27a6 100644
--- a/src/gpu/effects/GrSRGBEffect.cpp
+++ b/src/gpu/effects/GrSRGBEffect.cpp
@@ -47,7 +47,7 @@
// calculations to be performed with sufficient precision.
fragBuilder->codeAppendf("float4 color = %s;", args.fInputColor);
if (srgbe.alpha() == GrSRGBEffect::Alpha::kPremul) {
- fragBuilder->codeAppendf("float nonZeroAlpha = max(color.a, 0.00001);");
+ fragBuilder->codeAppendf("float nonZeroAlpha = max(color.a, 0.0001);");
fragBuilder->codeAppendf("color = float4(color.rgb / nonZeroAlpha, color.a);");
}
fragBuilder->codeAppendf("color = float4(%s(half(color.r)), %s(half(color.g)), "
diff --git a/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.cpp b/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.cpp
index 2a9c206..d0f6b00 100644
--- a/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.cpp
+++ b/src/gpu/effects/generated/GrColorMatrixFragmentProcessor.cpp
@@ -38,7 +38,7 @@
vVar = args.fUniformHandler->addUniform(kFragment_GrShaderFlag, kHalf4_GrSLType, "v");
fragBuilder->codeAppendf(
"half4 inputColor = %s;\n@if (%s) {\n half nonZeroAlpha = max(inputColor.w, "
- "1.0000000000000001e-05);\n inputColor = half4(inputColor.xyz / nonZeroAlpha, "
+ "0.0001);\n inputColor = half4(inputColor.xyz / nonZeroAlpha, "
"nonZeroAlpha);\n}\n%s = %s * inputColor + %s;\n@if (%s) {\n %s = clamp(%s, "
"0.0, 1.0);\n} else {\n %s.w = clamp(%s.w, 0.0, 1.0);\n}\n@if (%s) {\n "
"%s.xyz *= %s.w;\n}\n",
diff --git a/src/gpu/glsl/GrGLSLShaderBuilder.cpp b/src/gpu/glsl/GrGLSLShaderBuilder.cpp
index 09f5d5d..a8d7812 100644
--- a/src/gpu/glsl/GrGLSLShaderBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLShaderBuilder.cpp
@@ -158,7 +158,7 @@
const GrShaderVar gColorXformArgs[] = { GrShaderVar("color", kHalf4_GrSLType) };
SkString body;
if (colorXformHelper->applyUnpremul()) {
- body.append("half nonZeroAlpha = max(color.a, 0.00001);");
+ body.append("half nonZeroAlpha = max(color.a, 0.0001);");
body.append("color = half4(color.rgb / nonZeroAlpha, nonZeroAlpha);");
}
if (colorXformHelper->applySrcTF()) {