[Bf-blender-cvs] [d8aaf25c23f] master: Eevee: Shadow map refactor
Clément Foucault
noreply at git.blender.org
Thu Sep 5 17:45:29 CEST 2019
Commit: d8aaf25c23fa10ee121dc4fdd1cafe544bcca355
Author: Clément Foucault
Date: Thu Aug 22 16:04:25 2019 +0200
Branches: master
https://developer.blender.org/rBd8aaf25c23fa10ee121dc4fdd1cafe544bcca355
Eevee: Shadow map refactor
Reviewed By: brecht
Differential Revision: http://developer.blender.org/D5659
===================================================================
M release/scripts/startup/bl_ui/properties_data_light.py
M release/scripts/startup/bl_ui/properties_render.py
M source/blender/blenkernel/intern/scene.c
M source/blender/blenloader/intern/versioning_280.c
M source/blender/blenloader/intern/versioning_defaults.c
M source/blender/draw/CMakeLists.txt
M source/blender/draw/engines/eevee/eevee_data.c
M source/blender/draw/engines/eevee/eevee_engine.c
M source/blender/draw/engines/eevee/eevee_lightcache.c
M source/blender/draw/engines/eevee/eevee_lightprobes.c
M source/blender/draw/engines/eevee/eevee_lights.c
M source/blender/draw/engines/eevee/eevee_materials.c
M source/blender/draw/engines/eevee/eevee_private.h
M source/blender/draw/engines/eevee/eevee_render.c
A source/blender/draw/engines/eevee/eevee_sampling.c
A source/blender/draw/engines/eevee/eevee_shadows.c
A source/blender/draw/engines/eevee/eevee_shadows_cascade.c
A source/blender/draw/engines/eevee/eevee_shadows_cube.c
M source/blender/draw/engines/eevee/eevee_subsurface.c
M source/blender/draw/engines/eevee/eevee_volumes.c
M source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl
M source/blender/draw/engines/eevee/shaders/default_frag.glsl
M source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
A source/blender/draw/engines/eevee/shaders/effect_translucency_frag.glsl
M source/blender/draw/engines/eevee/shaders/lights_lib.glsl
M source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl
M source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
D source/blender/draw/engines/eevee/shaders/shadow_copy_frag.glsl
D source/blender/draw/engines/eevee/shaders/shadow_process_geom.glsl
D source/blender/draw/engines/eevee/shaders/shadow_process_vert.glsl
D source/blender/draw/engines/eevee/shaders/shadow_store_frag.glsl
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_manager_exec.c
M source/blender/gpu/intern/gpu_framebuffer.c
M source/blender/gpu/shaders/material/gpu_shader_material_diffuse.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_eevee_specular.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_glass.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_glossy.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_refraction.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_shader_to_rgba.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_subsurface_scattering.glsl
M source/blender/gpu/shaders/material/gpu_shader_material_translucent.glsl
M source/blender/makesdna/DNA_light_types.h
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_light.c
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_light.py b/release/scripts/startup/bl_ui/properties_data_light.py
index 376b7561739..6f730cf3307 100644
--- a/release/scripts/startup/bl_ui/properties_data_light.py
+++ b/release/scripts/startup/bl_ui/properties_data_light.py
@@ -175,17 +175,10 @@ class DATA_PT_EEVEE_shadow(DataButtonsPanel, Panel):
col = layout.column()
sub = col.column(align=True)
- sub.prop(light, "shadow_buffer_clip_start", text="Clip Start")
- if light.type == 'SUN':
- sub.prop(light, "shadow_buffer_clip_end", text="End")
-
- col.prop(light, "shadow_buffer_soft", text="Softness")
-
- col.separator()
+ if light.type != 'SUN':
+ sub.prop(light, "shadow_buffer_clip_start", text="Clip Start")
col.prop(light, "shadow_buffer_bias", text="Bias")
- col.prop(light, "shadow_buffer_exp", text="Exponent")
- col.prop(light, "shadow_buffer_bleed_bias", text="Bleed Bias")
class DATA_PT_EEVEE_shadow_cascaded_shadow_map(DataButtonsPanel, Panel):
@@ -245,7 +238,6 @@ class DATA_PT_EEVEE_shadow_contact(DataButtonsPanel, Panel):
col.active = light.use_shadow and light.use_contact_shadow
col.prop(light, "contact_shadow_distance", text="Distance")
- col.prop(light, "contact_shadow_soft_size", text="Softness")
col.prop(light, "contact_shadow_bias", text="Bias")
col.prop(light, "contact_shadow_thickness", text="Thickness")
@@ -335,8 +327,8 @@ classes = (
DATA_PT_EEVEE_light,
DATA_PT_EEVEE_light_distance,
DATA_PT_EEVEE_shadow,
- DATA_PT_EEVEE_shadow_contact,
DATA_PT_EEVEE_shadow_cascaded_shadow_map,
+ DATA_PT_EEVEE_shadow_contact,
DATA_PT_area,
DATA_PT_spot,
DATA_PT_falloff_curve,
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 92b649e863c..3481f9522f8 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -314,7 +314,6 @@ class RENDER_PT_eevee_subsurface_scattering(RenderButtonsPanel, Panel):
col = layout.column()
col.prop(props, "sss_samples")
col.prop(props, "sss_jitter_threshold")
- col.prop(props, "use_sss_separate_albedo")
class RENDER_PT_eevee_screen_space_reflections(RenderButtonsPanel, Panel):
@@ -366,7 +365,6 @@ class RENDER_PT_eevee_shadows(RenderButtonsPanel, Panel):
props = scene.eevee
col = layout.column()
- col.prop(props, "shadow_method")
col.prop(props, "shadow_cube_size", text="Cube Size")
col.prop(props, "shadow_cascade_size", text="Cascade Size")
col.prop(props, "use_shadow_high_bitdepth")
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 6f8d14252f0..b36e5a276e2 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -961,7 +961,6 @@ void BKE_scene_init(Scene *sce)
sce->eevee.motion_blur_samples = 8;
sce->eevee.motion_blur_shutter = 0.5f;
- sce->eevee.shadow_method = SHADOW_ESM;
sce->eevee.shadow_cube_size = 512;
sce->eevee.shadow_cascade_size = 1024;
@@ -972,7 +971,7 @@ void BKE_scene_init(Scene *sce)
sce->eevee.flag = SCE_EEVEE_VOLUMETRIC_LIGHTS | SCE_EEVEE_GTAO_BENT_NORMALS |
SCE_EEVEE_GTAO_BOUNCE | SCE_EEVEE_TAA_REPROJECTION |
- SCE_EEVEE_SSR_HALF_RESOLUTION;
+ SCE_EEVEE_SSR_HALF_RESOLUTION | SCE_EEVEE_SHADOW_SOFT;
}
Scene *BKE_scene_add(Main *bmain, const char *name)
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index a735b399ce3..54d2bd8499f 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -1854,7 +1854,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
EEVEE_GET_BOOL(props, shadow_high_bitdepth, SCE_EEVEE_SHADOW_HIGH_BITDEPTH);
EEVEE_GET_BOOL(props, taa_reprojection, SCE_EEVEE_TAA_REPROJECTION);
// EEVEE_GET_BOOL(props, sss_enable, SCE_EEVEE_SSS_ENABLED);
- EEVEE_GET_BOOL(props, sss_separate_albedo, SCE_EEVEE_SSS_SEPARATE_ALBEDO);
+ // EEVEE_GET_BOOL(props, sss_separate_albedo, SCE_EEVEE_SSS_SEPARATE_ALBEDO);
EEVEE_GET_BOOL(props, ssr_enable, SCE_EEVEE_SSR_ENABLED);
EEVEE_GET_BOOL(props, ssr_refraction, SCE_EEVEE_SSR_REFRACTION);
EEVEE_GET_BOOL(props, ssr_halfres, SCE_EEVEE_SSR_HALF_RESOLUTION);
diff --git a/source/blender/blenloader/intern/versioning_defaults.c b/source/blender/blenloader/intern/versioning_defaults.c
index fa22fd46068..657e79f718a 100644
--- a/source/blender/blenloader/intern/versioning_defaults.c
+++ b/source/blender/blenloader/intern/versioning_defaults.c
@@ -265,6 +265,9 @@ static void blo_update_defaults_scene(Main *bmain, Scene *scene)
/* Change default cubemap quality. */
scene->eevee.gi_filter_quality = 3.0f;
+ /* Enable Soft Shadows by default. */
+ scene->eevee.flag |= SCE_EEVEE_SHADOW_SOFT;
+
/* Be sure curfalloff and primitive are initializated */
ToolSettings *ts = scene->toolsettings;
if (ts->gp_sculpt.cur_falloff == NULL) {
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 19ab96868ef..50851c41770 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -103,7 +103,11 @@ set(SRC
engines/eevee/eevee_occlusion.c
engines/eevee/eevee_render.c
engines/eevee/eevee_screen_raytrace.c
+ engines/eevee/eevee_sampling.c
engines/eevee/eevee_shaders.c
+ engines/eevee/eevee_shadows.c
+ engines/eevee/eevee_shadows_cube.c
+ engines/eevee/eevee_shadows_cascade.c
engines/eevee/eevee_subsurface.c
engines/eevee/eevee_temporal_sampling.c
engines/eevee/eevee_volumes.c
@@ -201,6 +205,7 @@ data_to_c_simple(engines/eevee/shaders/effect_mist_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/effect_motion_blur_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/effect_ssr_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/effect_subsurface_frag.glsl SRC)
+data_to_c_simple(engines/eevee/shaders/effect_translucency_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/effect_temporal_aa.glsl SRC)
data_to_c_simple(engines/eevee/shaders/lightprobe_planar_downsample_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/lightprobe_planar_downsample_geom.glsl SRC)
@@ -209,10 +214,6 @@ data_to_c_simple(engines/eevee/shaders/prepass_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/prepass_vert.glsl SRC)
data_to_c_simple(engines/eevee/shaders/shadow_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/shadow_vert.glsl SRC)
-data_to_c_simple(engines/eevee/shaders/shadow_process_vert.glsl SRC)
-data_to_c_simple(engines/eevee/shaders/shadow_process_geom.glsl SRC)
-data_to_c_simple(engines/eevee/shaders/shadow_store_frag.glsl SRC)
-data_to_c_simple(engines/eevee/shaders/shadow_copy_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/bsdf_lut_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/btdf_lut_frag.glsl SRC)
data_to_c_simple(engines/eevee/shaders/bsdf_common_lib.glsl SRC)
diff --git a/source/blender/draw/engines/eevee/eevee_data.c b/source/blender/draw/engines/eevee/eevee_data.c
index b792f93ced2..dd70ee1bd4b 100644
--- a/source/blender/draw/engines/eevee/eevee_data.c
+++ b/source/blender/draw/engines/eevee/eevee_data.c
@@ -35,23 +35,13 @@ void EEVEE_view_layer_data_free(void *storage)
MEM_SAFE_FREE(sldata->lights);
DRW_UBO_FREE_SAFE(sldata->light_ubo);
DRW_UBO_FREE_SAFE(sldata->shadow_ubo);
- DRW_UBO_FREE_SAFE(sldata->shadow_render_ubo);
- GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cube_target_fb);
- GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cube_store_fb);
- GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cube_copy_fb);
- GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cascade_target_fb);
- GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cascade_store_fb);
- GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_cascade_copy_fb);
- DRW_TEXTURE_FREE_SAFE(sldata->shadow_cube_target);
- DRW_TEXTURE_FREE_SAFE(sldata->shadow_cube_blur);
+ GPU_FRAMEBUFFER_FREE_SAFE(sldata->shadow_fb);
DRW_TEXTURE_FREE_SAFE(sldata->shadow_cube_pool);
- DRW_TEXTURE_FREE_SAFE(sldata->shadow_cascade_target);
- DRW_TEXTURE_FREE_SAFE(sldata->shadow_cascade_blur);
DRW_TEXTURE_FREE_SAFE(sldata->shadow_cascade_pool);
- MEM_SAFE_FREE(sldata->shcasters_buffers[0].shadow_casters);
- MEM_SAFE_FREE(sldata->shcasters_buffers[0].flags);
- MEM_SAFE_FREE(sldata->shcasters_buffers[1].shadow_casters);
- MEM_SAFE_FREE(sldata->shcasters_buffers[1].flags);
+ for (int i = 0; i < 2; i++) {
+ MEM_SAFE_FREE(sldata->shcasters_buffers[i].bbox);
+ MEM_SAFE_FREE(sldata->shcasters_buffers[i].update);
+ }
if (sldata->fallback_lightcache) {
EEVEE_lightcache_free(sldata->fallback_lightcache);
@@ -153,7 +143,6 @@ static void eevee_light_data_init(DrawData *dd)
{
EEVEE_LightEngineData *led = (EEVEE_LightEngineData *)dd;
led->need_update = true;
- led->prev_cube_shadow_id = -1;
}
EEVEE_LightEngineData *EEVEE_light_data_get(Object *ob)
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index ab4eb7b8532..a1096390bce 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -84,7 +84,7 @@ static void eevee_engine_init(void *ved)
/* EEVEE_effects_init needs to go first for TAA */
EEVEE_effects_init(sldata, vedata, camera, false);
EEVEE_materials_init(sldata, stl, fbl);
- EEVEE_lights_init(sldata);
+ EEVEE_shadows_init(sldata);
EEVEE_lightprobes_init(sldata, vedata);
}
@@ -139,7 +139,7 @@ void EEVEE_cache_populate(void *vedata, Object *ob)
}
if (cast_shadow) {
- EEVEE_lights_cache_shcaster_object_add(sldata, ob);
+ EEVEE_shadows_caster_register(sldata, ob);
}
}
@@ -223,7 +223,7 @@ static void eevee_draw_background(void *vedata)
/* Refresh shadows */
DRW_stats_group_start("Shadows");
- EEVEE_dra
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list