fog.fs 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. #version 120
  2. /* Prototypes */
  3. vec3 apply_fog(vec3 pixel, vec3 position, vec3 camera_position,
  4. float fog_distance, float fog_height,
  5. vec3 horizon_color, vec3 sky_color,
  6. float fog_color_scale);
  7. vec3 apply_fog_blue(vec3 pixel, vec3 position, vec3 camera_position);
  8. /* End */
  9. vec3 apply_fog(vec3 pixel, vec3 position, vec3 camera_position,
  10. float fog_distance, float fog_height,
  11. vec3 horizon_color, vec3 sky_color,
  12. float fog_color_scale) {
  13. float dist = distance(position, camera_position);
  14. float far_amount = clamp(dist / fog_distance - 0.25, 0.1, 1.1);
  15. float valley_amount = clamp(fog_height / (position.y + fog_height) - 0.5, 0.25, 0.75);
  16. float amount = clamp(far_amount * pow(valley_amount, 1.5) * 7.5, 0.0, 0.75);
  17. //vec3 fog_color = mix(horizon_color, sky_color, clamp(position.y / fog_color_scale, 0, 1));
  18. vec3 fog_color = sky_color;
  19. return mix(pixel, fog_color, amount);
  20. }
  21. vec3 apply_fog_blue(vec3 pixel, vec3 position, vec3 camera_position) {
  22. return apply_fog(pixel, position, camera_position, 500.1, 200.1, 5.0 * vec3(0.5098,0.6501,0.7529), 5.0 * vec3(0.066,0.2,0.450), 500.1);
  23. }