[Bf-blender-cvs] [1730a7261e] temp-cycles-denoising: Cycles Denoising: Rename variables for consistency and move them out of KernelData

Lukas Stockner noreply at git.blender.org
Mon Feb 13 02:05:47 CET 2017


Commit: 1730a7261e9c2edd7b27721b49af787cbd71cb02
Author: Lukas Stockner
Date:   Sat Feb 11 04:38:00 2017 +0100
Branches: temp-cycles-denoising
https://developer.blender.org/rB1730a7261e9c2edd7b27721b49af787cbd71cb02

Cycles Denoising: Rename variables for consistency and move them out of KernelData

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

M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/device/device_cpu.cpp
M	intern/cycles/device/device_cuda.cpp
M	intern/cycles/device/device_denoising.cpp
M	intern/cycles/device/device_denoising.h
M	intern/cycles/device/device_task.h
M	intern/cycles/kernel/kernel_accumulate.h
M	intern/cycles/kernel/kernel_passes.h
M	intern/cycles/kernel/kernel_types.h
M	intern/cycles/render/buffers.cpp
M	intern/cycles/render/buffers.h
M	intern/cycles/render/film.cpp
M	intern/cycles/render/film.h
M	intern/cycles/render/integrator.cpp
M	intern/cycles/render/integrator.h
M	intern/cycles/render/session.cpp
M	intern/cycles/render/session.h

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

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index b44c988966..eae4db438c 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -406,27 +406,28 @@ void BlenderSession::render()
 		}
 
 		buffer_params.passes = passes;
-		buffer_params.denoising_passes = b_layer_iter->keep_denoise_data() || b_layer_iter->denoise_result();
+		buffer_params.denoising_data_pass = b_layer_iter->keep_denoise_data() || b_layer_iter->denoise_result();
 		session->tile_manager.schedule_denoising = (b_layer_iter->denoise_result() && is_cpu) && !getenv("CPU_OVERSCAN");
 		session->params.denoise_result = b_layer_iter->denoise_result();
