55 int height = (frame == cfra) ? 22 : 10;
56 int x = (frame - sfra) * framelen;
84 const int marker_index)
91 BLI_assert(marker_index < plane_track->markersnr);
100 const int marker_index)
115 const int marker_index)
122 BLI_assert(marker_index < plane_track->markersnr);
132 int *points, totseg, i, a;
133 float sfra = scene->r.sfra, efra = scene->r.efra, framelen = region->winx / (efra - sfra + 1);
155 for (i = sfra - clip->start_frame + 1, a = 0; i <= efra - clip->start_frame + 1; i++) {
159 while (a < markersnr) {
162 if (marker_framenr >= i) {
166 if (a < markersnr - 1 &&
175 a =
min_ii(a, markersnr - 1);
191 (i - sfra + clip->start_frame - 1) * framelen,
193 (i - sfra + clip->start_frame) * framelen,
206 for (i = sfra, a = 0; i <= efra; i++) {
210 if (cameras[a].framenr == i) {
214 if (cameras[a].framenr > i) {
223 (i - sfra + clip->start_frame - 1) * framelen,
225 (i - sfra + clip->start_frame) * framelen,
234 x = (sc->
user.
framenr - sfra) / (efra - sfra + 1) * region->winx;
249 tracking_object->
keyframe1 + clip->start_frame - 1, scene->r.cfra, sfra, framelen, 2,
pos);
251 tracking_object->
keyframe2 + clip->start_frame - 1, scene->r.cfra, sfra, framelen, 2,
pos);
266 bool full_redraw =
false;
268 if (tracking->stats) {
279 float fill_color[4] = {0.0f, 0.0f, 0.0f, 0.6f};
295 immRectf(
pos, x, y, x + zoomx * width, y + zoomy * height);
310 bool use_filter =
true;
330 ED_draw_imbuf_ctx(C, ibuf, x, y, use_filter, zoomx * width / ibuf->
x, zoomy * height / ibuf->
y);
340 x, y, ibuf, &frame, zoomx * width / ibuf->
x, zoomy * height / ibuf->
y);
345 SpaceClip *sc,
ARegion *region,
int width,
int height,
float zoomx,
float zoomy)
370 float viewport_size[4];
426 int point_index =
count;
428 for (
int i = 0; i <
count; ++i) {
432 point_index += direction;
433 current_frame += direction;
444 uint position_attribute,
445 const int start_point,
446 const int num_points)
448 if (num_points == 0) {
452 for (
int i = 0; i < num_points; i++) {
460 uint position_attribute,
461 const int start_point,
462 const int num_points)
465 for (
int i = 0; i < num_points; i++) {
475 uint position_attribute,
476 const int start_point,
477 const int num_points)
479 if (num_points < 2) {
483 for (
int i = 0; i < num_points; i++) {
492#define MAX_STATIC_PATH 64
508 MEM_cnew_array<TrackPathPoint>(
sizeof(*path) * (
count + 1) * 2,
"path");
512 if (num_points_before == 0 && num_points_after == 0) {
516 int num_all_points = num_points_before + num_points_after;
518 if (num_points_before != 0 && num_points_after != 0) {
522 const int path_start_index =
count - num_points_before + 1;
523 const int path_center_index =
count;
564 if (path != path_static) {
570#undef MAX_STATIC_PATH
576 const float marker_pos[2],
582 bool show_search =
false;
585 px[0] = 1.0f / width / sc->
zoom;
586 px[1] = 1.0f / height / sc->
zoom;
687 const bool is_track_active,
688 const bool is_area_selected,
689 const float color[3],
690 const float selected_color[3])
693 if (is_track_active) {
696 else if (is_area_selected) {
704 if (is_track_active) {
707 else if (is_area_selected) {
722 const float marker_pos[2],
730 bool show_search =
false;
731 float col[3], scol[3];
736 px[0] = 1.0f / width / sc->
zoom;
737 px[1] = 1.0f / height / sc->
zoom;
747 float viewport_size[4];
880 for (
int i = 0; i < 4; i++) {
881 int next = (i + 1) % 4;
883 len_sq =
min_ff(cur_len, len_sq);
886 return sqrtf(len_sq);
890 float x,
float y,
float dx,
float dy,
int outline,
const float px[2],
uint pos)
906 float x,
float y,
float dx,
float dy,
int outline,
const float px[2],
uint pos)
928 const float marker_pos[2],
936 float dx, dy, patdx, patdy, searchdx, searchdy;
938 float col[3], scol[3], px[2], side;
957 dx = 6.0f / width / sc->
zoom;
958 dy = 6.0f / height / sc->
zoom;
967 px[0] = 1.0f / sc->
zoom / width / sc->
scale;
968 px[1] = 1.0f / sc->
zoom / height / sc->
scale;
985 float pat_min[2], pat_max[2];
994 for (
int i = 0; i < 4; i++) {
1026 const float marker_pos[2],
1033 char str[128] = {0},
state[64] = {0};
1034 float dx = 0.0f, dy = 0.0f, fontsize,
pos[3];
1066 float pat_min[2], pat_max[2];
1073 pos[0] = (marker_pos[0] + dx) * width;
1074 pos[1] = (marker_pos[1] + dy) * height;
1080 pos[1] =
pos[1] * zoomy - fontsize;
1129 const float start_corner[2],
1130 const float end_corner[2],
1138 direction[0] *= width;
1139 direction[1] *= height;
1142 direction[0] /= width;
1143 direction[1] /= height;
1150 gl_matrix[0][0] = matrix[0][0];
1151 gl_matrix[0][1] = matrix[0][1];
1152 gl_matrix[0][2] = 0.0f;
1153 gl_matrix[0][3] = matrix[0][2];
1155 gl_matrix[1][0] = matrix[1][0];
1156 gl_matrix[1][1] = matrix[1][1];
1157 gl_matrix[1][2] = 0.0f;
1158 gl_matrix[1][3] = matrix[1][2];
1160 gl_matrix[2][0] = 0.0f;
1161 gl_matrix[2][1] = 0.0f;
1162 gl_matrix[2][2] = 1.0f;
1163 gl_matrix[2][3] = 0.0f;
1165 gl_matrix[3][0] = matrix[2][0];
1166 gl_matrix[3][1] = matrix[2][1];
1167 gl_matrix[3][2] = 0.0f;
1168 gl_matrix[3][3] = matrix[2][2];
1179 if (image ==
nullptr) {
1188 ibuf, &scene->view_settings, &scene->display_settings, &cache_handle);
1190 if (display_buffer) {
1191 float frame_corners[4][2] = {{0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f}};
1192 float perspective_matrix[3][3];
1193 float gl_matrix[4][4];
1194 bool transparent =
false;
1196 frame_corners, plane_marker->
corners, perspective_matrix);
1267 bool is_active_track,
1273 bool is_selected_track = (plane_track->
flag &
SELECT) != 0;
1274 const bool has_image = plane_track->
image !=
nullptr &&
1276 const bool draw_plane_quad = !has_image || plane_track->
image_opacity == 0.0f;
1278 float color[3], selected_color[3];
1280 px[0] = 1.0f / width / sc->
zoom;
1281 px[1] = 1.0f / height / sc->
zoom;
1284 if (draw_outline ==
false) {
1288 if (draw_plane_quad || is_selected_track) {
1294 float viewport_size[4];
1301 if (is_selected_track) {
1305 if (draw_plane_quad) {
1306 const bool stipple = !draw_outline && tiny;
1307 const bool thick = draw_outline && !tiny;
1335 if (!draw_outline) {
1372 if (is_selected_track) {
1382 for (
int i = 0; i < 4; i++) {
1410 bool is_active_track,
1415 sc, scene, plane_track, plane_marker, is_active_track,
false, width, height);
1422 bool is_active_track,
1431 draw_plane_marker(sc, scene, plane_track, plane_marker, is_active_track, width, height);
1451 float *marker_pos =
nullptr, *fp, *active_pos =
nullptr, cur_pos[2];
1474 sc, scene, plane_track, framenr, plane_track == active_plane_track, width, height);
1496 marker_pos = MEM_cnew_array<float>(2 *
count,
"draw_tracking_tracks marker_pos");
1509 if (track == active_track) {
1561 const int act = track == active_track;
1585 draw_marker_areas(sc, active_track, marker, cur_pos, width, height, 1, 1, position);
1591 float pos[4], vec[4], mat[4][4], aspy;
1595 aspy = 1.0f / clip->tracking.camera.pixel_aspect;
1612 pos[0] = (
pos[0] / (
pos[3] * 2.0f) + 0.5f) * width;
1613 pos[1] = (
pos[1] / (
pos[3] * 2.0f) + 0.5f) * height * aspy;
1617 if (npos[0] >= 0.0f && npos[1] >= 0.0f && npos[0] <= width && npos[1] <= height * aspy) {
1618 vec[0] = (marker->
pos[0] + track->offset[0]) * width;
1619 vec[1] = (marker->
pos[1] + track->offset[1]) * height * aspy;
1636 immVertex2f(position, npos[0] / width, npos[1] / (height * aspy));
1660 const int act = track == active_track;
1664 draw_marker_texts(sc, track, marker, cur_pos, act, width, height, zoomx, zoomy);
1690 float tpos[2], grid[11][11][2];
1693 float aspy = 1.0f / tracking->camera.pixel_aspect;
1694 float dx =
float(width) / n, dy =
float(height) / n * aspy;
1695 float offsx = 0.0f, offsy = 0.0f;
1697 if (!tracking->camera.focal) {
1720 float val[4][2], idx[4][2];
1721 float min[2], max[2];
1723 for (
int a = 0; a < 4; a++) {
1732 for (
int i = 0; i <= n; i++) {
1733 for (
int j = 0; j <= n; j++) {
1734 if (i == 0 || j == 0 || i == n || j == n) {
1735 const float pos[2] = {dx * j, dy * i};
1738 for (
int a = 0; a < 4; a++) {
1742 ok = tpos[a % 2] < val[a][a % 2];
1745 ok = tpos[a % 2] > val[a][a % 2];
1760 for (
int a = 0; a < 4; a++) {
1761 const float pos[2] = {idx[a][0] * dx, idx[a][1] * dy};
1768 dx = (max[0] -
min[0]) / n;
1769 dy = (max[1] -
min[1]) / n;
1771 for (
int i = 0; i <= n; i++) {
1772 for (
int j = 0; j <= n; j++) {
1773 const float pos[2] = {
min[0] + dx * j,
min[1] + dy * i};
1777 grid[i][j][0] /= width;
1778 grid[i][j][1] /= height * aspy;
1784 for (
int i = 0; i <= n; i++) {
1787 for (
int j = 0; j <= n; j++) {
1794 for (
int j = 0; j <= n; j++) {
1797 for (
int i = 0; i <= n; i++) {
1816 layer = layer->
next;
1831 for (
int i = 0; i < stroke->
totpoints - 1; i++) {
1832 float pos[2], npos[2], dpos[2],
len;
1835 pos[0] = (stroke->
points[i].
x + offsx) * width;
1836 pos[1] = (stroke->
points[i].
y + offsy) * height * aspy;
1838 npos[0] = (stroke->
points[i + 1].
x + offsx) * width;
1839 npos[1] = (stroke->
points[i + 1].
y + offsy) * height * aspy;
1855 for (
int j = 0; j <=
steps; j++) {
1857 immVertex2f(position, tpos[0] / width, tpos[1] / (height * aspy));
1872 stroke = stroke->
next;
1875 frame = frame->
next;
1878 layer = layer->
next;
1891 ImBuf *ibuf =
nullptr;
1905 float translation[2];
1906 float aspect = clip->tracking.camera.pixel_aspect;
1907 float smat[4][4], ismat[4][4];
1913 if (ibuf !=
nullptr && width != ibuf->
x) {
1924 smat[0][0] = 1.0f / width;
1925 smat[1][1] = 1.0f / height;
1950 if (width && height) {
1985 if (is_track_source) {
void ED_draw_imbuf_ctx(const bContext *C, ImBuf *ibuf, float x, float y, bool use_filter, float zoom_x, float zoom_y)
Scene * CTX_data_scene(const bContext *C)
SpaceClip * CTX_wm_space_clip(const bContext *C)
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser)
void BKE_movieclip_get_cache_segments(struct MovieClip *clip, const struct MovieClipUser *user, int *r_totseg, int **r_points)
void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect, float translation[2], float scale, float angle, float mat[4][4])
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
#define TRACK_VIEW_SELECTED(sc, track)
void BKE_tracking_marker_pattern_minmax(const struct MovieTrackingMarker *marker, float min[2], float max[2])
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(struct MovieTrackingPlaneTrack *plane_track, int framenr)
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, int framenr, int winx, int winy, float mat[4][4])
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
void BKE_tracking_homography_between_two_quads(float reference_corners[4][2], float corners[4][2], float H[3][3])
void BLF_size(int fontid, float size)
void BLF_draw(int fontid, const char *str, size_t str_len, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_color4ubv(int fontid, const unsigned char rgba[4])
void BLF_position(int fontid, float x, float y, float z)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int min_ii(int a, int b)
MINLINE float min_ff(float a, float b)
int isect_point_quad_v2(const float p[2], const float v1[2], const float v2[2], const float v3[2], const float v4[2])
void mul_v4_m4v4(float r[4], const float mat[4][4], const float v[4])
void unit_m4(float m[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
#define mul_m4_series(...)
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE float len_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void add_v2_v2(float r[2], const float a[2])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v2(float r[2])
MINLINE float normalize_v2(float n[2])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
#define INIT_MINMAX2(min, max)
#define UNUSED_VARS_NDEBUG(...)
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ MCLIP_PROXY_RENDER_UNDISTORT
@ TRACKING_2D_STABILIZATION
MovieClip * ED_space_clip_get_clip(const SpaceClip *sc)
void ED_space_clip_get_size(const SpaceClip *sc, int *r_width, int *r_height)
void ED_space_clip_get_zoom(const SpaceClip *sc, const ARegion *region, float *r_zoomx, float *r_zoomy)
int ED_space_clip_get_clip_frame_number(const SpaceClip *sc)
void ED_clip_point_undistorted_pos(const SpaceClip *sc, const float co[2], float r_co[2])
ImBuf * ED_space_clip_get_buffer(const SpaceClip *sc)
ImBuf * ED_space_clip_get_stable_buffer(const SpaceClip *sc, float loc[2], float *scale, float *angle)
void ED_mask_draw_frames(Mask *mask, ARegion *region, int cfra, int sfra, int efra)
void ED_region_info_draw(ARegion *region, const char *text, const float fill_color[4], bool full_redraw)
void ED_region_cache_draw_cached_segments(ARegion *region, int num_segments, const int *points, int sfra, int efra)
void ED_region_cache_draw_background(ARegion *region)
void ED_region_cache_draw_curfra_label(int framenr, float x, float y)
void ED_region_grid_draw(ARegion *region, float zoomx, float zoomy, float x0, float y0)
void ED_region_image_metadata_draw(int x, int y, ImBuf *ibuf, const rctf *frame, float zoomx, float zoomy)
void GPU_matrix_translate_2fv(const float vec[2])
void GPU_matrix_scale_2f(float x, float y)
#define GPU_matrix_mul(x)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_3D_IMAGE_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_logic_op_xor_set(bool enable)
void GPU_point_size(float size)
void GPU_viewport_size_get_f(float coords[4])
GPUTexture * GPU_texture_create_2d(const char *name, int width, int height, int mip_len, eGPUTextureFormat format, eGPUTextureUsage usage, const float *data)
void GPU_texture_free(GPUTexture *texture)
void GPU_texture_unbind(GPUTexture *texture)
@ GPU_TEXTURE_USAGE_SHADER_READ
void GPU_texture_filter_mode(GPUTexture *texture, bool use_filter)
void GPU_texture_update(GPUTexture *texture, eGPUDataFormat data_format, const void *data)
unsigned char * IMB_display_buffer_acquire(ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, void **cache_handle)
void IMB_display_buffer_release(void *cache_handle)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
void UI_GetThemeColor3fv(int colorid, float col[3])
@ TH_PATH_KEYFRAME_BEFORE
void UI_GetThemeColorShade4ubv(int colorid, int offset, unsigned char col[4])
void UI_FontThemeColor(int fontid, int colorid)
void UI_view2d_view_to_region_fl(const View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) ATTR_NONNULL()
void UI_view2d_view_to_region(const View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
void ED_annotation_draw_2dimage(const bContext *C)
void ED_annotation_draw_view2d(const bContext *C, bool onlyv2d)
static bool generic_track_is_marker_enabled(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track, const int marker_index)
static bool generic_track_is_marker_keyframed(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track, const int marker_index)
void clip_draw_cache_and_notes(const bContext *C, SpaceClip *sc, ARegion *region)
static void draw_movieclip_notes(SpaceClip *sc, ARegion *region)
static void draw_marker_slide_zones(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int outline, int sel, int act, int width, int height, uint pos)
static void draw_marker_outline(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int width, int height, uint position)
static void draw_movieclip_cache(SpaceClip *sc, ARegion *region, MovieClip *clip, Scene *scene)
static void draw_marker_texts(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int act, int width, int height, float zoomx, float zoomy)
static void draw_movieclip_muted(ARegion *region, int width, int height, float zoomx, float zoomy)
static void draw_track_path_points(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
static void draw_plane_marker(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, bool is_active_track, int width, int height)
static void getArrowEndPoint(const int width, const int height, const float zoom, const float start_corner[2], const float end_corner[2], float end_point[2])
static void draw_marker_areas(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const float marker_pos[2], int width, int height, int act, int sel, const uint shdr_pos)
@ PATH_POINT_FLAG_KEYFRAME
static void draw_marker_slide_triangle(float x, float y, float dx, float dy, int outline, const float px[2], uint pos)
static float get_shortest_pattern_side(const MovieTrackingMarker *marker)
static void draw_track_path_keyframe_points(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
void clip_draw_main(const bContext *C, SpaceClip *sc, ARegion *region)
static int track_to_path_segment(SpaceClip *sc, MovieTrackingTrack *track, int direction, TrackPathPoint *path)
static void set_draw_marker_area_color(const MovieTrackingTrack *track, const MovieTrackingMarker *marker, const bool is_track_active, const bool is_area_selected, const float color[3], const float selected_color[3])
static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, bool is_active_track, bool draw_outline, int width, int height)
static void draw_plane_track(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, int framenr, bool is_active_track, int width, int height)
static void marker_to_path_point(SpaceClip *sc, const MovieTrackingTrack *track, const MovieTrackingMarker *marker, TrackPathPoint *point)
static void plane_track_colors(bool is_active, float r_color[3], float r_selected_color[3])
static void draw_distortion(SpaceClip *sc, ARegion *region, MovieClip *clip, int width, int height, float zoomx, float zoomy)
static void draw_track_path(SpaceClip *sc, MovieClip *, MovieTrackingTrack *track)
static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *region, MovieClip *clip, int width, int height, float zoomx, float zoomy)
static int generic_track_get_marker_framenr(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track, const int marker_index)
static void draw_keyframe(int frame, int cfra, int sfra, float framelen, int width, uint pos)
static void draw_movieclip_buffer(const bContext *C, SpaceClip *sc, ARegion *region, ImBuf *ibuf, int width, int height, float zoomx, float zoomy)
void clip_draw_grease_pencil(bContext *C, int onlyv2d)
static void draw_stabilization_border(SpaceClip *sc, ARegion *region, int width, int height, float zoomx, float zoomy)
static void draw_marker_slide_square(float x, float y, float dx, float dy, int outline, const float px[2], uint pos)
static void draw_track_path_lines(const TrackPathPoint *path, uint position_attribute, const int start_point, const int num_points)
static void homogeneous_2d_to_gl_matrix(float matrix[3][3], float gl_matrix[4][4])
static void draw_plane_marker_image(Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker)
static void track_colors(const MovieTrackingTrack *track, int act, float r_col[3], float r_scol[3])
static int generic_track_get_markersnr(const MovieTrackingTrack *track, const MovieTrackingPlaneTrack *plane_track)
static void draw_plane_marker_outline(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track, MovieTrackingPlaneMarker *plane_marker, int width, int height)
BLI_INLINE bool ED_space_clip_marker_is_visible(const SpaceClip *space_clip, const MovieTrackingObject *tracking_object, const MovieTrackingTrack *track, const MovieTrackingMarker *marker)
draw_view in_light_buf[] float
RAYTRACE_GROUP_SIZE additional_info("eevee_shared", "eevee_gbuffer_data", "eevee_global_ubo", "eevee_sampling_data", "eevee_utility_texture", "eevee_hiz_data", "draw_view") .specialization_constant(Type RAYTRACE_GROUP_SIZE in_sh_0_tx in_sh_2_tx screen_normal_tx GPU_RGBA8
void IMB_freeImBuf(ImBuf *)
const ProjectiveReconstruction & reconstruction
void MEM_freeN(void *vmemh)
ccl_device_inline float3 ceil(const float3 a)
float pattern_corners[4][2]
MovieTrackingPlaneTrack * active_plane_track
MovieTrackingReconstruction reconstruction
MovieTrackingTrack * active_track
MovieTrackingPlaneMarker * markers
MovieTrackingMarker * markers
struct MovieClipUser user