[Bf-blender-cvs] [954f201b3e1] temp-cycles-denoising: Cycles Denoising: Move denoising properties to the Cycles addon and improve the UI
Lukas Stockner
noreply at git.blender.org
Thu May 4 14:20:50 CEST 2017
Commit: 954f201b3e1eab7bda71d318f895e81911c8189b
Author: Lukas Stockner
Date: Wed May 3 23:30:58 2017 +0200
Branches: temp-cycles-denoising
https://developer.blender.org/rB954f201b3e1eab7bda71d318f895e81911c8189b
Cycles Denoising: Move denoising properties to the Cycles addon and improve the UI
===================================================================
M intern/cycles/blender/addon/properties.py
M intern/cycles/blender/addon/ui.py
M intern/cycles/blender/blender_session.cpp
M source/blender/blenkernel/intern/scene.c
M source/blender/blenloader/intern/versioning_270.c
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py
index a8a0f0bfc70..6f912fe3fb0 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -1195,6 +1195,75 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
default=False,
)
+ cls.use_denoising = BoolProperty(
+ name="Use Denoising",
+ description="Denoise the rendered image",
+ default=False,
+ )
+ cls.denoising_diffuse_direct = BoolProperty(
+ name="Diffuse Direct",
+ description="Denoise the direct diffuse lighting",
+ default=True,
+ )
+ cls.denoising_diffuse_indirect = BoolProperty(
+ name="Diffuse Indirect",
+ description="Denoise the indirect diffuse lighting",
+ default=True,
+ )
+ cls.denoising_glossy_direct = BoolProperty(
+ name="Glossy Direct",
+ description="Denoise the direct glossy lighting",
+ default=True,
+ )
+ cls.denoising_glossy_indirect = BoolProperty(
+ name="Glossy Indirect",
+ description="Denoise the indirect glossy lighting",
+ default=True,
+ )
+ cls.denoising_transmission_direct = BoolProperty(
+ name="Transmission Direct",
+ description="Denoise the direct transmission lighting",
+ default=True,
+ )
+ cls.denoising_transmission_indirect = BoolProperty(
+ name="Transmission Indirect",
+ description="Denoise the indirect transmission lighting",
+ default=True,
+ )
+ cls.denoising_subsurface_direct = BoolProperty(
+ name="Subsurface Direct",
+ description="Denoise the direct subsurface lighting",
+ default=True,
+ )
+ cls.denoising_subsurface_indirect = BoolProperty(
+ name="Subsurface Indirect",
+ description="Denoise the indirect subsurface lighting",
+ default=True,
+ )
+ cls.denoising_strength = FloatProperty(
+ name="Denoising Strength",
+ description="Controls neighbor pixel weighting for the denoising filter (lower values preserve more detail, but aren't as smooth)",
+ min=0.0, max=1.0,
+ default=0.5,
+ )
+ cls.denoising_feature_strength = FloatProperty(
+ name="Denoising Feature Strength",
+ description="Controls removal of noisy image feature passes (lower values preserve more detail, but aren't as smooth)",
+ min=0.0, max=1.0,
+ default=0.5,
+ )
+ cls.denoising_radius = IntProperty(
+ name="Denoising Radius",
+ description="Size of the image area that's used to denoise a pixel (higher values are smoother, but might lose detail and are slower)",
+ min=1, max=50,
+ default=8,
+ )
+ cls.denoising_relative_pca = BoolProperty(
+ name="Relative filter",
+ description="When removing that don't carry information, use a relative threshold instead of an absolute one (can help to reduce artifacts, but might cause detail loss around edges)",
+ default=False,
+ )
+
@classmethod
def unregister(cls):
del bpy.types.SceneRenderLayer.cycles
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py
index c1c042bdef7..6e2a0b9c208 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -589,7 +589,8 @@ class CyclesRender_PT_denoising(CyclesButtonsPanel, Panel):
def draw_header(self, context):
rd = context.scene.render
rl = rd.layers.active
- self.layout.prop(rl, "use_denoising", text="")
+ crl = rl.cycles
+ self.layout.prop(crl, "use_denoising", text="")
def draw(self, context):
layout = self.layout
@@ -597,26 +598,45 @@ class CyclesRender_PT_denoising(CyclesButtonsPanel, Panel):
scene = context.scene
rd = scene.render
rl = rd.layers.active
+ crl = rl.cycles
- col = layout.column()
+ split = layout.split()
+ col = split.column()
sub = col.column(align=True)
- sub.prop(rl, "denoising_radius")
- sub.prop(rl, "denoising_strength", slider=True)
- sub.prop(rl, "denoising_feature_strength", slider=True)
- sub.prop(rl, "denoising_relative_pca")
+ sub.prop(crl, "denoising_radius", text="Radius")
+ sub.prop(crl, "denoising_strength", slider=True, text="Strength")
+ col = split.column()
sub = col.column(align=True)
- row = sub.row(align=True)
- row.prop(rl, "denoising_diffuse_direct", toggle=True)
- row.prop(rl, "denoising_glossy_direct", toggle=True)
- row.prop(rl, "denoising_transmission_direct", toggle=True)
- row.prop(rl, "denoising_subsurface_direct", toggle=True)
- row = sub.row(align=True)
- row.prop(rl, "denoising_diffuse_indirect", toggle=True)
- row.prop(rl, "denoising_glossy_indirect", toggle=True)
- row.prop(rl, "denoising_transmission_indirect", toggle=True)
- row.prop(rl, "denoising_subsurface_indirect", toggle=True)
+ sub.prop(crl, "denoising_feature_strength", slider=True, text="Feature Strength")
+ sub.prop(crl, "denoising_relative_pca")
+
+ layout.separator()
+
+ row = layout.row()
+ row.label(text="Diffuse:")
+ sub = row.row(align=True)
+ sub.prop(crl, "denoising_diffuse_direct", text="Direct", toggle=True)
+ sub.prop(crl, "denoising_diffuse_indirect", text="Indirect", toggle=True)
+
+ row = layout.row()
+ row.label(text="Glossy:")
+ sub = row.row(align=True)
+ sub.prop(crl, "denoising_glossy_direct", text="Direct", toggle=True)
+ sub.prop(crl, "denoising_glossy_indirect", text="Indirect", toggle=True)
+
+ row = layout.row()
+ row.label(text="Transmission:")
+ sub = row.row(align=True)
+ sub.prop(crl, "denoising_transmission_direct", text="Direct", toggle=True)
+ sub.prop(crl, "denoising_transmission_indirect", text="Indirect", toggle=True)
+
+ row = layout.row()
+ row.label(text="Subsurface:")
+ sub = row.row(align=True)
+ sub.prop(crl, "denoising_subsurface_direct", text="Direct", toggle=True)
+ sub.prop(crl, "denoising_subsurface_indirect", text="Indirect", toggle=True)
class Cycles_PT_post_processing(CyclesButtonsPanel, Panel):
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index e3e248d4010..aebbc9e3fff 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -408,25 +408,27 @@ void BlenderSession::render()
}
buffer_params.passes = passes;
- buffer_params.denoising_data_pass = b_layer_iter->use_denoising();
- session->tile_manager.schedule_denoising = b_layer_iter->use_denoising();
- session->params.use_denoising = b_layer_iter->use_denoising();
+
+ PointerRNA crl = RNA_pointer_get(&b_layer_iter->ptr, "cycles");
+ buffer_params.denoising_data_pass = get_boolean(crl, "use_denoising");
+ session->tile_manager.schedule_denoising = get_boolean(crl, "use_denoising");
+ session->params.use_denoising = get_boolean(crl, "use_denoising");
scene->film->denoising_data_pass = buffer_params.denoising_data_pass;
scene->film->denoising_flags = 0;
- if(!b_layer_iter->denoising_diffuse_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_DIFFUSE_DIR;
- if(!b_layer_iter->denoising_diffuse_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_DIFFUSE_IND;
- if(!b_layer_iter->denoising_glossy_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_GLOSSY_DIR;
- if(!b_layer_iter->denoising_glossy_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_GLOSSY_IND;
- if(!b_layer_iter->denoising_transmission_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_TRANSMISSION_DIR;
- if(!b_layer_iter->denoising_transmission_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_TRANSMISSION_IND;
- if(!b_layer_iter->denoising_subsurface_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_SUBSURFACE_DIR;
- if(!b_layer_iter->denoising_subsurface_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_SUBSURFACE_IND;
+ if(!get_boolean(crl, "denoising_diffuse_direct")) scene->film->denoising_flags |= DENOISING_CLEAN_DIFFUSE_DIR;
+ if(!get_boolean(crl, "denoising_diffuse_indirect")) scene->film->denoising_flags |= DENOISING_CLEAN_DIFFUSE_IND;
+ if(!get_boolean(crl, "denoising_glossy_direct")) scene->film->denoising_flags |= DENOISING_CLEAN_GLOSSY_DIR;
+ if(!get_boolean(crl, "denoising_glossy_indirect")) scene->film->denoising_flags |= DENOISING_CLEAN_GLOSSY_IND;
+ if(!get_boolean(crl, "denoising_transmission_direct")) scene->film->denoising_flags |= DENOISING_CLEAN_TRANSMISSION_DIR;
+ if(!get_boolean(crl, "denoising_transmission_indirect")) scene->film->denoising_flags |= DENOISING_CLEAN_TRANSMISSION_IND;
+ if(!get_boolean(crl, "denoising_subsurface_direct")) scene->film->denoising_flags |= DENOISING_CLEAN_SUBSURFACE_DIR;
+ if(!get_boolean(crl, "denoising_subsurface_indirect")) scene->film->denoising_flags |= DENOISING_CLEAN_SUBSURFACE_IND;
scene->film->denoising_clean_pass = (scene->film->denoising_flags & DENOISING_CLEAN_ALL_PASSES);
buffer_params.denoising_clean_pass = scene->film->denoising_clean_pass;
- session->params.denoising_radius = b_layer_iter->denoising_radius();
- session->params.denoising_strength = b_layer_iter->denoising_strength();
- session->params.denoising_feature_strength = b_layer_iter->denoising_feature_strength();
- session->params.denoising_rel
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list