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:
authorLukas Stockner <lukas.stockner@freenet.de>2018-07-04 15:26:15 +0300
committerLukas Stockner <lukas.stockner@freenet.de>2018-07-04 15:36:01 +0300
commit97a0d6fcc736e604113487196ff3c3578306fc6c (patch)
tree9701746bb422a1ea90a2f1cf8e0b57269021543b /intern/cycles/device/device_cpu.cpp
parentb10c64bd2f1dae93c38e2d1cc656ea08151ab704 (diff)
Cycles Denoising: Refactor denoiser tile handling
This deduplicates the calls for tile (un)mapping and allows to have a target buffer that is different from the source buffer (needed for baking and animation denoising).
Diffstat (limited to 'intern/cycles/device/device_cpu.cpp')
-rw-r--r--intern/cycles/device/device_cpu.cpp21
1 files changed, 7 insertions, 14 deletions
diff --git a/intern/cycles/device/device_cpu.cpp b/intern/cycles/device/device_cpu.cpp
index 81a084c03b2..b824cddd87b 100644
--- a/intern/cycles/device/device_cpu.cpp
+++ b/intern/cycles/device/device_cpu.cpp
@@ -635,7 +635,7 @@ public:
(float*) buffer_variance_ptr,
&task->rect.x,
task->render_buffer.pass_stride,
- task->render_buffer.denoising_data_offset);
+ task->render_buffer.offset);
}
}
return true;
@@ -658,7 +658,7 @@ public:
(float*) variance_ptr,
&task->rect.x,
task->render_buffer.pass_stride,
- task->render_buffer.denoising_data_offset);
+ task->render_buffer.offset);
}
}
return true;
@@ -711,7 +711,7 @@ public:
}
}
- void denoise(DeviceTask &task, DenoisingTask& denoising, RenderTile &tile)
+ void denoise(DenoisingTask& denoising, RenderTile &tile)
{
tile.sample = tile.start_sample + tile.num_samples;
@@ -727,16 +727,7 @@ public:
denoising.filter_area = make_int4(tile.x, tile.y, tile.w, tile.h);
denoising.render_buffer.samples = tile.sample;
- RenderTile rtiles[9];
- rtiles[4] = tile;
- task.map_neighbor_tiles(rtiles, this);
- denoising.tiles_from_rendertiles(rtiles);
-
- denoising.run_denoising();
-
- task.unmap_neighbor_tiles(rtiles, this);
-
- task.update_progress(&tile, tile.w*tile.h);
+ denoising.run_denoising(&tile);
}
void thread_render(DeviceTask& task)
@@ -777,7 +768,9 @@ public:
}
}
else if(tile.task == RenderTile::DENOISE) {
- denoise(task, denoising, tile);
+ denoise(denoising, tile);
+
+ task.update_progress(&tile, tile.w*tile.h);
}
task.release_tile(tile);