vrDistortionCorrection.fragment.fx 713 B

12345678910111213141516171819202122232425
  1. // Samplers
  2. varying vec2 vUV;
  3. uniform sampler2D textureSampler;
  4. uniform vec2 LensCenter;
  5. uniform vec2 Scale;
  6. uniform vec2 ScaleIn;
  7. uniform vec4 HmdWarpParam;
  8. vec2 HmdWarp(vec2 in01) {
  9. vec2 theta = (in01 - LensCenter) * ScaleIn; // Scales to [-1, 1]
  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. return LensCenter + Scale * rvector;
  13. }
  14. void main(void)
  15. {
  16. vec2 tc = HmdWarp(vUV);
  17. if (tc.x <0.0 || tc.x>1.0 || tc.y<0.0 || tc.y>1.0)
  18. gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
  19. else{
  20. gl_FragColor = vec4(texture2D(textureSampler, tc).rgb, 1.0);
  21. }
  22. }