From 2bb7d767c4d6bbc9c6128bef33a2caff132b7e99 Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Sun, 24 Dec 2023 22:17:31 +0100 Subject: [PATCH] EEVEE-Next: Add Raytracing Presets This PR adds raytracing presets. It contains a preset with default settings and users are able to add their own. Pull Request: https://projects.blender.org/blender/blender/pulls/116223 --- scripts/presets/eevee/raytracing/Default.py | 14 +++++++++++ scripts/startup/bl_operators/presets.py | 28 +++++++++++++++++++++ scripts/startup/bl_ui/properties_render.py | 15 +++++++++-- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 scripts/presets/eevee/raytracing/Default.py diff --git a/scripts/presets/eevee/raytracing/Default.py b/scripts/presets/eevee/raytracing/Default.py new file mode 100644 index 00000000000..f127e996efc --- /dev/null +++ b/scripts/presets/eevee/raytracing/Default.py @@ -0,0 +1,14 @@ +import bpy +eevee = bpy.context.scene.eevee +options = eevee.ray_tracing_options + +eevee.ray_tracing_method = 'SCREEN' +options.resolution_scale = '2' +options.sample_clamp = 10.0 +options.screen_trace_max_roughness = 0.5 +options.screen_trace_quality = 0.25 +options.screen_trace_thickness = 0.20000000298023224 +options.use_denoise = True +options.denoise_spatial = True +options.denoise_temporal = True +options.denoise_bilateral = True diff --git a/scripts/startup/bl_operators/presets.py b/scripts/startup/bl_operators/presets.py index 8b0b103d8b1..a8e95797fba 100644 --- a/scripts/startup/bl_operators/presets.py +++ b/scripts/startup/bl_operators/presets.py @@ -515,6 +515,33 @@ class AddPresetTrackingSettings(AddPresetBase, Operator): preset_subdir = "tracking_settings" +class AddPresetEEVEERaytracing(AddPresetBase, Operator): + """Add or remove an EEVEE raytracing preset""" + bl_idname = "render.eevee_raytracing_preset_add" + bl_label = "Add Raytracing Preset" + preset_menu = "RENDER_PT_eevee_next_raytracing_presets" + + preset_defines = [ + "eevee = bpy.context.scene.eevee", + "options = eevee.ray_tracing_options" + ] + + preset_values = [ + "eevee.ray_tracing_method", + "options.resolution_scale", + "options.sample_clamp", + "options.screen_trace_max_roughness", + "options.screen_trace_quality", + "options.screen_trace_thickness", + "options.use_denoise", + "options.denoise_spatial", + "options.denoise_temporal", + "options.denoise_bilateral", + ] + + preset_subdir = "eevee/raytracing" + + class AddPresetNodeColor(AddPresetBase, Operator): """Add or remove a Node Color Preset""" bl_idname = "node.node_color_preset_add" @@ -718,6 +745,7 @@ classes = ( AddPresetTrackingTrackColor, AddPresetGpencilBrush, AddPresetGpencilMaterial, + AddPresetEEVEERaytracing, ExecutePreset, WM_MT_operator_presets, ) diff --git a/scripts/startup/bl_ui/properties_render.py b/scripts/startup/bl_ui/properties_render.py index 61a6aef84af..f87bee08245 100644 --- a/scripts/startup/bl_ui/properties_render.py +++ b/scripts/startup/bl_ui/properties_render.py @@ -3,13 +3,13 @@ # SPDX-License-Identifier: GPL-2.0-or-later from bpy.types import Panel +from bl_ui.properties_grease_pencil_common import GreasePencilSimplifyPanel from bl_ui.space_view3d import ( VIEW3D_PT_shading_lighting, VIEW3D_PT_shading_color, VIEW3D_PT_shading_options, ) - -from bl_ui.properties_grease_pencil_common import GreasePencilSimplifyPanel +from bl_ui.utils import PresetPanel class RenderButtonsPanel: @@ -555,6 +555,13 @@ class RENDER_PT_eevee_screen_space_reflections(RenderButtonsPanel, Panel): col.prop(props, "ssr_firefly_fac") +class RENDER_PT_eevee_next_raytracing_presets(PresetPanel, Panel): + bl_label = "Raytracing Presets" + preset_subdir = "eevee/raytracing" + preset_operator = "script.execute_preset" + preset_add_operator = "render.eevee_raytracing_preset_add" + + class RENDER_PT_eevee_next_raytracing(RenderButtonsPanel, Panel): bl_label = "Raytracing" bl_options = {'DEFAULT_CLOSED'} @@ -564,6 +571,9 @@ class RENDER_PT_eevee_next_raytracing(RenderButtonsPanel, Panel): def poll(cls, context): return (context.engine in cls.COMPAT_ENGINES) + def draw_header_preset(self, _context): + RENDER_PT_eevee_next_raytracing_presets.draw_panel_header(self.layout) + def draw(self, context): layout = self.layout layout.use_property_split = True @@ -1243,6 +1253,7 @@ classes = ( RENDER_PT_eevee_subsurface_scattering, RENDER_PT_eevee_screen_space_reflections, RENDER_PT_eevee_next_horizon_scan, + RENDER_PT_eevee_next_raytracing_presets, RENDER_PT_eevee_next_raytracing, RENDER_PT_eevee_next_screen_trace, RENDER_PT_eevee_next_denoise,