-		scene->film->denoising_passes = buffer_params.denoising_passes;
-		scene->film->denoise_flags = 0;
-		if(b_layer_iter->denoise_diffuse_direct()) scene->film->denoise_flags |= DENOISE_DIFFUSE_DIR;
-		if(b_layer_iter->denoise_diffuse_indirect()) scene->film->denoise_flags |= DENOISE_DIFFUSE_IND;
-		if(b_layer_iter->denoise_glossy_direct()) scene->film->denoise_flags |= DENOISE_GLOSSY_DIR;
-		if(b_layer_iter->denoise_glossy_indirect()) scene->film->denoise_flags |= DENOISE_GLOSSY_IND;
-		if(b_layer_iter->denoise_transmission_direct()) scene->film->denoise_flags |= DENOISE_TRANSMISSION_DIR;
-		if(b_layer_iter->denoise_transmission_indirect()) scene->film->denoise_flags |= DENOISE_TRANSMISSION_IND;
-		if(b_layer_iter->denoise_subsurface_direct()) scene->film->denoise_flags |= DENOISE_SUBSURFACE_DIR;
-		if(b_layer_iter->denoise_subsurface_indirect()) scene->film->denoise_flags |= DENOISE_SUBSURFACE_IND;
-		scene->film->selective_denoising = (scene->film->denoise_flags != DENOISE_ALL);
-		scene->film->cross_denoising = b_layer_iter->filter_cross();
-		buffer_params.selective_denoising = scene->film->selective_denoising;
-		buffer_params.cross_denoising = scene->film->cross_denoising;
-		scene->integrator->half_window = b_layer_iter->half_window();
-		scene->integrator->filter_strength = (b_layer_iter->filter_strength() == 0.0f)? 1e-3f : copysignf(powf(10.0f, -fabsf(b_layer_iter->filter_strength())*2.0f), b_layer_iter->filter_strength());
-		scene->integrator->weighting_adjust = powf(2.0f, b_layer_iter->filter_weighting_adjust() - 1.0f);
-		scene->integrator->use_gradients = b_layer_iter->filter_gradients();
+		scene->film->denoising_data_pass = buffer_params.denoising_data_pass;
+		scene->film->denoising_flags = 0;
+		if(!b_layer_iter->denoise_diffuse_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_DIFFUSE_DIR;
+		if(!b_layer_iter->denoise_diffuse_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_DIFFUSE_IND;
+		if(!b_layer_iter->denoise_glossy_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_GLOSSY_DIR;
+		if(!b_layer_iter->denoise_glossy_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_GLOSSY_IND;
+		if(!b_layer_iter->denoise_transmission_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_TRANSMISSION_DIR;
+		if(!b_layer_iter->denoise_transmission_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_TRANSMISSION_IND;
+		if(!b_layer_iter->denoise_subsurface_direct()) scene->film->denoising_flags |= DENOISING_CLEAN_SUBSURFACE_DIR;
+		if(!b_layer_iter->denoise_subsurface_indirect()) scene->film->denoising_flags |= DENOISING_CLEAN_SUBSURFACE_IND;
+		scene->film->denoising_clean_pass = (scene->film->denoising_flags & DENOISING_CLEAN_ALL_PASSES);
+		scene->film->denoising_split_pass = b_layer_iter->filter_cross();
+		buffer_params.denoising_clean_pass = scene->film->denoising_clean_pass;
+		buffer_params.denoising_split_pass = scene->film->denoising_split_pass;
+		session->params.denoising_half_window = b_layer_iter->half_window();
+		session->params.denoising_pca_threshold = (b_layer_iter->filter_strength() == 0.0f)? 1e-3f : copysignf(powf(10.0f, -fabsf(b_layer_iter->filter_strength())*2.0f), b_layer_iter->filter_strength());
+		session->params.denoising_weight_adjust = powf(2.0f, b_layer_iter->filter_weighting_adjust() - 1.0f);
+		session->params.denoising_use_gradients = b_layer_iter->filter_gradients();
+		session->params.denoising_use_cross = b_layer_iter->filter_cross();
 
 		scene->film->pass_alpha_threshold = b_layer_iter->pass_alpha_threshold();
 		scene->film->tag_passes_update(scene, passes);
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 9985029635..13bd763300 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -900,16 +900,16 @@ RenderBuffers* BlenderSync::get_render_buffer(Device *device,
 		if(denoising_type) {
 			denoising_passes |= denoising_type;
 			if(denoising_type == DENOISING_PASS_CLEAN)
-				params.selective_denoising = true;
+				params.denoising_clean_pass = true;
 			if(denoising_type == DENOISING_PASS_NOISY_B)
-				params.cross_denoising = true;
+				params.denoising_split_pass = true;
 		}
 	}
 	if(~denoising_passes & DENOISING_PASS_REQUIRED) {
 		return NULL;
 	}
-	params.denoising_passes = true;
-	assert(!params.cross_denoising || (denoising_passes & DENOISING_PASS_NOISY_B_VAR));
+	params.denoising_data_pass = true;
+	assert(!params.denoising_split_pass || (denoising_passes & DENOISING_PASS_NOISY_B_VAR));
 
 	RenderBuffers *buffer = new RenderBuffers(device);
 	buffer->reset(device, params);
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp
index a968bb04f6..dc2fc49123 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -470,7 +470,7 @@ public:
 				                              (float*) buffer_variance_ptr,
 				                              &task->rect.x,
 				                              task->render_buffer.pass_stride,
-				                              task->render_buffer.denoising_offset,
+				                              task->render_buffer.denoising_data_offset,
 				                              task->use_gradients);
 			}
 		}
@@ -494,7 +494,7 @@ public:
 				                            (float*) variance_ptr,
 				                            &task->rect.x,
 				                            task->render_buffer.pass_stride,
-				                            task->render_buffer.denoising_offset,
+				                            task->render_buffer.denoising_data_offset,
 				                            task->use_cross_denoising);
 			}
 		}
@@ -551,7 +551,7 @@ public:
 					denoising.render_buffer.samples = end_sample;
 
 					denoising.tiles_from_single_tile(tile);
-					denoising.init_from_kerneldata(&kg.__data);
+					denoising.init_from_devicetask(task);
 
 					denoising.functions.construct_transform = function_bind(&CPUDevice::denoising_construct_transform, this, &denoising);
 					denoising.functions.reconstruct = function_bind(&CPUDevice::denoising_reconstruct, this, _1, _2, _3, _4, _5, &denoising);
