ScreenPos.vert 1.2 KB

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