ScreenPos.glsl 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifdef COMPILEVS
  2. vec4 GetScreenPos(vec4 clipPos)
  3. {
  4. return vec4(
  5. clipPos.x * cGBufferOffsets.z + cGBufferOffsets.x * clipPos.w,
  6. clipPos.y * cGBufferOffsets.w + cGBufferOffsets.y * clipPos.w,
  7. 0.0,
  8. clipPos.w);
  9. }
  10. vec2 GetScreenPosPreDiv(vec4 clipPos)
  11. {
  12. return vec2(
  13. clipPos.x / clipPos.w * cGBufferOffsets.z + cGBufferOffsets.x,
  14. clipPos.y / clipPos.w * cGBufferOffsets.w + cGBufferOffsets.y);
  15. }
  16. vec2 GetQuadTexCoord(vec4 clipPos)
  17. {
  18. return vec2(
  19. clipPos.x / clipPos.w * 0.5 + 0.5,
  20. clipPos.y / clipPos.w * 0.5 + 0.5);
  21. }
  22. vec2 GetQuadTexCoordNoFlip(vec3 worldPos)
  23. {
  24. return vec2(
  25. worldPos.x * 0.5 + 0.5,
  26. -worldPos.y * 0.5 + 0.5);
  27. }
  28. vec3 GetFarRay(vec4 clipPos)
  29. {
  30. vec3 viewRay = vec3(
  31. clipPos.x / clipPos.w * cFrustumSize.x,
  32. clipPos.y / clipPos.w * cFrustumSize.y,
  33. cFrustumSize.z);
  34. return cCameraRot * viewRay;
  35. }
  36. vec3 GetNearRay(vec4 clipPos)
  37. {
  38. vec3 viewRay = vec3(
  39. clipPos.x / clipPos.w * cFrustumSize.x,
  40. clipPos.y / clipPos.w * cFrustumSize.y,
  41. 0.0);
  42. return (cCameraRot * viewRay) * cDepthMode.x;
  43. }
  44. #endif