Blender Git Loki

Git Commits -> Revision ee7deb0

Revision ee7deb0 by Clément Foucault (eevee-rewrite)
October 8, 2021, 15:58 (GMT)
EEVEE: Subsurface Scattering: New implementation

This new implementation follows the technique described in
"Efficient screen space subsurface scattering Siggraph 2018".

Compared to the old implementation it fixes a lot of issues at
the cost of it being slower. This fixes:
- Light leaking between different objects.
- Light leaking between different surfaces with different depths.
- SSS radii are now "texturable" per pixel. No SSS surfaces limits.
- Noise should be lower.
- Precomputation is only done once for all SSS surfaces which lowers the
per material storage and precomputation time.

Implementation is also simpler as it is only a one pass processing.

We differ from the reference presentation by not precomputing the
RGB weights per samples. We actually compute them on the fly in order
to support varying SSS radii.

Notes:
- SSS IOR and SSS anisotropy are not supported.
- Object level light leak prevention might not work for high number of
objects in the scene (> 1024). In this case light leak might occur.
Adding or deleting (hidding) objects in the scene might change which
objects can leak.

Commit Details:

Full Hash: ee7deb09cf32675248c52b115ad462d711ead02d
Parent Commit: 9f85107
Lines Changed: +525, -10

3 Added Paths:

/source/blender/draw/engines/eevee/eevee_subsurface.cc (+166, -0) (View)
/source/blender/draw/engines/eevee/eevee_subsurface.hh (+89, -0) (View)
/source/blender/draw/engines/eevee/shaders/eevee_subsurface_eval_frag.glsl (+148, -0) (View)

12 Modified Paths:

/source/blender/draw/CMakeLists.txt (+2, -0) (Diff)
/source/blender/draw/engines/eevee/eevee_instance.cc (+1, -0) (Diff)
/source/blender/draw/engines/eevee/eevee_instance.hh (+3, -0) (Diff)
/source/blender/draw/engines/eevee/eevee_sampling.hh (+3, -0) (Diff)
/source/blender/draw/engines/eevee/eevee_shader.cc (+3, -0) (Diff)
/source/blender/draw/engines/eevee/eevee_shader.hh (+2, -0) (Diff)
/source/blender/draw/engines/eevee/eevee_shader_shared.hh (+30, -3) (Diff)
/source/blender/draw/engines/eevee/eevee_shading.cc (+32, -2) (Diff)
/source/blender/draw/engines/eevee/eevee_shading.hh (+33, -2) (Diff)
/source/blender/draw/engines/eevee/shaders/eevee_deferred_direct_frag.glsl (+11, -3) (Diff)
/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl (+1, -0) (Diff)
/source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl (+1, -0) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021