File: GVFInitShader.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 (38 lines) | stat: -rw-r--r-- 977 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
38
/* Shader for performing initialization of the constant arrays b, c1 and c2
 * as part of GVF initialization:
 *
 * Input: RED   = dx gradient field.
 *        GREEN = dy gradient field.
 *
 * Output: RED   = b = 1 - mag(dx,dy) field.
 *         GREEN = c1 = dx * mag field.
 *         BLUE  = c2 = dy * mag field.
 *
 * (w)2006 by Mario Kleiner. Licensed under MIT license.
*/

#extension GL_ARB_texture_rectangle : enable

uniform sampler2DRect Image;

void main()
{
    float m, c1, c2;

    /* Read gradient - texel for position (x,y)==(s,t): */
    vec2 g = texture2DRect(Image, gl_TexCoord[0].st).rg;
    /* Compute magnitude m : */
    m = (g.x * g.x + g.y * g.y);

    /* b = 1-m to RED channel: */
    gl_FragColor.r = 1.0 - m;

    /* c1 = m * dx to GREEN channel: */
    gl_FragColor.g = m * g.x;

    /* c2 = m * dy to BLUE channel: */
    gl_FragColor.b = m * g.y;

    /* Ignore alpha channel: */
    gl_FragColor.a = 0.0;
}