36 DCHECK_EQ(destination.
stride, 0) <<
"Custom stride for float destination is not implemented.";
42 buffer_params.
window_y * buffer_row_stride;
48 const float *buffer = window_data + y * buffer_row_stride;
49 float *pixel = destination.pixels +
50 (y * buffer_params.width + destination.offset) * pixel_stride;
51 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride, pixel_stride);
66 buffer_params.
window_y * buffer_row_stride;
69 const int destination_stride = destination.
stride != 0 ? destination.
stride :
73 const float *buffer = window_data + y * buffer_row_stride;
74 half4 *pixel = dst_start + y * destination_stride;
75 func(kfilm_convert, buffer, pixel, buffer_params.window_width, pass_stride);
83 #define DEFINE_PASS_ACCESSOR(pass) \
84 void PassAccessorCPU::get_pass_##pass(const RenderBuffers *render_buffers, \
85 const BufferParams &buffer_params, \
86 const Destination &destination) const \
88 const CPUKernels &kernels = Device::get_cpu_kernels(); \
89 KernelFilmConvert kfilm_convert; \
90 init_kernel_film_convert(&kfilm_convert, buffer_params, destination); \
92 if (destination.pixels) { \
93 run_get_pass_kernel_processor_float(&kfilm_convert, \
97 kernels.film_convert_##pass); \
100 if (destination.pixels_half_rgba) { \
101 run_get_pass_kernel_processor_half_rgba(&kfilm_convert, \
105 kernels.film_convert_half_rgba_##pass); \
127 #undef DEFINE_PASS_ACCESSOR
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
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
ccl_gpu_kernel_postfix ccl_global float int int int int int int int pass_stride
void parallel_for(IndexRange range, int64_t grain_size, const Function &function)
#define DEFINE_PASS_ACCESSOR(pass)