Eevee: Fix Black volumetrics.

Was caused by a division by 0.
This commit is contained in:
Clément Foucault 2017-11-01 18:48:55 +01:00
parent cd7e43f29f
commit cf6e45b522
2 changed files with 3 additions and 3 deletions

View File

@ -61,7 +61,7 @@ float phase_function(vec3 v, vec3 l, float g)
float cos_theta = dot(v, l);
g = clamp(g, -1.0 + 1e-3, 1.0 - 1e-3);
float sqr_g = g * g;
return (1- sqr_g) / (4.0 * M_PI * pow(1 + sqr_g - 2 * g * cos_theta, 3.0 / 2.0));
return (1- sqr_g) / max(1e-8, 4.0 * M_PI * pow(1 + sqr_g - 2 * g * cos_theta, 3.0 / 2.0));
}
#ifdef LAMPS_LIB

View File

@ -39,7 +39,7 @@ void main()
vec3 wdir = cameraVec;
vec2 phase = texelFetch(volumePhase, volume_cell, 0).rg;
float s_anisotropy = phase.x / phase.y;
float s_anisotropy = phase.x / max(1.0, phase.y);
/* Environment : Average color. */
outScattering.rgb += irradiance_volumetric(worldPosition) * s_scattering * phase_function_isotropic();
@ -78,6 +78,6 @@ void main()
/* Catch NaNs */
if (any(isnan(outScattering)) || any(isnan(outTransmittance))) {
outScattering = vec4(0.0);
outTransmittance = vec4(0.0);
outTransmittance = vec4(1.0);
}
}