1
0
Fork 0

HDR: Separate fog from aerosols

This commit is contained in:
Fernando García Liñán 2024-01-08 19:08:16 +01:00
parent 497f73de80
commit aa213b1c46
2 changed files with 12 additions and 5 deletions

View file

@ -203,6 +203,7 @@ void get_atmosphere_collision_coefficients(in float h,
out vec4 aerosol_scattering, out vec4 aerosol_scattering,
out vec4 molecular_absorption, out vec4 molecular_absorption,
out vec4 molecular_scattering, out vec4 molecular_scattering,
out vec4 fog_scattering,
out vec4 extinction) out vec4 extinction)
{ {
h = max(h, 1e-3); // In case height is negative h = max(h, 1e-3); // In case height is negative
@ -217,12 +218,13 @@ void get_atmosphere_collision_coefficients(in float h,
aerosol_absorption = aerosol_absorption_cross_section * aerosol_density; aerosol_absorption = aerosol_absorption_cross_section * aerosol_density;
aerosol_scattering = aerosol_scattering_cross_section * aerosol_density; aerosol_scattering = aerosol_scattering_cross_section * aerosol_density;
// Add contribution from fog // Fog
aerosol_scattering += get_fog_scattering_coefficient(h); fog_scattering = get_fog_scattering_coefficient(h);
extinction = extinction =
aerosol_absorption + aerosol_scattering + aerosol_absorption + aerosol_scattering +
molecular_absorption + molecular_scattering; molecular_absorption + molecular_scattering +
fog_scattering;
} }
/* /*
@ -297,11 +299,13 @@ vec4 compute_inscattering(in vec3 ray_origin,
vec4 aerosol_absorption, aerosol_scattering; vec4 aerosol_absorption, aerosol_scattering;
vec4 molecular_absorption, molecular_scattering; vec4 molecular_absorption, molecular_scattering;
vec4 fog_scattering;
vec4 extinction; vec4 extinction;
get_atmosphere_collision_coefficients( get_atmosphere_collision_coefficients(
altitude, altitude,
aerosol_absorption, aerosol_scattering, aerosol_absorption, aerosol_scattering,
molecular_absorption, molecular_scattering, molecular_absorption, molecular_scattering,
fog_scattering,
extinction); extinction);
vec4 transmittance_to_sun = transmittance_from_lut( vec4 transmittance_to_sun = transmittance_from_lut(
@ -313,7 +317,7 @@ vec4 compute_inscattering(in vec3 ray_origin,
vec4 S = vec4 S =
molecular_scattering * (molecular_phase * transmittance_to_sun + ms) + molecular_scattering * (molecular_phase * transmittance_to_sun + ms) +
aerosol_scattering * (aerosol_phase * transmittance_to_sun + ms); (aerosol_scattering + fog_scattering) * (aerosol_phase * transmittance_to_sun + ms);
vec4 step_transmittance = exp(-dt * extinction); vec4 step_transmittance = exp(-dt * extinction);

View file

@ -15,6 +15,7 @@ void get_atmosphere_collision_coefficients(in float h,
out vec4 aerosol_scattering, out vec4 aerosol_scattering,
out vec4 molecular_absorption, out vec4 molecular_absorption,
out vec4 molecular_scattering, out vec4 molecular_scattering,
out vec4 fog_scattering,
out vec4 extinction); out vec4 extinction);
void main() void main()
@ -40,11 +41,13 @@ void main()
vec4 aerosol_absorption, aerosol_scattering; vec4 aerosol_absorption, aerosol_scattering;
vec4 molecular_absorption, molecular_scattering; vec4 molecular_absorption, molecular_scattering;
vec4 fog_scattering;
vec4 extinction; vec4 extinction;
get_atmosphere_collision_coefficients( get_atmosphere_collision_coefficients(
altitude, altitude,
aerosol_absorption, aerosol_scattering, aerosol_absorption, aerosol_scattering,
molecular_absorption, molecular_scattering, molecular_absorption, molecular_scattering,
fog_scattering,
extinction); extinction);
result += extinction * dt; result += extinction * dt;