31 DCHECK_EQ(destination.
stride, 0) <<
"Custom stride for float destination is not implemented.";
36 const float *window_data = render_buffers->
buffer.
data() + buffer_params.
window_x * pass_stride +
37 buffer_params.
window_y * buffer_row_stride;
43 const float *buffer = window_data + y * buffer_row_stride;
44 float *pixel = destination.pixels + destination.pixel_offset +
45 (y * buffer_params.width + destination.offset) * pixel_stride;
46 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride, pixel_stride);
60 const float *window_data = render_buffers->
buffer.
data() + buffer_params.
window_x * pass_stride +
61 buffer_params.
window_y * buffer_row_stride;
64 const int destination_stride = destination.
stride != 0 ? destination.
stride :
68 const float *buffer = window_data + y * buffer_row_stride;
69 half4 *pixel = dst_start + y * destination_stride;
70 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride);
78#define DEFINE_PASS_ACCESSOR(pass) \
79 void PassAccessorCPU::get_pass_##pass(const RenderBuffers *render_buffers, \
80 const BufferParams &buffer_params, \
81 const Destination &destination) const \
83 const CPUKernels &kernels = Device::get_cpu_kernels(); \
84 KernelFilmConvert kfilm_convert; \
85 init_kernel_film_convert(&kfilm_convert, buffer_params, destination); \
87 if (destination.pixels) { \
88 run_get_pass_kernel_processor_float(&kfilm_convert, \
92 kernels.film_convert_##pass); \
95 if (destination.pixels_half_rgba) { \
96 run_get_pass_kernel_processor_half_rgba(&kfilm_convert, \
100 kernels.film_convert_half_rgba_##pass); \
122#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
VecBase< float, 4 > float4
#define DEFINE_PASS_ACCESSOR(pass)