From ace7f4276997235abe559b70620d9f89737d2518 Mon Sep 17 00:00:00 2001 From: rosca Date: Thu, 20 Nov 2014 07:24:32 -0800 Subject: Preventing division by 0 in non-separable blend mode shaders. In the software path, the same issue has been fixed some time ago: https://codereview.chromium.org/114173002 BUG=skia: Review URL: https://codereview.chromium.org/666043003 --- src/core/SkXfermode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 36be29e8b3..77c668457b 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -1101,10 +1101,10 @@ public: setLumBody.appendf("\tfloat outLum = %s(outColor);\n", getFunction.c_str()); setLumBody.append("\tfloat minComp = min(min(outColor.r, outColor.g), outColor.b);\n" "\tfloat maxComp = max(max(outColor.r, outColor.g), outColor.b);\n" - "\tif (minComp < 0.0) {\n" + "\tif (minComp < 0.0 && outLum != minComp) {\n" "\t\toutColor = outLum + ((outColor - vec3(outLum, outLum, outLum)) * outLum) / (outLum - minComp);\n" "\t}\n" - "\tif (maxComp > alpha) {\n" + "\tif (maxComp > alpha && maxComp != outLum) {\n" "\t\toutColor = outLum + ((outColor - vec3(outLum, outLum, outLum)) * (alpha - outLum)) / (maxComp - outLum);\n" "\t}\n" "\treturn outColor;\n"); -- cgit v1.2.3