File: ParametricBoxBlurShader.frag.txt

package info (click to toggle)
psychtoolbox-3 3.0.19.14.dfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,796 kB
  • sloc: ansic: 176,245; cpp: 20,103; objc: 5,393; sh: 2,753; python: 1,397; php: 384; makefile: 193; java: 113
file content (30 lines) | stat: -rw-r--r-- 962 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* Generic 2D box blur fragment shader for 2D rectangle textures.
// OpenGL program has to setup the texture unit 'FilterMap' with a lookup
// table texture for the per-outputpixel location boxfilter half-width and bind
// texture unit 'Image' with the image to be box-filtered. Texture filtering
// mode needs to be GL_NEAREST for defined results!
//
// (w)2007 by Mario Kleiner. Licensed under MIT license.
*/

#extension GL_ARB_texture_rectangle : enable

uniform sampler2DRect Image;
uniform sampler2DRect FilterMap;

void main()
{
    float dx, dy, count;
    vec4 sum = vec4(0.0);
    float HalfWidth;
    HalfWidth = floor(0.5 + 255.0 * texture2DRect(FilterMap, gl_TexCoord[0].st).r);
    for (dy = -HalfWidth; dy <= HalfWidth; dy++) {
      for (dx = -HalfWidth; dx <= HalfWidth; dx++) {
        sum += texture2DRect(Image, gl_TexCoord[0].st + vec2(dx, dy));
      }
    }

    count = 2.0 * HalfWidth + 1.0;
    gl_FragColor = sum / (count * count);
}