@@ -575,7 +575,7 @@ public:
 				task.get_neighbor_tiles(rtiles);
 				denoising.tiles_from_rendertiles(rtiles);
 
-				denoising.init_from_kerneldata(&kg.__data);
+				denoising.init_from_devicetask(task);
 
 				denoising.functions.construct_transform = function_bind(&CPUDevice::denoising_construct_transform, this, &denoising);
 				denoising.functions.reconstruct = function_bind(&CPUDevice::denoising_reconstruct, this, _1, _2, _3, _4, _5, &denoising);
diff --git a/intern/cycles/device/device_cuda.cpp b/intern/cycles/device/device_cuda.cpp
index 1bbe98113e..d9a66b7463 100644
--- a/intern/cycles/device/device_cuda.cpp
+++ b/intern/cycles/device/device_cuda.cpp
@@ -93,7 +93,6 @@ public:
 	int cuDevId;
 	int cuDevArchitecture;
 	bool first_error;
-	KernelData kernel_globals;
 
 	struct PixelMem {
 		GLuint cuPBO;
@@ -557,9 +556,6 @@ public:
 
 		cuda_push_context();
 		cuda_assert(cuModuleGetGlobal(&mem, &bytes, cuModule, name));
-		if(strcmp(name, "__data") == 0) {
-			kernel_globals = *(KernelData*) host;
-		}
 		//assert(bytes == size);
 		cuda_assert(cuMemcpyHtoD(mem, host, size));
 		cuda_pop_context();
@@ -1127,7 +1123,7 @@ public:
 		                &buffer_variance_ptr,
 		                &task->rect,
 		                &task->render_buffer.pass_stride,
-		                &task->render_buffer.denoising_offset,
+		                &task->render_buffer.denoising_data_offset,
 		                &task->use_gradients};
 		CUDA_LAUNCH_KERNEL(cuFilterDivideShadow, args);
 		cuda_assert(cuCtxSynchronize());
@@ -1162,7 +1158,7 @@ public:
 		                &variance_ptr,
 		                &task->rect,
 		                &task->render_buffer.pass_stride,
-		                &task->render_buffer.denoising_offset,
+		                &task->render_buffer.denoising_data_offset,
 		                &task->use_cross_denoising};
 		CUDA_LAUNCH_KERNEL(cuFilterGetFeature, args);
 		cuda_assert(cuCtxSynchronize());
@@ -1171,7 +1167,7 @@ public:
 		return !have_error();
 	}
 
-	void denoise(RenderTile &rtile, int sample)
+	void denoise(RenderTile &rtile, const DeviceTask &task, int sample)
 	{
 		DenoisingTask denoising(this);
 
@@ -1180,7 +1176,7 @@ public:
 		denoising.render_buffer.samples = sample;
 
 		denoising.tiles_from_single_tile(rtile);
-		denoising.init_from_kerneldata(&kernel_globals);
+		denoising.init_from_devicetask(task);
 
 		denoising.functions.construct_transform = function_bind(&CUDADevice::denoising_construct_transform, this, &denoising);
 		denoising.functions.reconstruct = function_bind(&CUDADevice::denoising_reconstruct, this, _1, _2, _3, _4, _5, &denoising);
@@ -1644,12 +1640,12 @@ public:
 					}
 
 					if(tile.buffers->params.overscan && !task->get_cancel()) { /* TODO(lukas) Works, but seems hacky? */
-						denoise(tile, end_sample);
+						denoise(tile, *task, end_sample);
 					}
 				}
 				else if(tile.task == RenderTile::DENOISE) {
 					int sample = tile.start_sample + tile.num_samples;
-					denoise(tile, sample);
+					denoise(tile, *task, sample);
 					tile.sample = sample;
 				}
 
diff --git a/intern/cycles/device/device_denoising.cpp b/intern/cycles/device/device_denoising.cpp
index 7ac5eaf1ea..4653a08eb1 100644
--- a/intern/cycles/device/device_denoising.cpp
+++ b/intern/cycles/device/device_denoising.cpp
@@ -20,17 +20,17 @@
 
 CCL_NAMESPACE_BEGIN

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list