Blender Git Commit Log

Git Commits -> Revision 5697f96

April 18, 2021, 15:30 (GMT)
EEVEE: Light: 2.5D Culling: Initial implementation

This follows closely the implementation of 2.5D tiled light
culling described in the presentation:
"Improved Culling for Tiled and Clustered Rendering"
from Michal Drobot
http://advances.realtimerendering.com/s2017/2017_Sig_Improved_Culling_final.pdf

I chose the tile + Z binning approach for its high depth range support
and low CPU overhead & low memory consumption compared to the cluster
based culling. The cons is that the culling is a bit less precise in
some aspect but it is quite balanced.

The culling is done by the `Culling` object which is templated to easily
be reused for light probes cullg.

The Z-binning process is described starting from slide 20 in the
reference pdf.

I also implemented a debug pass to visualize false negative (light
culled when they shouldn't) and light evaluation density.
This is useful to detect failure case and hotspot. This could be exposed
as a developper only render pass in the future.

Some optimization of the reference implementation requires extensions
not yet added to GPU module and will be added later.

Commit Details:

Full Hash: 5697f96608ce96f25e02b3888325d0d23a613175
Parent Commit: 93b774a
Lines Changed: +933, -212

6 Added Paths:

/source/blender/draw/engines/eevee/eevee_culling.cc (+68, -0) (View)
/source/blender/draw/engines/eevee/eevee_culling.hh (+314, -0) (View)
/source/blender/draw/engines/eevee/shaders/eevee_culling_debug_frag.glsl (+62, -0) (View)
/source/blender/draw/engines/eevee/shaders/eevee_culling_iter_lib.glsl (+69, -0) (View)
/source/blender/draw/engines/eevee/shaders/eevee_culling_lib.glsl (+179, -0) (View)
/source/blender/draw/engines/eevee/shaders/eevee_culling_light_frag.glsl (+51, -0) (View)

2 Deleted Paths:

/source/blender/draw/engines/eevee/eevee_cluster.hh (+0, -69)
/source/blender/draw/engines/eevee/shaders/eevee_light_lib.glsl (+0, -32)

12 Modified Paths:

/.clang-format (+2, -1) (Diff)
/source/blender/draw/CMakeLists.txt (+5, -1) (Diff)
/source/blender/draw/engines/eevee/eevee_light.cc (+42, -43) (Diff)
/source/blender/draw/engines/eevee/eevee_light.hh (+44, -22) (Diff)
/source/blender/draw/engines/eevee/eevee_shader.hh (+12, -3) (Diff)
/source/blender/draw/engines/eevee/eevee_shader_shared.hh (+40, -30) (Diff)
/source/blender/draw/engines/eevee/eevee_shading.cc (+6, -3) (Diff)
/source/blender/draw/engines/eevee/eevee_shading.hh (+8, -1) (Diff)
/source/blender/draw/engines/eevee/eevee_view.cc (+13, -1) (Diff)
/source/blender/draw/engines/eevee/eevee_view.hh (+1, -0) (Diff)
/source/blender/draw/engines/eevee/shaders/eevee_object_forward_frag.glsl (+11, -6) (Diff)
/source/blender/draw/intern/shaders/common_math_lib.glsl (+6, -0) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021