32 DCHECK_EQ(destination.
stride, 0) <<
"Custom stride for float destination is not implemented.";
37 const float *window_data = render_buffers->
buffer.
data() + buffer_params.
window_x * pass_stride +
38 buffer_params.
window_y * buffer_row_stride;
44 const float *buffer = window_data + y * buffer_row_stride;
45 float *pixel = destination.pixels + destination.pixel_offset +
46 (y * buffer_params.width + destination.offset) * pixel_stride;
47 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride, pixel_stride);
61 const float *window_data = render_buffers->
buffer.
data() + buffer_params.
window_x * pass_stride +
62 buffer_params.
window_y * buffer_row_stride;
65 const int destination_stride = destination.
stride != 0 ? destination.
stride :
69 const float *buffer = window_data + y * buffer_row_stride;
70 half4 *pixel = dst_start + y * destination_stride;
71 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride);
79#define DEFINE_PASS_ACCESSOR(pass) \
80 void PassAccessorCPU::get_pass_##pass(const RenderBuffers *render_buffers, \
81 const BufferParams &buffer_params, \
82 const Destination &destination) const \
84 const CPUKernels &kernels = Device::get_cpu_kernels(); \
85 KernelFilmConvert kfilm_convert; \
86 init_kernel_film_convert(&kfilm_convert, buffer_params, destination); \
88 if (destination.pixels) { \
89 run_get_pass_kernel_processor_float(&kfilm_convert, \
93 kernels.film_convert_##pass); \
96 if (destination.pixels_half_rgba) { \
97 run_get_pass_kernel_processor_half_rgba(&kfilm_convert, \
101 kernels.film_convert_half_rgba_##pass); \
125#undef DEFINE_PASS_ACCESSOR
CPUKernelFunction< void(*)(const KernelFilmConvert *kfilm_convert, const float *buffer, float *pixel, const int width, const int buffer_stride, const int pixel_stride)> FilmConvertFunction
CPUKernelFunction< void(*)(const KernelFilmConvert *kfilm_convert, const float *buffer, half4 *pixel, const int width, const int buffer_stride)> FilmConvertHalfRGBAFunction
void run_get_pass_kernel_processor_float(const KernelFilmConvert *kfilm_convert, const RenderBuffers *render_buffers, const BufferParams &buffer_params, const Destination &destination, const CPUKernels::FilmConvertFunction func) const
void run_get_pass_kernel_processor_half_rgba(const KernelFilmConvert *kfilm_convert, const RenderBuffers *render_buffers, const BufferParams &buffer_params, const Destination &destination, const CPUKernels::FilmConvertHalfRGBAFunction func) const
device_vector< float > buffer
#define CCL_NAMESPACE_END
#define DEFINE_PASS_ACCESSOR(pass)