oculusDistortionCorrection.fragment.fx 735 B

12345678910111213141516171819202122232425262728293031
  1. #ifdef GL_ES
  2. precision highp float;
  3. #endif
  4. // Samplers
  5. varying vec2 vUV;
  6. uniform sampler2D textureSampler;
  7. uniform vec2 LensCenter;
  8. uniform vec2 Scale;
  9. uniform vec2 ScaleIn;
  10. uniform vec4 HmdWarpParam;
  11. vec2 HmdWarp(vec2 in01) {
  12. vec2 theta = (in01 - LensCenter) * ScaleIn; // Scales to [-1, 1]
  13. float rSq = theta.x * theta.x + theta.y * theta.y;
  14. vec2 rvector = theta * (HmdWarpParam.x + HmdWarpParam.y * rSq + HmdWarpParam.z * rSq * rSq + HmdWarpParam.w * rSq * rSq * rSq);
  15. return LensCenter + Scale * rvector;
  16. }
  17. void main(void)
  18. {
  19. vec2 tc = HmdWarp(vUV);
  20. if (tc.x <0.0 || tc.x>1.0 || tc.y<0.0 || tc.y>1.0)
  21. gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);
  22. else{
  23. gl_FragColor = vec4(texture2D(textureSampler, tc).rgb, 1.0);
  24. }
  25. }