[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