37 DCHECK_EQ(destination.
stride, 0) <<
"Custom stride for float destination is not implemented.";
42 const float *window_data = render_buffers->
buffer.
data() + buffer_params.
window_x * pass_stride +
43 buffer_params.
window_y * buffer_row_stride;
49 const float *buffer = window_data + y * buffer_row_stride;
50 float *pixel = destination.pixels + destination.pixel_offset +
51 (y * buffer_params.width + destination.offset) * pixel_stride;
52 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride, pixel_stride);
66 const float *window_data = render_buffers->
buffer.
data() + buffer_params.
window_x * pass_stride +
67 buffer_params.
window_y * buffer_row_stride;
70 const int destination_stride = destination.
stride != 0 ? destination.
stride :
74 const float *buffer = window_data + y * buffer_row_stride;
75 half4 *pixel = dst_start + y * destination_stride;
76 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride);
84#define DEFINE_PASS_ACCESSOR(pass) \
85 void PassAccessorCPU::get_pass_##pass(const RenderBuffers *render_buffers, \
86 const BufferParams &buffer_params, \
87 const Destination &destination) const \
89 const CPUKernels &kernels = Device::get_cpu_kernels(); \
90 KernelFilmConvert kfilm_convert; \
91 init_kernel_film_convert(&kfilm_convert, buffer_params, destination); \
93 if (destination.pixels) { \
94 run_get_pass_kernel_processor_float(&kfilm_convert, \
98 kernels.film_convert_##pass); \
101 if (destination.pixels_half_rgba) { \
102 run_get_pass_kernel_processor_half_rgba(&kfilm_convert, \
106 kernels.film_convert_half_rgba_##pass); \
128#undef DEFINE_PASS_ACCESSOR
CPUKernelFunction< void(*)(const KernelFilmConvert *kfilm_convert, const float *buffer, half4 *pixel, const int width, const int buffer_stride)> FilmConvertHalfRGBAFunction
CPUKernelFunction< void(*)(const KernelFilmConvert *kfilm_convert, const float *buffer, float *pixel, const int width, const int buffer_stride, const int pixel_stride)> FilmConvertFunction
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)
VecBase< float, 4 > float4