94 track = track->
next) {
122 triangulation = MEM_cnew<TriangulationData>(
"keying screen triangulation data");
125 "keyingscreen voronoi sites");
148 for (j = 0; j < pattern_ibuf->
x * pattern_ibuf->
y; j++) {
153 unsigned char *rrgb = (
unsigned char *)pattern_ibuf->
rect;
194 int *triangle = triangulation->
triangles[i];
215 return triangulation;
222 int triangles_allocated = 0;
228 if (!triangulation) {
232 tile_data = MEM_cnew<TileData>(
"keying screen tile data");
234 for (i = 0; i < triangulation->triangles_total; i++) {
235 if (
BLI_rcti_isect(rect, &triangulation->triangles_AABB[i],
nullptr)) {
236 tile_data->triangles_total++;
238 if (tile_data->triangles_total > triangles_allocated) {
239 if (!tile_data->triangles) {
241 "keying screen tile triangles chunk");
245 tile_data->triangles,
sizeof(
int) * (triangles_allocated +
chunk_size));
251 tile_data->triangles[tile_data->triangles_total - 1] = i;
272 return triangulate(rect);
297 r_area = preferred_area;
314 float co[2] = {(
float)
x, (
float)
y};
317 int triangle_idx = tile_data->
triangles[i];
321 int *triangle = triangulation->
triangles[triangle_idx];
329 output[0] =
a->color[0] *
w[0] +
b->color[0] *
w[1] +
c->color[0] *
w[2];
330 output[1] =
a->color[1] *
w[0] +
b->color[1] *
w[1] +
c->color[1] *
w[2];
331 output[2] =
a->color[2] *
w[0] +
b->color[2] *
w[1] +
c->color[2] *
w[2];
353 const int *triangles = tri_area->
triangles;
359 const float co[2] = {(
float)it.x, (
float)it.y};
360 for (
int i = 0; i < num_triangles; i++) {
361 const int triangle_idx = triangles[i];
368 const int *triangle = triangulation->
triangles[triangle_idx];
379 it.out[0] =
a.color[0] *
w[0] +
b.color[0] *
w[1] +
c.color[0] *
w[2];
380 it.out[1] =
a.color[1] *
w[0] +
b.color[1] *
w[1] +
c.color[1] *
w[2];
381 it.out[2] =
a.color[2] *
w[0] +
b.color[2] *
w[1] +
c.color[2] *
w[2];
typedef float(TangentPoint)[2]
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
void BKE_movieclip_get_size(struct MovieClip *clip, struct MovieClipUser *user, int *width, int *height)
struct ImBuf * BKE_movieclip_get_ibuf(struct MovieClip *clip, struct MovieClipUser *user)
struct ImBuf * BKE_tracking_get_pattern_imbuf(struct ImBuf *ibuf, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
struct ListBase * BKE_tracking_object_get_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
float srgb_to_linearrgb(float c)
int barycentric_inside_triangle_v2(const float w[3])
bool barycentric_coords_v2(const float v1[2], const float v2[2], const float v3[2], const float co[2], float w[3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void mul_v3_fl(float r[3], float f)
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v3(float r[3])
MINLINE void add_v3_v3(float r[3], const float a[3])
bool BLI_rcti_isect_pt(const struct rcti *rect, int x, int y)
bool BLI_rcti_isect(const struct rcti *src1, const struct rcti *src2, struct rcti *dest)
#define INIT_MINMAX2(min, max)
#define IN_RANGE_INCL(a, b, c)
void BLI_voronoi_triangulate(const VoronoiSite *sites, int sites_total, struct ListBase *edges, int width, int height, VoronoiTriangulationPoint **r_triangulated_points, int *r_triangulated_points_total, int(**r_triangles)[3], int *r_triangles_total)
void BLI_voronoi_compute(const VoronoiSite *sites, int sites_total, int width, int height, struct ListBase *edges)
#define DNA_struct_default_get(struct_name)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_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
_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 width
Contains defines and structs used throughout the imbuf module.
#define MEM_reallocN(vmemh, len)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void * initialize_tile_data(rcti *rect) override
TriangulationData * cached_triangulation_
void update_memory_buffer_partial(MemoryBuffer *output, const rcti &area, Span< MemoryBuffer * > inputs) override
void deinitialize_tile_data(rcti *rect, void *data) override
void deinit_execution() override
void init_execution() override
char tracking_object_[64]
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
struct blender::compositor::KeyingScreenOperation::TileData TileData
struct blender::compositor::KeyingScreenOperation::TriangulationData TriangulationData
TriangulationData * build_voronoi_triangulation()
void execute_pixel(float output[4], int x, int y, void *data) override
calculate a single pixel
a MemoryBuffer contains access to the data of a chunk
unsigned int get_height() const
void add_output_socket(DataType datatype)
unsigned int get_width() const
eExecutionModel execution_model_
NodeOperationFlags flags_
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
ccl_global KernelShaderEvalInput ccl_global float * output
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
typename BuffersIteratorBuilder< T >::Iterator BuffersIterator
constexpr rcti COM_AREA_NONE
constexpr float COM_COLOR_BLACK[4]
static const int chunk_size
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static bNodeSocketTemplate inputs[]
struct MovieTracking tracking
struct MovieTrackingTrack * next
int triangulated_points_total
VoronoiTriangulationPoint * triangulated_points