VRCorrect.frag 633 B

12345678910111213141516171819202122
  1. uniform vec2 scale;
  2. uniform vec2 screenCenter;
  3. uniform vec2 lensCenter;
  4. uniform vec2 scaleIn;
  5. uniform vec4 hmdWarpParam;
  6. uniform sampler2D screenColorBuffer;
  7. void main()
  8. {
  9. vec2 theta = (gl_TexCoord[0].st - lensCenter) * scaleIn;
  10. float rSq = theta.x*theta.x + theta.y*theta.y;
  11. vec2 rvector = theta*(hmdWarpParam.x + hmdWarpParam.y*rSq + hmdWarpParam.z*rSq*rSq + hmdWarpParam.w*rSq*rSq*rSq);
  12. vec2 tc = (lensCenter + scale * rvector);
  13. if (any(bvec2(clamp(tc, screenCenter - vec2(0.5,0.5), screenCenter + vec2(0.5,0.5))-tc)))
  14. gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
  15. else
  16. gl_FragColor = texture2D(screenColorBuffer, tc);
  17. }