24 const bool *cancel_requested_flag)
27 return make_unique<PathTraceWorkCPU>(device, film, device_scene, cancel_requested_flag);
34 return make_unique<PathTraceWorkGPU>(device, film, device_scene, cancel_requested_flag);
40 const bool *cancel_requested_flag)
83 const int64_t row_stride = width * pass_stride;
84 const int64_t data_size = row_stride * height *
sizeof(
float);
87 const int64_t offset_in_floats = offset_y * row_stride;
89 const float *src =
buffers_->buffer.data();
90 float *dst = render_buffers->
buffer.
data() + offset_in_floats;
92 memcpy(dst, src, data_size);
100 const int64_t row_stride = width * pass_stride;
101 const int64_t data_size = row_stride * height *
sizeof(
float);
104 const int64_t offset_in_floats = offset_y * row_stride;
106 const float *src = render_buffers->
buffer.
data() + offset_in_floats;
107 float *dst =
buffers_->buffer.data();
109 memcpy(dst, src, data_size);
118 const int64_t offset = offset_y * width;
134 slice_destination.
offset += offset_y * width;
146 slice_source.
offset += offset_y * width;
154 const KernelBackground &kbackground =
device_scene_->data.background;
159 if (display_pass ==
nullptr) {
166 pass_access_info.
type = display_pass->
type;
181 kfilm.use_approximate_shadow_catcher && !kbackground.transparent;
185 return pass_access_info;
199 destination.
offset = texture_y * display_texture_size.
x + texture_x;
200 destination.
stride = display_texture_size.
x;
void render_buffers_host_copy_denoised(RenderBuffers *dst, const BufferParams &dst_params, const RenderBuffers *src, const BufferParams &src_params, const size_t src_offset)
NODE_DECLARE PassType type
bool use_approximate_shadow_catcher
bool use_approximate_shadow_catcher_background
bool set_render_tile_pixels(RenderBuffers *render_buffers, const Source &source)
bool get_render_tile_pixels(const RenderBuffers *render_buffers, const Destination &destination) const
int2 get_texture_size() const
void copy_from_denoised_render_buffers(const RenderBuffers *render_buffers)
PassAccessor::Destination get_display_destination_template(const PathTraceDisplay *display, const PassMode mode) const
RenderBuffers * get_render_buffers()
unique_ptr< RenderBuffers > buffers_
BufferParams effective_full_params_
virtual bool copy_render_buffers_from_device()=0
static unique_ptr< PathTraceWork > create(Device *device, Film *film, DeviceScene *device_scene, const bool *cancel_requested_flag)
PassAccessor::PassAccessInfo get_display_pass_access_info(PassMode pass_mode) const
BufferParams effective_big_tile_params_
bool get_render_tile_pixels(const PassAccessor &pass_accessor, const PassAccessor::Destination &destination)
virtual bool copy_render_buffers_to_device()=0
bool has_multiple_works() const
void copy_to_render_buffers(RenderBuffers *render_buffers)
void set_effective_buffer_params(const BufferParams &effective_full_params, const BufferParams &effective_big_tile_params, const BufferParams &effective_buffer_params)
void copy_from_render_buffers(const RenderBuffers *render_buffers)
BufferParams effective_buffer_params_
DeviceScene * device_scene_
PathTraceWork(Device *device, Film *film, DeviceScene *device_scene, const bool *cancel_requested_flag)
const bool * cancel_requested_flag_
bool set_render_tile_pixels(PassAccessor &pass_accessor, const PassAccessor::Source &source)
device_vector< float > buffer
#define CCL_NAMESPACE_END