22 bool *cancel_requested_flag)
25 return make_unique<PathTraceWorkCPU>(device, film, device_scene, cancel_requested_flag);
32 return make_unique<PathTraceWorkGPU>(device, film, device_scene, cancel_requested_flag);
38 bool *cancel_requested_flag)
41 device_scene_(device_scene),
43 effective_buffer_params_(buffers_->
params),
44 cancel_requested_flag_(cancel_requested_flag)
81 const int64_t row_stride = width * pass_stride;
82 const int64_t data_size = row_stride * height *
sizeof(
float);
85 const int64_t offset_in_floats = offset_y * row_stride;
87 const float *src =
buffers_->buffer.data();
88 float *dst = render_buffers->
buffer.
data() + offset_in_floats;
90 memcpy(dst, src, data_size);
98 const int64_t row_stride = width * pass_stride;
99 const int64_t data_size = row_stride * height *
sizeof(
float);
102 const int64_t offset_in_floats = offset_y * row_stride;
104 const float *src = render_buffers->
buffer.
data() + offset_in_floats;
105 float *dst =
buffers_->buffer.data();
107 memcpy(dst, src, data_size);
116 const int64_t offset = offset_y * width;
132 slice_destination.
offset += offset_y * width;
144 slice_source.
offset += offset_y * width;
157 if (display_pass ==
nullptr) {
164 pass_access_info.
type = display_pass->
type;
179 kfilm.use_approximate_shadow_catcher && !kbackground.transparent;
183 return pass_access_info;
191 const int2 display_texture_size = display->get_texture_size();
197 destination.offset = texture_y * display_texture_size.
x + texture_x;
198 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
void copy_from_denoised_render_buffers(const RenderBuffers *render_buffers)
RenderBuffers * get_render_buffers()
unique_ptr< RenderBuffers > buffers_
BufferParams effective_full_params_
virtual bool copy_render_buffers_from_device()=0
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)
PassAccessor::Destination get_display_destination_template(const PathTraceDisplay *display) const
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_
static unique_ptr< PathTraceWork > create(Device *device, Film *film, DeviceScene *device_scene, bool *cancel_requested_flag)
PathTraceWork(Device *device, Film *film, DeviceScene *device_scene, bool *cancel_requested_flag)
bool set_render_tile_pixels(PassAccessor &pass_accessor, const PassAccessor::Source &source)
device_vector< float > buffer
#define CCL_NAMESPACE_END
draw_view in_light_buf[] float