19 #define ccl_get_feature(buffer, pass) (buffer)[(pass)*pass_stride]
24 #define FOR_PIXEL_WINDOW \
25 for (int frame = 0; frame < tile_info->num_frames; frame++) { \
26 pixel.z = tile_info->frames[frame]; \
27 pixel_buffer = buffer + (low.y - rect.y) * buffer_w + (low.x - rect.x) + \
28 frame * frame_stride; \
29 for (pixel.y = low.y; pixel.y < high.y; pixel.y++) { \
30 for (pixel.x = low.x; pixel.x < high.x; pixel.x++, pixel_buffer++) {
32 #define END_FOR_PIXEL_WINDOW \
34 pixel_buffer += buffer_w - (high.x - low.x); \
45 features[0] = pixel.
x;
46 features[1] = pixel.
y;
56 features[10] = pixel.
z;
59 for (
int i = 0; i < (use_time ? 11 : 10); i++) {
60 features[i] -= mean[i];
72 scales[0] =
fabsf(pixel.
x - mean[0]);
73 scales[1] =
fabsf(pixel.
y - mean[1]);
83 scales[6] =
fabsf(pixel.
z - mean[10]);
89 scale[0] = 1.0f /
max(scale[0], 0.01f);
90 scale[1] = 1.0f /
max(scale[1], 0.01f);
91 scale[2] = 1.0f /
max(scale[2], 0.01f);
93 scale[10] = 1.0f /
max(scale[6], 0.01f);
95 scale[6] = 1.0f /
max(scale[4], 0.01f);
96 scale[7] = scale[8] = scale[9] = 1.0f /
max(
sqrtf(scale[5]), 0.01f);
97 scale[3] = scale[4] = scale[5] = 1.0f /
max(
sqrtf(scale[3]), 0.01f);
113 int transform_row_stride)
115 for (
int i = 0; i < rank; i++) {
116 design_row[1 + i] +=
transform[(row * transform_row_stride + i) *
stride] * feature;
133 int num_features = use_time ? 11 : 10;
135 design_row[0] = 1.0f;
138 #define DESIGN_ROW_ADD(I, F) \
139 design_row_add(design_row, rank, transform, stride, I, F, num_features);
153 #undef DESIGN_ROW_ADD
_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 GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei stride
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
ccl_device_inline float3 filter_get_color(const ccl_global float *ccl_restrict buffer, int pass_stride)
ccl_device_inline void design_row_add(float *design_row, int rank, const ccl_global float *ccl_restrict transform, int stride, int row, float feature, int transform_row_stride)
ccl_device_inline void filter_get_features(int3 pixel, const ccl_global float *ccl_restrict buffer, float *features, bool use_time, const float *ccl_restrict mean, int pass_stride)
ccl_device_inline void filter_get_design_row_transform(int3 p_pixel, const ccl_global float *ccl_restrict p_buffer, int3 q_pixel, const ccl_global float *ccl_restrict q_buffer, int pass_stride, int rank, float *design_row, const ccl_global float *ccl_restrict transform, int stride, bool use_time)
#define DESIGN_ROW_ADD(I, F)
#define ccl_get_feature(buffer, pass)
ccl_device_inline void filter_get_feature_scales(int3 pixel, const ccl_global float *ccl_restrict buffer, float *scales, bool use_time, const float *ccl_restrict mean, int pass_stride)
ccl_device_inline void filter_calculate_scale(float *scale, bool use_time)
#define ccl_device_inline
#define CCL_NAMESPACE_END
#define make_float3(x, y, z)
__kernel void ccl_constant KernelData ccl_global void ccl_global char ccl_global int ccl_global char ccl_global unsigned int ccl_global float * buffer
ccl_device_inline float len_squared(const float3 a)
ccl_device_inline void math_vector_zero(float *v, int n)