From 814cf3076734ec42c000ff0c25d6490471ce403e Mon Sep 17 00:00:00 2001 From: duv Date: Thu, 16 Jul 2015 17:22:48 +0300 Subject: [PATCH] filtering fix (cherry picked from commit 45dd1259a3e4df53f52de11105f925f0e7cd7010) --- src/Shaders/Display.fs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Shaders/Display.fs b/src/Shaders/Display.fs index 66b71181da..8c7b3a5c9d 100644 --- a/src/Shaders/Display.fs +++ b/src/Shaders/Display.fs @@ -11,19 +11,24 @@ out vec4 OutColor; const float rI = 0.270 * 1.0f; // The intensity radius (in pixels). const float rL = 1.71 * 0.5f; // The geometric radius (in pixels). -const int WindowSize = 8; // The window size (in pixels). +const int WindowSize = 6; // The window size (in pixels). float gaussian (float theL, float theR) { return exp (-theL * theL / (2.0f * theR * theR)); } +vec4 posprocess (vec4 theColor) +{ + return clamp (theColor, 0.f, 1.f); +} + vec4 bilateral() { // Get the sizes int aWindow = WindowSize / 2; vec4 anOutCol = vec4 (0.f, 0.f, 0.f, 0.f); - vec4 aRefCol = texelFetch (uInputTexture, ivec2 (gl_FragCoord.xy), 0); + vec4 aRefCol = posprocess (texelFetch (uInputTexture, ivec2 (gl_FragCoord.xy), 0)); float aNorm = 0.f; // Compute the kernel @@ -31,7 +36,8 @@ vec4 bilateral() { for (int j = -aWindow; j <= aWindow; j++) { - vec4 aCol = texelFetch (uInputTexture, ivec2 (gl_FragCoord.xy) + ivec2 (j, i), 0); + vec4 aCol = posprocess ( + texelFetch (uInputTexture, ivec2 (gl_FragCoord.xy) + ivec2 (j, i), 0)); float A = gaussian (distance (aCol, aRefCol), rI); float B = gaussian (length (vec2(j, i)), rL); anOutCol += aCol * A * B; -- 2.39.5