Fog.hlsl 616 B

1234567891011121314151617181920212223242526272829303132
  1. #ifndef UNITY_POSTFX_FOG
  2. #define UNITY_POSTFX_FOG
  3. half4 _FogColor;
  4. float3 _FogParams;
  5. #define FOG_DENSITY _FogParams.x
  6. #define FOG_START _FogParams.y
  7. #define FOG_END _FogParams.z
  8. half ComputeFog(float z)
  9. {
  10. half fog = 0.0;
  11. #if FOG_LINEAR
  12. fog = (FOG_END - z) / (FOG_END - FOG_START);
  13. #elif FOG_EXP
  14. fog = exp2(-FOG_DENSITY * z);
  15. #else // FOG_EXP2
  16. fog = FOG_DENSITY * z;
  17. fog = exp2(-fog * fog);
  18. #endif
  19. return saturate(fog);
  20. }
  21. float ComputeFogDistance(float depth)
  22. {
  23. float dist = depth * _ProjectionParams.z;
  24. dist -= _ProjectionParams.y;
  25. return dist;
  26. }
  27. #endif // UNITY_POSTFX_FOG