Eevee: Overhaul the volumetric system.
authorClément Foucault <foucault.clem@gmail.com>
Tue, 24 Oct 2017 12:49:00 +0000 (14:49 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Fri, 27 Oct 2017 20:49:15 +0000 (22:49 +0200)
commit66d8f82b832b58cba3273c0a4196fae6db0e1efd
tree682a3aba8fbd23ccd72a4e4f2a02fb36ad0a0d01
parent1c0c63ce5b3914be2d0828260e5ac777a7596d36
Eevee: Overhaul the volumetric system.

The system now uses several 3D textures in order to decouple every steps of the volumetric rendering.

See https://www.ea.com/frostbite/news/physically-based-unified-volumetric-rendering-in-frostbite for more details.

On the technical side, instead of using a compute shader to populate the 3D textures we use layered rendering with a geometry shader to render 1 fullscreen triangle per 3D texture slice.
20 files changed:
release/scripts/startup/bl_ui/properties_render.py
release/scripts/startup/bl_ui/properties_render_layer.py
source/blender/draw/CMakeLists.txt
source/blender/draw/engines/eevee/eevee_effects.c
source/blender/draw/engines/eevee/eevee_engine.c
source/blender/draw/engines/eevee/eevee_materials.c
source/blender/draw/engines/eevee/eevee_private.h
source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
source/blender/draw/engines/eevee/shaders/bsdf_direct_lib.glsl
source/blender/draw/engines/eevee/shaders/lamps_lib.glsl
source/blender/draw/engines/eevee/shaders/volumetric_frag.glsl
source/blender/draw/engines/eevee/shaders/volumetric_geom.glsl [new file with mode: 0644]
source/blender/draw/engines/eevee/shaders/volumetric_integration_frag.glsl [new file with mode: 0644]
source/blender/draw/engines/eevee/shaders/volumetric_lib.glsl [new file with mode: 0644]
source/blender/draw/engines/eevee/shaders/volumetric_resolve_frag.glsl [new file with mode: 0644]
source/blender/draw/engines/eevee/shaders/volumetric_scatter_frag.glsl [new file with mode: 0644]
source/blender/draw/engines/eevee/shaders/volumetric_vert.glsl [new file with mode: 0644]
source/blender/draw/intern/DRW_render.h
source/blender/draw/intern/draw_manager.c
source/blender/makesrna/intern/rna_layer.c