Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2021-04-30 16:57:38 +0300
committerClément Foucault <foucault.clem@gmail.com>2021-04-30 16:57:38 +0300
commit99a5d49a3814b507e9ef7f4a5e3da7a4570cd951 (patch)
tree147c047727dc56a1be6c5c2b10904ac9b4b65110 /source/blender/draw/engines/eevee/eevee_shader.hh
parentc59156dac73a9c4c72002c89fb3db822d1943fee (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.hh10
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,