diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index ae2a7a8ccb9..0cff312cd01 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -300,6 +300,17 @@ def draw(self, context): layout.active = props.use_volumetric_shadows layout.prop(props, "volumetric_shadow_samples", text="Samples") +class RENDER_PT_eevee_volumetric_blending(RenderButtonsPanel, Panel): + bl_label = "Volumetric Blending" + bl_parent_id = "RENDER_PT_eevee_volumetric" + COMPAT_ENGINES = {'BLENDER_EEVEE'} + + def draw_header(self, context): + scene = context.scene + props = scene.eevee + self.layout.prop(props, "use_volumetric_blending", text="") + def draw(self, context): + pass class RENDER_PT_eevee_subsurface_scattering(RenderButtonsPanel, Panel): bl_label = "Subsurface Scattering" @@ -703,6 +714,7 @@ class RENDER_PT_simplify_greasepencil(RenderButtonsPanel, Panel, GreasePencilSim RENDER_PT_eevee_volumetric, RENDER_PT_eevee_volumetric_lighting, RENDER_PT_eevee_volumetric_shadows, + RENDER_PT_eevee_volumetric_blending, RENDER_PT_eevee_performance, RENDER_PT_eevee_hair, RENDER_PT_eevee_shadows, diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c index 1e75968f1de..9967593a67e 100644 --- a/source/blender/draw/engines/eevee/eevee_volumes.c +++ b/source/blender/draw/engines/eevee/eevee_volumes.c @@ -167,7 +167,9 @@ void EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) } if (do_taa) { - common_data->vol_history_alpha = 0.0f; + if (!(scene_eval->eevee.flag & SCE_EEVEE_VOLUMETRIC_BLENDING)) { /* BoneMaster, Force to use frostbite's paper solution (blend from last frame) to avoid ugly banding */ + common_data->vol_history_alpha = 0.0f; + } current_sample = effects->taa_current_sample - 1; effects->volume_current_sample = -1; } diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index f73f99eb4e7..bfbe192e9f7 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -2413,6 +2413,7 @@ enum { SCE_EEVEE_GI_AUTOBAKE = (1 << 19), SCE_EEVEE_SHADOW_SOFT = (1 << 20), SCE_EEVEE_OVERSCAN = (1 << 21), + SCE_EEVEE_VOLUMETRIC_BLENDING = (1 << 22), }; /* SceneEEVEE->shadow_method */ diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index b93922e46f2..04b4dddb79e 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -7261,6 +7261,13 @@ static void rna_def_scene_eevee(BlenderRNA *brna) RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY); RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + prop = RNA_def_property(srna, "use_volumetric_blending", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", SCE_EEVEE_VOLUMETRIC_BLENDING); + RNA_def_property_ui_text( + prop, "Volumetric Blending", "Enable volumes blending with previous frame"); + RNA_def_property_override_flag(prop, PROPOVERRIDE_OVERRIDABLE_LIBRARY); + RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL); + prop = RNA_def_property(srna, "volumetric_light_clamp", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, FLT_MAX); RNA_def_property_ui_text(prop, "Clamp", "Maximum light contribution, reducing noise");