ScreenPos.hlsl 937 B

1234567891011121314151617181920212223242526272829303132333435
  1. float4 GetScreenPos(float4 clipPos)
  2. {
  3. return float4(
  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. float2 GetScreenPosPreDiv(float4 clipPos)
  10. {
  11. return float2(
  12. clipPos.x / clipPos.w * cGBufferOffsets.z + cGBufferOffsets.x,
  13. -clipPos.y / clipPos.w * cGBufferOffsets.w + cGBufferOffsets.y);
  14. }
  15. float3 GetFarRay(float4 clipPos)
  16. {
  17. float3 viewRay = float3(
  18. clipPos.x / clipPos.w * cFrustumSize.x,
  19. clipPos.y / clipPos.w * cFrustumSize.y,
  20. cFrustumSize.z);
  21. return mul(viewRay, cCameraRot);
  22. }
  23. float3 GetNearRay(float4 clipPos)
  24. {
  25. float3 viewRay = float3(
  26. clipPos.x / clipPos.w * cFrustumSize.x,
  27. clipPos.y / clipPos.w * cFrustumSize.y,
  28. 0.0);
  29. return mul(viewRay, cCameraRot) * cDepthMode.z;
  30. }