[Bf-blender-cvs] [cf64c891f5] soc-2016-cycles_denoising: Cycles Denoising: Fix Cross Denoising after Rendering

Lukas Stockner noreply at git.blender.org
Wed Feb 1 05:19:11 CET 2017


Commit: cf64c891f590c881f9317db79486081f9759ba42
Author: Lukas Stockner
Date:   Fri Jan 27 04:46:52 2017 +0100
Branches: soc-2016-cycles_denoising
https://developer.blender.org/rBcf64c891f590c881f9317db79486081f9759ba42

Cycles Denoising: Fix Cross Denoising after Rendering

===================================================================

M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/render/denoising.cpp
M	intern/cycles/render/session.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index e44bf6a5b0..ca5ac9976e 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -875,9 +875,12 @@ RenderBuffers* BlenderSync::get_render_buffer(Device *device,
 			denoising_passes |= denoising_type;
 			if(denoising_type == DENOISING_PASS_CLEAN)
 				params.selective_denoising = true;
+			if(denoising_type == DENOISING_PASS_NOISY_B)
+				params.cross_denoising = true;
 		}
 	}
 	params.denoising_passes = ((~denoising_passes & DENOISING_PASS_REQUIRED) == 0);
+	assert(!params.cross_denoising || (denoising_passes & DENOISING_PASS_NOISY_B_VAR));
 
 	RenderBuffers *buffer = new RenderBuffers(device);
 	buffer->reset(device, params);
diff --git a/intern/cycles/render/denoising.cpp b/intern/cycles/render/denoising.cpp
index 8dd07d3022..a5ce18c18b 100644
--- a/intern/cycles/render/denoising.cpp
+++ b/intern/cycles/render/denoising.cpp
@@ -136,6 +136,7 @@ static RenderBuffers* load_frame(string file, Device *device, RenderBuffers *buf
 				params.full_x = params.full_y = 0;
 				params.denoising_passes = true;
 				params.selective_denoising = (passes & DENOISING_PASS_CLEAN);
+				params.cross_denoising = (passes & DENOISING_PASS_NOISY_B) && (passes & DENOISING_PASS_NOISY_B_VAR);
 				params.frames = numframes;
 
 				buffers = new RenderBuffers(device);
@@ -248,4 +249,4 @@ bool denoise_standalone(SessionParams &session_params,
 	return true;
 }
 
-CCL_NAMESPACE_END
\ No newline at end of file
+CCL_NAMESPACE_END
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index 72b2839eb6..f4dd529dd6 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -809,7 +809,7 @@ void Session::run_denoise()
 		kernel_data.film.pass_stride = buffers->params.get_passes_size();
 		kernel_data.film.pass_denoising = buffers->params.get_denoise_offset();
 		kernel_data.film.pass_no_denoising = buffers->params.selective_denoising? kernel_data.film.pass_denoising+20 : 0;
-		kernel_data.film.denoise_cross = 0;
+		kernel_data.film.denoise_cross = buffers->params.cross_denoising;
 		kernel_data.film.exposure = 1.0f;
 		kernel_data.film.num_frames = buffers->params.frames;
 		kernel_data.film.prev_frames = params.prev_frames;




More information about the Bf-blender-cvs mailing list