24 : tile_info_mem(device,
"denoising tile info mem",
MEM_READ_WRITE),
32 if (
task.denoising.relative_pca) {
97 neighbors.
target.
buffers->params.get_denoising_prefiltered_offset();
133 int num_shifts = (2 * max_radius + 1) * (2 * max_radius + 1);
134 num_layers = 2 * num_shifts + 1;
164 device_ptr filtered_a = *buffer_var, filtered_b = *sample_var;
175 device_ptr final_a = *unfiltered_a, final_b = *unfiltered_b;
191 int mean_from[] = {0, 1, 2, 12, 6, 7, 8};
192 int variance_from[] = {3, 4, 5, 13, 9, 10, 11};
193 int pass_to[] = {1, 2, 3, 0, 5, 6, 7};
194 for (
int pass = 0; pass < 7; pass++) {
211 int mean_from[] = {20, 21, 22};
212 int variance_from[] = {23, 24, 25};
213 int mean_to[] = {8, 9, 10};
214 int variance_to[] = {11, 12, 13};
215 int num_color_passes = 3;
220 for (
int pass = 0; pass < num_color_passes; pass++) {
236 temporary_color.
device_pointer, *color_var_pass, *depth_pass, *output_pass);
253 for (
int pass = 0; pass < num_passes; pass++) {
256 bool is_variance = (pass >= 11) && (pass <= 13);
273 for (
int pass = 0; pass < num_passes; pass++) {
315 scale_ptr = **scale_sub_ptr;
319 delete scale_sub_ptr;
void set_render_buffer(RenderTileNeighbors &neighbors)
struct DenoisingTask::Storage storage
void setup_denoising_buffer()
void run_denoising(RenderTile &tile)
struct DenoisingTask::NLMState nlm_state
void prefilter_shadowing()
struct DenoisingTask::RenderBuffers render_buffer
struct DenoisingTask::TargetBuffer target_buffer
device_vector< int > tile_info_mem
struct DenoisingTask::DeviceFunctions functions
struct DenoisingTask::DenoiseBuffers buffer
DenoisingTask(Device *device, const DeviceTask &task)
void construct_transform()
void prefilter_features()
struct DenoisingTask::ReconstructionState reconstruction_state
virtual int mem_sub_ptr_alignment()
device_ptr device_pointer
void alloc_to_device(size_t num, bool shrink_to_fit=true)
T * alloc(size_t width, size_t height=0, size_t depth=0)
#define DENOISE_MAX_FRAMES
#define CCL_NAMESPACE_END
#define make_int4(x, y, z, w)
__kernel void ccl_constant KernelData ccl_global void ccl_global char ccl_global int ccl_global char ccl_global unsigned int ccl_global float * buffer
static float lerp(float t, float a, float b)
struct blender::compositor::@172::@174 task
device_only_memory< float > mem
device_only_memory< float > temporary_mem
function< bool(device_ptr a_ptr, device_ptr b_ptr, device_ptr mean_ptr, device_ptr variance_ptr, int r, int4 rect)> combine_halves
function< bool(device_ptr image_ptr, device_ptr variance_ptr, device_ptr depth_ptr, device_ptr output_ptr)> detect_outliers
function< void(RenderTileNeighbors &neighbors)> map_neighbor_tiles
function< bool(int out_offset, device_ptr frop_ptr, device_ptr buffer_ptr)> write_feature
function< bool(device_ptr output_ptr)> solve
function< bool(device_ptr a_ptr, device_ptr b_ptr, device_ptr sample_variance_ptr, device_ptr sv_variance_ptr, device_ptr buffer_variance_ptr)> divide_shadow
function< void(RenderTileNeighbors &neighbors)> unmap_neighbor_tiles
function< bool()> construct_transform
function< bool(int mean_offset, int variance_offset, device_ptr mean_ptr, device_ptr variance_ptr, float scale)> get_feature
function< bool(device_ptr color_ptr, device_ptr color_variance_ptr, device_ptr scale_ptr, int frame)> accumulate
function< bool(device_ptr image_ptr, device_ptr guide_ptr, device_ptr variance_ptr, device_ptr out_ptr)> non_local_means
void set_parameters(int r_, int f_, float a_, float k_2_, bool is_color_)
device_only_memory< float > XtWX
device_only_memory< float3 > XtWY
device_only_memory< float > transform
device_only_memory< int > rank
int denoising_clean_offset
int denoising_output_offset
int frames[DENOISE_MAX_FRAMES]
CCL_NAMESPACE_BEGIN ccl_device_inline int4 rect_from_shape(int x0, int y0, int w, int h)
ccl_device_inline int4 rect_clip(int4 a, int4 b)
ccl_device_inline int4 rect_expand(int4 rect, int d)
ccl_device_inline size_t align_up(size_t offset, size_t alignment)
ccl_device_inline size_t divide_up(size_t x, size_t y)