| 12345678910111213141516171819202122 |
- uniform vec2 scale;
- uniform vec2 screenCenter;
- uniform vec2 lensCenter;
- uniform vec2 scaleIn;
- uniform vec4 hmdWarpParam;
- uniform sampler2D screenColorBuffer;
- void main()
- {
- vec2 theta = (gl_TexCoord[0].st - lensCenter) * scaleIn;
- float rSq = theta.x*theta.x + theta.y*theta.y;
- vec2 rvector = theta*(hmdWarpParam.x + hmdWarpParam.y*rSq + hmdWarpParam.z*rSq*rSq + hmdWarpParam.w*rSq*rSq*rSq);
- vec2 tc = (lensCenter + scale * rvector);
- if (any(bvec2(clamp(tc, screenCenter - vec2(0.5,0.5), screenCenter + vec2(0.5,0.5))-tc)))
- gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
- else
- gl_FragColor = texture2D(screenColorBuffer, tc);
- }
|