diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2021-04-30 16:57:38 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2021-04-30 16:57:38 +0300 |
commit | 99a5d49a3814b507e9ef7f4a5e3da7a4570cd951 (patch) | |
tree | 147c047727dc56a1be6c5c2b10904ac9b4b65110 /source/blender/draw/engines/eevee/eevee_shader.hh | |
parent | c59156dac73a9c4c72002c89fb3db822d1943fee (diff) |
EEVEE: Initial implementation of deferred shading
This introduce a fat Gbuffer layout that groups closure data in groups
of similar BSDF. The goal is to have at least one sample for each
group to avoid too much code complexity and expected worse performance.
There is a lot of room for buffer reuse to reduce memory usage but it is
not considered a priority for now.
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_shader.hh')
-rw-r--r-- | source/blender/draw/engines/eevee/eevee_shader.hh | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_shader.hh b/source/blender/draw/engines/eevee/eevee_shader.hh index 706fd09cfc6..dcf701ffa8e 100644 --- a/source/blender/draw/engines/eevee/eevee_shader.hh +++ b/source/blender/draw/engines/eevee/eevee_shader.hh @@ -62,6 +62,8 @@ extern char datatoc_eevee_depth_of_field_scatter_vert_glsl[]; extern char datatoc_eevee_depth_of_field_setup_frag_glsl[]; extern char datatoc_eevee_depth_of_field_tiles_dilate_frag_glsl[]; extern char datatoc_eevee_depth_of_field_tiles_flatten_frag_glsl[]; +extern char datatoc_eevee_eval_direct_frag_glsl[]; +extern char datatoc_eevee_gbuffer_lib_glsl[]; extern char datatoc_eevee_film_filter_frag_glsl[]; extern char datatoc_eevee_film_lib_glsl[]; extern char datatoc_eevee_film_resolve_frag_glsl[]; @@ -71,6 +73,7 @@ extern char datatoc_eevee_motion_blur_gather_frag_glsl[]; extern char datatoc_eevee_motion_blur_lib_glsl[]; extern char datatoc_eevee_motion_blur_tiles_dilate_frag_glsl[]; extern char datatoc_eevee_motion_blur_tiles_flatten_frag_glsl[]; +extern char datatoc_eevee_object_deferred_frag_glsl[]; extern char datatoc_eevee_object_depth_simple_frag_glsl[]; extern char datatoc_eevee_object_forward_frag_glsl[]; extern char datatoc_eevee_object_lib_glsl[]; @@ -91,6 +94,10 @@ enum eShaderType { CULLING_DEBUG = 0, CULLING_LIGHT, + DEFERRED_EVAL_DIRECT, + + DEFERRED_MESH, + DEPTH_SIMPLE_MESH, DOF_BOKEH_LUT, @@ -167,6 +174,7 @@ class ShaderModule { DRW_SHADER_LIB_ADD(shader_lib_, common_math_geom_lib); DRW_SHADER_LIB_ADD(shader_lib_, common_hair_lib); DRW_SHADER_LIB_ADD(shader_lib_, common_view_lib); + DRW_SHADER_LIB_ADD(shader_lib_, eevee_gbuffer_lib); DRW_SHADER_LIB_ADD(shader_lib_, eevee_sampling_lib); DRW_SHADER_LIB_ADD(shader_lib_, eevee_ltc_lib); DRW_SHADER_LIB_ADD(shader_lib_, eevee_light_lib); @@ -201,6 +209,8 @@ class ShaderModule { SHADER_FULLSCREEN(CULLING_LIGHT, eevee_culling_light_frag); SHADER_FULLSCREEN(FILM_FILTER, eevee_film_filter_frag); SHADER_FULLSCREEN(FILM_RESOLVE, eevee_film_resolve_frag); + SHADER_FULLSCREEN(DEFERRED_EVAL_DIRECT, eevee_eval_direct_frag); + SHADER(DEFERRED_MESH, eevee_object_mesh_vert, nullptr, eevee_object_deferred_frag, nullptr); SHADER(DEPTH_SIMPLE_MESH, eevee_object_mesh_vert, nullptr, |