File: HoughDiskDetectionShader.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 (37 lines) | stat: -rw-r--r-- 1,149 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
31
32
33
34
35
36
37
/* 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 vec4 Roi;
uniform float RadiusSquared;
uniform float HalfWidth; 

void main()
{
    float dx, dy, indisk;
    float sum = 0.0;
    float sample;

    if (gl_TexCoord[0].x < Roi.x || gl_TexCoord[0].y < Roi.y || gl_TexCoord[0].x > Roi.z || gl_TexCoord[0].y > Roi.w) discard;

    for (dy = -HalfWidth; dy <= HalfWidth; dy++) {
      for (dx = -HalfWidth; dx <= HalfWidth; dx++) {
        sample = texture2DRect(Image, gl_TexCoord[0].xy + vec2(dx, dy)).a;
        indisk = (2.0 * step((dx * dx + dy * dy), RadiusSquared)) - 1.0;

        sum += sample * indisk;
      }
    }

    gl_FragColor.rg  = gl_TexCoord[0].xy;
    gl_FragColor.ba  = vec2(sum);
}