]> OCCT Git - occt-copy.git/commitdiff
filtering fix
authorduv <duv@opencascade.com>
Thu, 16 Jul 2015 14:22:48 +0000 (17:22 +0300)
committerisk <isk@opencascade.com>
Tue, 15 Mar 2016 07:35:32 +0000 (10:35 +0300)
(cherry picked from commit 45dd1259a3e4df53f52de11105f925f0e7cd7010)

src/Shaders/Display.fs

index 66b71181da83a06bb0d909725eb456cf6e113470..8c7b3a5c9dbe5094f83ad0e75d59690f2ba35c86 100644 (file)
@@ -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;