From 6361d93af20f4ae39044101baa8a5b71d1e1975b Mon Sep 17 00:00:00 2001 From: Brad Larson Date: Fri, 25 May 2012 14:13:57 -0500 Subject: [PATCH] Fixed a precision issue and some divide-by-zero problems with the color dodge blend. --- framework/Source/GPUImageColorDodgeBlendFilter.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/Source/GPUImageColorDodgeBlendFilter.m b/framework/Source/GPUImageColorDodgeBlendFilter.m index baf7b351e..5898c23af 100755 --- a/framework/Source/GPUImageColorDodgeBlendFilter.m +++ b/framework/Source/GPUImageColorDodgeBlendFilter.m @@ -3,7 +3,7 @@ NSString *const kGPUImageColorDodgeBlendFragmentShaderString = SHADER_STRING ( - precision lowp float; + precision mediump float; varying highp vec2 textureCoordinate; varying highp vec2 textureCoordinate2; @@ -20,7 +20,7 @@ void main() vec3 rightHandProduct = overlay.rgb * (1.0 - base.a) + base.rgb * (1.0 - overlay.a); vec3 firstBlendColor = baseOverlayAlphaProduct + rightHandProduct; - vec3 overlayRGB = (overlay.rgb / overlay.a) * step(0.0, overlay.a); + vec3 overlayRGB = clamp((overlay.rgb / clamp(overlay.a, 0.01, 1.0)) * step(0.0, overlay.a), 0.0, 0.99); vec3 secondBlendColor = (base.rgb * overlay.a) / (1.0 - overlayRGB) + rightHandProduct;