Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/device/device_cpu.cpp')
-rw-r--r--intern/cycles/device/device_cpu.cpp36
1 files changed, 32 insertions, 4 deletions
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp
index c2843a61e6d..42ebf3a8399 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -508,13 +508,14 @@ class CPUDevice : public Device {
void thread_run(DeviceTask *task)
{
- if (task->type == DeviceTask::RENDER) {
+ if (task->type == DeviceTask::RENDER || task->type == DeviceTask::DENOISE)
thread_render(*task);
- }
- else if (task->type == DeviceTask::FILM_CONVERT)
- thread_film_convert(*task);
else if (task->type == DeviceTask::SHADER)
thread_shader(*task);
+ else if (task->type == DeviceTask::FILM_CONVERT)
+ thread_film_convert(*task);
+ else if (task->type == DeviceTask::DENOISE_BUFFER)
+ thread_denoise(*task);
}
class CPUDeviceTask : public DeviceTask {
@@ -954,6 +955,33 @@ class CPUDevice : public Device {
delete split_kernel;
}
+ void thread_denoise(DeviceTask &task)
+ {
+ RenderTile tile;
+ tile.x = task.x;
+ tile.y = task.y;
+ tile.w = task.w;
+ tile.h = task.h;
+ tile.buffer = task.buffer;
+ tile.sample = task.sample + task.num_samples;
+ tile.num_samples = task.num_samples;
+ tile.start_sample = task.sample;
+ tile.offset = task.offset;
+ tile.stride = task.stride;
+ tile.buffers = task.buffers;
+
+ DenoisingTask denoising(this, task);
+
+ ProfilingState denoising_profiler_state;
+ profiler.add_state(&denoising_profiler_state);
+ denoising.profiler = &denoising_profiler_state;
+
+ denoise(denoising, tile);
+ task.update_progress(&tile, tile.w * tile.h);
+
+ profiler.remove_state(&denoising_profiler_state);
+ }
+
void thread_film_convert(DeviceTask &task)
{
float sample_scale = 1.0f / (task.sample + 1);