annotate sdr/sdr.glsl @ 20:ff3bfd4da86b
removed unnecessary check for framebuffer resizing when not using vr mode
author |
John Tsiombikas <nuclear@member.fsf.org> |
date |
Tue, 01 Oct 2013 12:51:20 +0300 |
parents |
f3672317e5c2 |
children |
|
rev |
line source |
nuclear@13
|
1 uniform sampler2D tex;
|
nuclear@13
|
2 uniform float aspect, scale;
|
nuclear@13
|
3 uniform float lens_center_offset;
|
nuclear@13
|
4 uniform vec4 dist_factors;
|
nuclear@18
|
5 uniform vec2 tex_scale;
|
nuclear@13
|
6
|
nuclear@14
|
7 vec2 distort_texcoords(in vec2 tc);
|
nuclear@13
|
8 float barrel_scale(float x, in vec4 k);
|
nuclear@13
|
9
|
nuclear@13
|
10 void main()
|
nuclear@13
|
11 {
|
nuclear@14
|
12 vec2 tc = distort_texcoords(gl_TexCoord[0].xy);
|
nuclear@13
|
13
|
nuclear@18
|
14 float vis = any(greaterThan(tc, vec2(1.0))) || any(lessThan(tc, vec2(0.0))) ? 0.0 : 1.0;
|
nuclear@14
|
15
|
nuclear@18
|
16 gl_FragColor.rgb = texture2D(tex, tc * tex_scale).rgb * vis;
|
nuclear@13
|
17 gl_FragColor.a = 1.0;
|
nuclear@13
|
18 }
|
nuclear@13
|
19
|
nuclear@14
|
20 vec2 distort_texcoords(in vec2 tc)
|
nuclear@13
|
21 {
|
nuclear@13
|
22 // map tc [0, 1] -> [-1, 1]
|
nuclear@13
|
23 vec2 pt = tc * 2.0 - 1.0;
|
nuclear@13
|
24
|
nuclear@13
|
25 pt.x += lens_center_offset * 2.0;
|
nuclear@13
|
26 pt.y /= aspect; // correct for aspect ratio
|
nuclear@13
|
27
|
nuclear@13
|
28 float rad = barrel_scale(dot(pt, pt), dist_factors);
|
nuclear@13
|
29 pt *= rad; // scale the point by the computer distortion radius
|
nuclear@13
|
30
|
nuclear@14
|
31 pt /= scale;
|
nuclear@13
|
32 pt.y *= aspect;
|
nuclear@13
|
33 pt.x -= lens_center_offset * 2.0;
|
nuclear@13
|
34
|
nuclear@13
|
35 // map back to range [0, 1]
|
nuclear@13
|
36 return pt * 0.5 + 0.5;
|
nuclear@13
|
37 }
|
nuclear@13
|
38
|
nuclear@13
|
39 float barrel_scale(float rad, in vec4 k)
|
nuclear@13
|
40 {
|
nuclear@13
|
41 float radsq = rad * rad;
|
nuclear@13
|
42 float radquad = radsq * radsq;
|
nuclear@13
|
43 return k.x + k.y * radsq + k.z * radquad + k.w * radquad * radsq;
|
nuclear@13
|
44 }
|