diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2020-01-14 18:47:54 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2020-01-14 18:55:11 +0300 |
commit | 39d5d11e022a39383103f1e46dd74dbf5a36a850 (patch) | |
tree | 62d493afc2b45e3cc39cbe1f436d142940fca903 /source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl | |
parent | ba5bbf14f92bfb87d8d42b5e4c68a2b7864c90cf (diff) |
Fix T71402 EEVEE: Transparent material add volume scattering
This adds correct scattering handling by removing the extra light added
to opaque pass.
Also fix T69062 EEVEE alpha blend and volumetrics
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl b/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl index b9a971570df..359e6fe4cc2 100644 --- a/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl @@ -934,6 +934,11 @@ void main() vec3 vol_transmit, vol_scatter; volumetric_resolve(uvs, gl_FragCoord.z, vol_transmit, vol_scatter); + /* Removes part of the volume scattering that have + * already been added to the destination pixels. + * Since we do that using the blending pipeline we need to account for material transmittance. */ + vol_scatter -= vol_scatter * cl.transmittance; + outRadiance = vec4(cl.radiance * vol_transmit + vol_scatter, alpha * holdout); outTransmittance = vec4(cl.transmittance, transmit * holdout); # else |