[Bf-blender-cvs] [71e1c3bc4b] soc-2016-cycles_denoising: Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising
Lukas Stockner
noreply at git.blender.org
Wed Feb 1 18:22:15 CET 2017
Commit: 71e1c3bc4b89a5b436f2b864ffb24150b29d74a0
Author: Lukas Stockner
Date: Wed Feb 1 18:07:35 2017 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rB71e1c3bc4b89a5b436f2b864ffb24150b29d74a0
Merge remote-tracking branch 'origin/master' into soc-2016-cycles_denoising
===================================================================
===================================================================
diff --cc intern/cycles/blender/addon/properties.py
index ad1ccb476e,5c51f9afc2..1e068566b4
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@@ -1136,34 -1156,6 +1156,39 @@@ class CyclesCurveRenderSettings(bpy.typ
def unregister(cls):
del bpy.types.Scene.cycles_curves
+class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
+ @classmethod
+ def register(cls):
+ bpy.types.SceneRenderLayer.cycles = PointerProperty(
+ name="Cycles SceneRenderLayer Settings",
+ description="Cycles SceneRenderLayer Settings",
+ type=cls,
+ )
- cls.pass_debug_bvh_traversal_steps = BoolProperty(
- name="Debug BVH Traversal Steps",
++ cls.pass_debug_bvh_traversed_nodes = BoolProperty(
++ name="Debug BVH Traversed Nodes",
+ description="Store Debug BVH Traversal Steps pass",
+ default=False,
+ )
+ cls.pass_debug_bvh_traversed_instances = BoolProperty(
+ name="Debug BVH Traversed Instances",
+ description="Store Debug BVH Traversed Instances pass",
+ default=False,
+ )
+ cls.pass_debug_ray_bounces = BoolProperty(
+ name="Debug Ray Bounces",
+ description="Store Debug Ray Bounces pass",
+ default=False,
+ )
++ cls.pass_debug_bvh_intersections = BoolProperty(
++ name="Debug BVH Intersections",
++ description="Store Debug BVH Intersections pass",
++ default=False,
++ )
+
+ @classmethod
+ def unregister(cls):
+ del bpy.types.SceneRenderLayer.cycles
+
class CyclesCurveSettings(bpy.types.PropertyGroup):
@classmethod
diff --cc intern/cycles/blender/addon/ui.py
index d6463441ad,44af5f7efe..74b61b02e3
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@@ -509,11 -530,8 +533,12 @@@ class CyclesRender_PT_layer_passes(Cycl
col.prop(rl, "use_pass_emit", text="Emission")
col.prop(rl, "use_pass_environment")
- if hasattr(rd, "debug_pass_type"):
- layout.prop(rd, "debug_pass_type")
+ if _cycles.with_cycles_debug:
+ col = layout.column()
- col.prop(crl, "pass_debug_bvh_traversal_steps")
++ col.prop(crl, "pass_debug_bvh_traversed_nodes")
+ col.prop(crl, "pass_debug_bvh_traversed_instances")
+ col.prop(crl, "pass_debug_ray_bounces")
++ col.prop(crl, "pass_debug_bvh_intersections")
class CyclesRender_PT_views(CyclesButtonsPanel, Panel):
diff --cc intern/cycles/blender/blender_sync.cpp
index a232f7d304,d8043105cd..093870eebb
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@@ -471,135 -480,6 +480,140 @@@ void BlenderSync::sync_images(
}
}
+/* Passes */
+PassType BlenderSync::get_pass_type(BL::RenderPass& b_pass)
+{
+ string name = b_pass.passname();
+#define MAP_PASS(passname, passtype) if(name == passname) return passtype;
+ /* NOTE: Keep in sync with defined names from DNA_scene_types.h */
+ MAP_PASS("Combined", PASS_COMBINED);
+ MAP_PASS("Depth", PASS_DEPTH);
+ MAP_PASS("Mist", PASS_MIST);
+ MAP_PASS("Normal", PASS_NORMAL);
+ MAP_PASS("IndexOB", PASS_OBJECT_ID);
+ MAP_PASS("UV", PASS_UV);
+ MAP_PASS("Vector", PASS_MOTION);
+ MAP_PASS("IndexMA", PASS_MATERIAL_ID);
+
+ MAP_PASS("DiffDir", PASS_DIFFUSE_DIRECT);
+ MAP_PASS("GlossDir", PASS_GLOSSY_DIRECT);
+ MAP_PASS("TransDir", PASS_TRANSMISSION_DIRECT);
+ MAP_PASS("SubsurfaceDir", PASS_SUBSURFACE_DIRECT);
+
+ MAP_PASS("DiffInd", PASS_DIFFUSE_INDIRECT);
+ MAP_PASS("GlossInd", PASS_GLOSSY_INDIRECT);
+ MAP_PASS("TransInd", PASS_TRANSMISSION_INDIRECT);
+ MAP_PASS("SubsurfaceInd", PASS_SUBSURFACE_INDIRECT);
+
+ MAP_PASS("DiffCol", PASS_DIFFUSE_COLOR);
+ MAP_PASS("GlossCol", PASS_GLOSSY_COLOR);
+ MAP_PASS("TransCol", PASS_TRANSMISSION_COLOR);
+ MAP_PASS("SubsurfaceCol", PASS_SUBSURFACE_COLOR);
+
+ MAP_PASS("Emit", PASS_EMISSION);
+ MAP_PASS("Env", PASS_BACKGROUND);
+ MAP_PASS("AO", PASS_AO);
+ MAP_PASS("Shadow", PASS_SHADOW);
+
+#ifdef __KERNEL_DEBUG__
- MAP_PASS("Debug BVH Traversal Steps", PASS_BVH_TRAVERSAL_STEPS);
++ MAP_PASS("Debug BVH Traversed Nodes", PASS_BVH_TRAVERSED_NODES);
+ MAP_PASS("Debug BVH Traversed Instances", PASS_BVH_TRAVERSED_INSTANCES);
++ MAP_PASS("Debug BVH Intersections", PASS_BVH_INTERSECTIONS);
+ MAP_PASS("Debug Ray Bounces", PASS_RAY_BOUNCES);
+#endif
+
+ return PASS_NONE;
+}
+
+DenoisingPassType BlenderSync::get_denoising_pass_type(BL::RenderPass& b_pass)
+{
+ string name = b_pass.passname();
+
+ MAP_PASS("Denoising Normal", DENOISING_PASS_NORMAL);
+ MAP_PASS("Denoising Normal Variance", DENOISING_PASS_NORMAL_VAR);
+ MAP_PASS("Denoising Albedo", DENOISING_PASS_ALBEDO);
+ MAP_PASS("Denoising Albedo Variance", DENOISING_PASS_ALBEDO_VAR);
+ MAP_PASS("Denoising Depth", DENOISING_PASS_DEPTH);
+ MAP_PASS("Denoising Depth Variance", DENOISING_PASS_DEPTH_VAR);
+ MAP_PASS("Denoising Shadow A", DENOISING_PASS_SHADOW_A);
+ MAP_PASS("Denoising Shadow B", DENOISING_PASS_SHADOW_B);
+ MAP_PASS("Denoising Noisy", DENOISING_PASS_NOISY);
+ MAP_PASS("Denoising Noisy Variance", DENOISING_PASS_NOISY_VAR);
+ MAP_PASS("Denoising Noisy B", DENOISING_PASS_NOISY_B);
+ MAP_PASS("Denoising Noisy B Variance", DENOISING_PASS_NOISY_B_VAR);
+ MAP_PASS("Denoising Clean", DENOISING_PASS_CLEAN);
+#undef MAP_PASS
+
+ return DENOISING_PASS_NONE;
+}
+
+array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
+ BL::SceneRenderLayer& b_srlay)
+{
+ array<Pass> passes;
+ Pass::add(PASS_COMBINED, passes);
+
+ /* loop over passes */
+ BL::RenderLayer::passes_iterator b_pass_iter;
+
+ for(b_rlay.passes.begin(b_pass_iter); b_pass_iter != b_rlay.passes.end(); ++b_pass_iter) {
+ BL::RenderPass b_pass(*b_pass_iter);
+ PassType pass_type = get_pass_type(b_pass);
+
+ if(pass_type == PASS_MOTION && scene->integrator->motion_blur)
+ continue;
+ if(pass_type != PASS_NONE)
+ Pass::add(pass_type, passes);
+ }
+
+#define ADD_PASS(channels, passname, chan_id) b_engine.add_pass(channels, passname, b_srlay.name().c_str(), NULL, chan_id);
+
+#ifdef __KERNEL_DEBUG__
+ PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
- if(get_boolean(crp, "pass_debug_bvh_traversal_steps")) {
- ADD_PASS(1, "Debug BVH Traversal Steps", "X");
- Pass::add(PASS_BVH_TRAVERSAL_STEPS, passes);
++ if(get_boolean(crp, "pass_debug_bvh_traversed_nodes")) {
++ ADD_PASS(1, "Debug BVH Traversed Nodes", "X");
++ Pass::add(PASS_BVH_TRAVERSED_NODES, passes);
+ }
+ if(get_boolean(crp, "pass_debug_bvh_traversed_instances")) {
+ ADD_PASS(1, "Debug BVH Traversed Instances", "X");
+ Pass::add(PASS_BVH_TRAVERSED_INSTANCES, passes);
+ }
+ if(get_boolean(crp, "pass_debug_ray_bounces")) {
+ ADD_PASS(1, "Debug Ray Bounces", "X");
+ Pass::add(PASS_RAY_BOUNCES, passes);
+ }
++ if(get_boolean(crp, "pass_debug_bvh_intersections")) {
++ ADD_PASS(1, "Debug BVH Intersections", "X");
++ Pass::add(PASS_BVH_INTERSECTIONS, passes);
++ }
+#endif
+
+ if(b_srlay.keep_denoise_data()) {
+ ADD_PASS(3, "Denoising Normal", "XYZ");
+ ADD_PASS(3, "Denoising Normal Variance", "XYZ");
+ ADD_PASS(3, "Denoising Albedo", "RGB");
+ ADD_PASS(3, "Denoising Albedo Variance", "RGB");
+ ADD_PASS(1, "Denoising Depth", "Z");
+ ADD_PASS(1, "Denoising Depth Variance", "Z");
+ ADD_PASS(3, "Denoising Shadow A", "ABV");
+ ADD_PASS(3, "Denoising Shadow B", "ABV");
+ ADD_PASS(3, "Denoising Noisy", "RGB");
+ ADD_PASS(3, "Denoising Noisy Variance", "RGB");
+ if(b_srlay.filter_cross()) {
+ ADD_PASS(3, "Denoising Noisy B", "RGB");
+ ADD_PASS(3, "Denoising Noisy B Variance", "RGB");
+ }
+ if(!(b_srlay.denoise_diffuse_direct() && b_srlay.denoise_diffuse_indirect() &&
+ b_srlay.denoise_glossy_direct() && b_srlay.denoise_glossy_indirect() &&
+ b_srlay.denoise_transmission_direct() && b_srlay.denoise_transmission_indirect() &&
+ b_srlay.denoise_subsurface_direct() && b_srlay.denoise_subsurface_indirect())) {
+ ADD_PASS(3, "Denoising Clean", "RGB");
+ }
+ }
+
+ return passes;
+}
+
/* Scene Parameters */
SceneParams BlenderSync::get_scene_params(BL::Scene& b_scene,
diff --cc intern/cycles/kernel/kernel_path.h
index f2e9fa357a,f90701a826..eada6916e5
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@@ -777,19 -790,20 +793,22 @@@ ccl_device_inline float kernel_path_int
float rbsdf = path_state_rng_1D_for_decision(kg, rng, &state, PRNG_BSDF);
shader_eval_surface(kg, &sd, rng, &state, rbsdf, state.flag, SHADER_CONTEXT_MAIN);
+ bool write_denoising_shadow = kernel_write_denoising_passes(kg, buffer, &state, &sd, sample, make_float3(0.0f, 0.0f, 0.0f));
+
/* holdout */
#ifdef __HOLDOUT__
- if((sd.flag & (SD_HOLDOUT|SD_HOLDOUT_MASK)) && (state.flag & PATH_RAY_CAMERA)) {
+ if(((sd.flag & SD_HOLDOUT) ||
+ (sd.object_flag & SD_OBJECT_HOLDOUT_MASK)) &&
+ (state.flag & PATH_RAY_CAMERA))
+ {
if(kernel_data.background.transparent) {
float3 holdout_weight;
-
- if(sd.flag & SD_HOLDOUT_MASK)
+ if(sd.object_flag & SD_OBJECT_HOLDOUT_MASK) {
holdout_weight = make_float3(1.0f, 1.0f, 1.0f);
- else
+ }
+ else {
holdout_weight = shader_holdout_eval(kg, &sd);
-
+ }
/* any throughput is ok, should all be identical here */
L_transparent += average(holdout_weight*throughput);
}
diff --cc intern/cycles/kernel/kernel_path_branched.h
index fba83bb6c3,ff2b828795..d8ef12546c
--- a/intern/cycles/kernel/kernel_path_branched.h
+++ b/intern/cycles/kernel/kernel_path_branched.h
@@@ -472,19 -472,17 +474,19 @@@ ccl_device float kernel_branched_path_i
shader_eval_surface(kg, &sd, rng, &state, 0.0f, state.flag, SHADER_CONTEXT_MAIN);
shader_merge_closures(&sd);
+ kernel_write_denoising_passes(kg, buffer, &state, &sd, sample, make_float3(0.0f, 0.0f, 0.0f));
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list