48 #include "RNA_prototypes.h"
115 if (!make_float &&
STREQ(from_colorspace, to_colorspace)) {
139 (
unsigned char *)ibuf->
rect,
152 if (from_colorspace ==
NULL || from_colorspace[0] ==
'\0') {
177 if (to_colorspace && to_colorspace[0] !=
'\0') {
190 if (to_colorspace && to_colorspace[0] !=
'\0') {
210 int preview_render_size,
214 r_context->
bmain = bmain;
217 r_context->
rectx = rectx;
218 r_context->
recty = recty;
247 if (frame_index == -1 || se ==
NULL) {
264 const int timeline_frame,
272 if (strip_count >
MAXSEQ) {
282 r_seq_arr[index] = seq;
339 float UNUSED(timeline_frame))
362 if (seq->
sat != 1.0f) {
381 if (is_proxy_image) {
395 const float image_scale_factor,
396 const float preview_scale_factor,
397 float r_transform_matrix[4][4])
400 const float scale_x =
transform->scale_x * image_scale_factor;
401 const float scale_y =
transform->scale_y * image_scale_factor;
402 const float image_center_offs_x = (
out->x - in->
x) / 2;
403 const float image_center_offs_y = (
out->y - in->
y) / 2;
404 const float translate_x =
transform->xofs * preview_scale_factor + image_center_offs_x;
405 const float translate_y =
transform->yofs * preview_scale_factor + image_center_offs_y;
408 float rotation_matrix[3][3];
411 (
const float[]){translate_x, translate_y, 0.0f},
413 (
const float[]){scale_x, scale_y, 1.0f});
420 float crop_scale_factor,
424 const int left =
c->left * crop_scale_factor;
425 const int right =
c->right * crop_scale_factor;
426 const int top =
c->top * crop_scale_factor;
427 const int bottom =
c->bottom * crop_scale_factor;
434 float image_scale_factor = (
float)
out->x / in->
x;
435 float transform_matrix[4][4];
438 const float scale_x = 1 * image_scale_factor;
439 const float scale_y = 1 * image_scale_factor;
440 const float image_center_offs_x = (
out->x - in->
x) / 2;
441 const float image_center_offs_y = (
out->y - in->
y) / 2;
442 const float pivot[3] = {in->
x / 2, in->
y / 2, 0.0f};
444 float rotation_matrix[3][3];
447 (
const float[]){image_center_offs_x, image_center_offs_y, 0.0f},
449 (
const float[]){scale_x, scale_y, 1.0f});
467 float seq_image_quad[4][2];
469 for (
int i = 0; i < 4; i++) {
470 add_v2_v2(seq_image_quad[i], (
float[]){
x / 2,
y / 2});
477 seq_image_quad[3]) ||
482 seq_image_quad[3]) ||
487 seq_image_quad[3]) ||
504 const float image_scale_factor = do_scale_to_render_size ? 1.0f : preview_scale_factor;
506 float transform_matrix[4][4];
508 seq, in,
out, image_scale_factor, preview_scale_factor, transform_matrix);
513 const float crop_scale_factor = do_scale_to_render_size ? preview_scale_factor : 1.0f;
542 rt = (
char *)ibuf->
rect;
546 const int imul = (int)(256.0f * fmul);
547 a = ibuf->
x * ibuf->
y;
549 rt[0] =
min_ii((imul * rt[0]) >> 8, 255);
550 rt[1] =
min_ii((imul * rt[1]) >> 8, 255);
551 rt[2] =
min_ii((imul * rt[2]) >> 8, 255);
552 rt[3] =
min_ii((imul * rt[3]) >> 8, 255);
558 a = ibuf->
x * ibuf->
y;
576 float timeline_frame,
578 const bool is_proxy_image)
587 ibuf = preprocessed_ibuf;
606 if (preprocessed_ibuf ==
NULL) {
618 if (seq->
sat != 1.0f) {
627 if (preprocessed_ibuf->
rect) {
644 if (ibuf_new != preprocessed_ibuf) {
647 preprocessed_ibuf = ibuf_new;
651 return preprocessed_ibuf;
657 float timeline_frame,
659 const bool is_proxy_image)
661 if (
context->is_proxy_render ==
false &&
663 use_preprocess =
true;
671 if (use_preprocess) {
743 float timeline_frame,
755 init_data.timeline_frame = timeline_frame;
774 float timeline_frame)
786 ibuf[0] = ibuf[1] = ibuf[2] =
NULL;
792 if (!
sh.execute && !(
sh.execute_slice &&
sh.init_execution)) {
799 sh.get_default_fac(
scene, seq, timeline_frame, &fac);
818 for (i = 0; i < 3; i++) {
832 if (
sh.multithreaded) {
834 &
sh,
context, seq, timeline_frame, fac, ibuf[0], ibuf[1], ibuf[2]);
837 out =
sh.execute(
context, seq, timeline_frame, fac, ibuf[0], ibuf[1], ibuf[2]);
853 for (i = 0; i < 3; i++) {
888 if (prefix[0] ==
'\0') {
914 Scene *
scene,
Sequence *seq,
int totfiles,
char *name,
char *r_prefix,
const char *r_ext)
918 if (r_prefix[0] ==
'\0') {
931 float UNUSED(frame_index),
932 float timeline_frame,
933 bool *r_is_proxy_image)
936 const char *ext =
NULL;
941 if (s_elem ==
NULL) {
951 *r_is_proxy_image =
true;
958 context->scene, seq, totfiles, name, prefix, ext);
960 if (is_multiview_render) {
964 for (
int view_id = 0; view_id < totfiles; view_id++) {
968 if (ibufs_arr[0] ==
NULL) {
976 for (
int view_id = 0; view_id < totviews; view_id++) {
978 localcontext.
view_id = view_id;
980 if (view_id !=
context->view_id) {
982 &localcontext, seq, ibufs_arr[view_id], timeline_frame,
true,
false);
987 ibuf = ibufs_arr[
context->view_id];
990 for (
int view_id = 0; view_id < totviews; view_id++) {
991 if (ibufs_arr[view_id] != ibuf) {
1039 float timeline_frame,
1041 bool *r_is_proxy_image)
1061 *r_is_proxy_image =
true;
1089 float timeline_frame,
1090 bool *r_is_proxy_image)
1102 if (is_multiview_render) {
1105 ibuf_arr =
MEM_callocN(
sizeof(
ImBuf *) * totviews,
"Sequence Image Views Imbufs");
1108 for (ibuf_view_id = 0, sanim = seq->
anims.
first; sanim; sanim = sanim->
next, ibuf_view_id++) {
1111 context, seq, frame_index, timeline_frame, sanim, r_is_proxy_image);
1116 if (ibuf_arr[0] ==
NULL) {
1125 for (
int view_id = 0; view_id < totviews; view_id++) {
1127 localcontext.
view_id = view_id;
1129 if (view_id !=
context->view_id) {
1131 &localcontext, seq, ibuf_arr[view_id], timeline_frame,
true,
false);
1136 ibuf = ibuf_arr[
context->view_id];
1139 for (
int view_id = 0; view_id < totviews; view_id++) {
1140 if (ibuf_arr[view_id] != ibuf) {
1149 context, seq, frame_index, timeline_frame, sanim, r_is_proxy_image);
1156 if (*r_is_proxy_image ==
false) {
1157 if (sanim && sanim->
anim) {
1173 float tloc[2], tscale, tangle;
1186 bool *r_is_proxy_image)
1226 *r_is_proxy_image =
true;
1272 mr_handle, mask_temp,
context->rectx,
context->recty,
true,
true,
true);
1282 const float *fp_src;
1291 fp_dst[0] = fp_dst[1] = fp_dst[2] = *fp_src;
1300 const float *fp_src;
1301 unsigned char *ub_dst;
1306 ub_dst = (
unsigned char *)ibuf->
rect;
1309 ub_dst[0] = ub_dst[1] = ub_dst[2] = (
unsigned char)(*fp_src * 255.0f);
1332 float timeline_frame)
1343 #ifdef DURIAN_CAMERA_SWITCH
1379 const bool is_rendering =
G.is_rendering;
1380 const bool is_background =
G.background;
1381 const bool do_seq_gl = is_rendering ? 0 : (
context->scene->r.seq_prev_type) !=
OB_RENDER;
1382 bool have_comp =
false;
1383 bool use_gpencil =
true;
1385 bool is_frame_update =
false;
1415 #ifdef DURIAN_CAMERA_SWITCH
1434 use_gpencil =
false;
1440 #ifdef DURIAN_CAMERA_SWITCH
1445 is_frame_update = (orig_data.timeline_frame !=
scene->
r.
cfra) ||
1449 char err_out[256] =
"unknown";
1462 if (
context->scene->r.seq_prev_type == 0) {
1463 context->scene->r.seq_prev_type = 3 ;
1474 &
context->scene->display.shading,
1475 context->scene->r.seq_prev_type,
1486 fprintf(stderr,
"seq_render_scene_strip failed to get opengl buffer: %s\n", err_out);
1494 ibufs_arr =
MEM_callocN(
sizeof(
ImBuf *) * totviews,
"Sequence Image Views Imbufs");
1504 if (!is_thread_main || is_rendering ==
false || is_background ||
context->for_render) {
1509 const float subframe = frame -
floorf(frame);
1514 have_comp ?
NULL : view_layer,
1521 G.is_rendering = is_rendering;
1524 for (
int view_id = 0; view_id < totviews; view_id++) {
1528 localcontext.
view_id = view_id;
1534 memcpy(ibufs_arr[view_id]->rect_float,
1541 ibufs_arr[view_id]->zbuf_float, rres.
rectz,
sizeof(
float) * rres.
rectx * rres.
recty);
1549 memcpy(ibufs_arr[view_id]->rect, rres.
rect32, 4 * rres.
rectx * rres.
recty);
1552 if (view_id !=
context->view_id) {
1560 ibuf = ibufs_arr[
context->view_id];
1563 for (
int view_id = 0; view_id < totviews; view_id++) {
1564 if (ibufs_arr[view_id] != ibuf) {
1581 #ifdef DURIAN_CAMERA_SWITCH
1631 float timeline_frame,
1632 bool *r_is_proxy_image)
1654 state->scene_parents = &scene_parent;
1666 state->scene_parents =
state->scene_parents->next;
1726 float timeline_frame)
1729 bool use_preprocess =
false;
1730 bool is_proxy_image =
false;
1750 context, seq, ibuf, timeline_frame, use_preprocess, is_proxy_image);
1763 bool swap_input =
false;
1805 if (
sh.multithreaded) {
1807 &
sh,
context, seq, timeline_frame, fac, ibuf2, ibuf1,
NULL);
1814 if (
sh.multithreaded) {
1816 &
sh,
context, seq, timeline_frame, fac, ibuf1, ibuf2,
NULL);
1830 float timeline_frame,
1845 for (i =
count - 1; i >= 0; i--) {
1906 for (; i <
count; i++) {
1967 if (
context->is_prefetch_render) {
1983 float timeline_frame,
1995 float timeline_frame,
2010 int first_drawable_frame =
max_iii(
2018 float aligned_frame_offset = (int)((first_drawable_frame - seq->
start) / frame_step) *
2020 return seq->
start + aligned_frame_offset;
2028 float next_frame = last_frame + frame_step;
2032 next_frame = seq->
start + ((int)((last_frame - seq->
start) / frame_step) + 1) * frame_step;
2042 float timeline_frame)
2044 bool is_proxy_image =
false;
2051 float aspect_ratio = (
float)ibuf->
x / ibuf->
y;
2054 if (ibuf->
x > ibuf->
y) {
2077 if (!clipped || ibuf ==
NULL) {
2083 if (crop->
xmin < 0 || crop->
ymin < 0) {
2087 if (crop->
xmax >= ibuf->
x || crop->
ymax >= ibuf->
y) {
2088 crop->
xmax = ibuf->
x - 1;
2089 crop->
ymax = ibuf->
y - 1;
2093 return ibuf_cropped;
2112 upper_thumb_bound = (upper_thumb_bound > view_area->
xmax) ? view_area->
xmax + frame_step :
2116 while ((timeline_frame < upper_thumb_bound) & !*stop) {
2147 const int content_len = content_end - content_start;
2150 const int thumbnails_base_set_count =
min_ii(content_len / 100, 30);
2151 if (thumbnails_base_set_count <= 0) {
2154 return content_len / thumbnails_base_set_count;
2176 if (frame_step == 0) {
2180 timeline_frame += frame_step;
2191 if (frame_step == 0) {
2195 timeline_frame += frame_step;
typedef float(TangentPoint)[2]
struct AnimData * BKE_animdata_from_id(const struct ID *id)
void BKE_animsys_evaluate_all_animation(struct Main *main, struct Depsgraph *depsgraph, float ctime)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time)
void BKE_animsys_evaluate_animdata(struct ID *id, struct AnimData *adt, const struct AnimationEvalContext *anim_eval_context, eAnimData_Recalc recalc, bool flush_to_original)
float evaluate_fcurve(struct FCurve *fcu, float evaltime)
struct FCurve * id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven)
struct anim * openanim(const char *name, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
struct ViewLayer * BKE_view_layer_default_render(const struct Scene *scene)
@ LIB_ID_COPY_NO_ANIMDATA
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, int flag)
void BKE_id_free(struct Main *bmain, void *idv)
const char * BKE_main_blendfile_path_from_global(void)
void BKE_maskrasterize_handle_free(MaskRasterHandle *mr_handle)
void BKE_mask_evaluate(struct Mask *mask, float ctime, bool do_newframe)
void BKE_maskrasterize_handle_init(MaskRasterHandle *mr_handle, struct Mask *mask, int width, int height, bool do_aspect_correct, bool do_mask_aa, bool do_feather)
MaskRasterHandle * BKE_maskrasterize_handle_new(void)
void BKE_maskrasterize_buffer(MaskRasterHandle *mr_handle, unsigned int width, unsigned int height, float *buffer)
Rasterize a buffer from a single mask (threaded execution).
bool BKE_movieclip_proxy_enabled(struct MovieClip *clip)
#define MOVIECLIP_CACHE_SKIP
struct ImBuf * BKE_movieclip_get_ibuf_flag(struct MovieClip *clip, struct MovieClipUser *user, int flag, int cache_flag)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
struct ImBuf * BKE_movieclip_get_stable_ibuf(struct MovieClip *clip, struct MovieClipUser *user, float loc[2], float *scale, float *angle, int postprocess_flag)
const char * BKE_scene_multiview_render_view_name_get(const struct RenderData *rd, int view_id)
void BKE_render_resolution(const struct RenderData *r, const bool use_crop, int *r_width, int *r_height)
void BKE_scene_multiview_view_prefix_get(struct Scene *scene, const char *name, char *r_prefix, const char **r_ext)
bool BKE_scene_camera_switch_update(struct Scene *scene)
void BKE_scene_graph_update_for_newframe(struct Depsgraph *depsgraph)
int BKE_scene_multiview_num_views_get(const struct RenderData *rd)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
void BKE_scene_frame_set(struct Scene *scene, float frame)
struct ImBuf *(* SequencerDrawView)(struct Depsgraph *depsgraph, struct Scene *scene, struct View3DShading *shading_override, enum eDrawType drawtype, struct Object *camera, int width, int height, enum eImBufFlags flag, eV3DOffscreenDrawFlag draw_flags, int alpha_mode, const char *viewname, struct GPUOffScreen *ofs, char err_out[256])
#define BLI_assert_msg(a, msg)
unsigned int BLI_gset_len(const GSet *gs) ATTR_WARN_UNUSED_RESULT
int BLI_linklist_index(const LinkNode *list, void *ptr) ATTR_WARN_UNUSED_RESULT
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
int BLI_listbase_count_at_most(const struct ListBase *listbase, int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
MINLINE int max_iii(int a, int b, int c)
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
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])
bool invert_m4(float R[4][4])
void unit_m3(float m[3][3])
void loc_rot_size_to_mat4(float R[4][4], const float loc[3], const float rot[3][3], const float size[3])
void transform_pivot_set_m4(float mat[4][4], const float pivot[3])
void axis_angle_to_mat3_single(float R[3][3], char axis, float angle)
MINLINE void add_v2_v2(float r[2], const float a[2])
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
#define BLI_MUTEX_INITIALIZER
int BLI_thread_is_main(void)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
pthread_mutex_t ThreadMutex
typedef double(DMatrix)[4][4]
struct Depsgraph Depsgraph
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
#define DNA_struct_default_get(struct_name)
@ MCLIP_PROXY_RENDER_USE_FALLBACK_RENDER
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_PROXY_RENDER_SIZE_75
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_50
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ MCLIP_PROXY_RENDER_SIZE_25
#define R_NO_CAMERA_SWITCH
@ R_SEQ_OVERRIDE_SCENE_SETTINGS
#define R_IMF_PLANES_RGBA
#define SEQ_BLEND_REPLACE
#define SEQ_MOVIECLIP_RENDER_STABILIZED
#define SEQ_MOVIECLIP_RENDER_UNDISTORTED
@ SEQ_STORAGE_PROXY_CUSTOM_FILE
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_THUMBNAIL
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_STORE_COMPOSITE
@ SEQ_FLAG_SKIP_THUMBNAILS
@ SEQ_USE_EFFECT_DEFAULT_FADE
@ SEQ_SCENE_NO_ANNOTATION
@ SEQ_TRANSFORM_FILTER_NEAREST
#define SEQ_EDIT_PROXY_DIR_STORAGE
@ V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS
@ V3D_OFSDRAW_SHOW_ANNOTATION
_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 type
_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 right
_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
_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 top
_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 bottom
const char * IMB_colormanagement_get_rect_colorspace(struct ImBuf *ibuf)
@ COLOR_ROLE_SCENE_LINEAR
void IMB_colormanagement_transform_from_byte_threaded(float *float_buffer, unsigned char *byte_buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_assign_float_colorspace(struct ImBuf *ibuf, const char *name)
void IMB_colormanagement_transform_threaded(float *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace, bool predivide)
void IMB_colormanagement_transform_byte_threaded(unsigned char *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_assign_rect_colorspace(struct ImBuf *ibuf, const char *name)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
void IMB_colormanagement_transform_v4(float pixel[4], const char *from_colorspace, const char *to_colorspace)
const char * IMB_colormanagement_get_float_colorspace(struct ImBuf *ibuf)
struct ImBuf * IMB_makeSingleUser(struct ImBuf *ibuf)
bool IMB_anim_get_fps(struct anim *anim, short *frs_sec, float *frs_sec_base, bool no_av_base)
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
bool imb_addrectfloatImBuf(struct ImBuf *ibuf, const unsigned int channels)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void IMB_rect_crop(struct ImBuf *ibuf, const struct rcti *crop)
void IMB_filtery(struct ImBuf *ibuf)
void imb_freerectImBuf(struct ImBuf *ibuf)
void IMB_processor_apply_threaded(int buffer_lines, int handle_size, void *init_customdata, void(init_handle)(void *handle, int start_line, int tot_line, void *customdata), void *(do_thread)(void *))
@ IMB_TRANSFORM_MODE_REGULAR
Do not crop or repeat.
@ IMB_TRANSFORM_MODE_CROP_SRC
Crop the source buffer.
bool addzbuffloatImBuf(struct ImBuf *ibuf)
void IMB_saturation(struct ImBuf *ibuf, float sat)
void IMB_ImBufFromStereo3d(const struct Stereo3dFormat *s3d, struct ImBuf *ibuf_stereo, struct ImBuf **r_ibuf_left, struct ImBuf **r_ibuf_right)
struct ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
void IMB_transform(const struct ImBuf *src, struct ImBuf *dst, eIMBTransformMode mode, eIMBInterpolationFilterMode filter, const float transform_matrix[4][4], const struct rctf *src_crop)
Transform source image buffer onto destination image buffer using a transform matrix.
void IMB_flipx(struct ImBuf *ibuf)
struct ImBuf * IMB_anim_absolute(struct anim *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size)
eIMBInterpolationFilterMode
void IMB_flipy(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between camera
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 Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input 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 a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
#define SEQ_ITERATOR_FOREACH(var, collection)
#define SEQ_RENDER_THUMB_SIZE
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
static void mul(btAlignedObjectArray< T > &items, const Q &value)
SeqTimelineChannel * SEQ_channel_get_by_index(const ListBase *channels, const int channel_index)
bool SEQ_channel_is_muted(const SeqTimelineChannel *channel)
const Depsgraph * depsgraph
struct SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
float seq_speed_effect_target_frame_get(Scene *scene, Sequence *seq_speed, float timeline_frame, int input)
int SEQ_effect_get_num_inputs(int seq_type)
struct SeqEffectHandle seq_effect_get_sequence_blend(Sequence *seq)
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
void seq_cache_thumbnail_put(const SeqRenderData *context, Sequence *seq, float timeline_frame, ImBuf *i, rctf *view_area)
bool seq_cache_put_if_possible(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type, ImBuf *ibuf)
void seq_cache_put(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type, ImBuf *i)
void seq_cache_free_temp_cache(Scene *scene, short id, int timeline_frame)
struct ImBuf * seq_cache_get(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
SeqCollection * SEQ_query_rendered_strips(const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int displayed_channel)
void SEQ_collection_free(SeqCollection *collection)
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
ccl_global KernelShaderEvalInput * input
ccl_gpu_kernel_postfix ccl_global float int int int int sh
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
int seq_num_files(Scene *scene, char views_format, const bool is_multiview)
void seq_multiview_name(Scene *scene, const int view_id, const char *prefix, const char *ext, char *r_path, size_t r_size)
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void RE_ReleaseResultImage(Render *re)
Render * RE_GetSceneRender(const Scene *scene)
void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
void RE_RenderFrame(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, const int frame, const float subframe, const bool write_still)
Render * RE_NewSceneRender(const Scene *scene)
void seq_prefetch_start(const SeqRenderData *context, float timeline_frame)
int SEQ_rendersize_to_proxysize(int render_size)
ImBuf * seq_proxy_fetch(const SeqRenderData *context, Sequence *seq, int timeline_frame)
bool SEQ_can_use_proxy(const struct SeqRenderData *context, Sequence *seq, int psize)
double SEQ_rendersize_to_scale_factor(int render_size)
bool seq_proxy_get_custom_file_fname(Sequence *seq, char *name, const int view_id)
static ImBuf * seq_render_mask_strip(const SeqRenderData *context, Sequence *seq, float frame_index)
static ImBuf * seq_render_preprocess_ibuf(const SeqRenderData *context, Sequence *seq, ImBuf *ibuf, float timeline_frame, bool use_preprocess, const bool is_proxy_image)
static ImBuf * seq_render_strip_stack_apply_effect(const SeqRenderData *context, Sequence *seq, float timeline_frame, ImBuf *ibuf1, ImBuf *ibuf2)
ImBuf * SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown)
static ImBuf * seq_render_image_strip(const SeqRenderData *context, Sequence *seq, float UNUSED(frame_index), float timeline_frame, bool *r_is_proxy_image)
static void * render_effect_execute_do_thread(void *thread_data_v)
static ImBuf * input_preprocess(const SeqRenderData *context, Sequence *seq, float timeline_frame, ImBuf *ibuf, const bool is_proxy_image)
static bool seq_input_have_to_preprocess(const SeqRenderData *context, Sequence *seq, float UNUSED(timeline_frame))
static ImBuf * seq_render_scene_strip(const SeqRenderData *context, Sequence *seq, float frame_index, float timeline_frame)
SequencerDrawView sequencer_view3d_fn
static ThreadMutex seq_render_mutex
static int seq_get_early_out_for_blend_mode(Sequence *seq)
ImBuf * seq_render_mask(const SeqRenderData *context, Mask *mask, float frame_index, bool make_float)
int SEQ_render_thumbnails_guaranteed_set_frame_step_get(const Scene *scene, const Sequence *seq)
struct RenderEffectInitData RenderEffectInitData
static ImBuf * do_render_strip_seqbase(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float frame_index)
static ImBuf * do_render_strip_uncached(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame, bool *r_is_proxy_image)
ImBuf * SEQ_get_thumbnail(const SeqRenderData *context, Sequence *seq, float timeline_frame, rcti *crop, bool clipped)
static int seq_channel_cmp_fn(const void *a, const void *b)
static void sequencer_thumbnail_transform(ImBuf *in, ImBuf *out)
static void sequencer_image_crop_init(const Sequence *seq, const ImBuf *in, float crop_scale_factor, rctf *r_crop)
static ImBuf * seq_render_effect_strip_impl(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame)
static void sequencer_preprocess_transform_crop(ImBuf *in, ImBuf *out, const SeqRenderData *context, Sequence *seq, const bool is_proxy_image)
ImBuf * SEQ_render_give_ibuf_direct(const SeqRenderData *context, float timeline_frame, Sequence *seq)
static ImBuf * seq_render_movie_strip_view(const SeqRenderData *context, Sequence *seq, float frame_index, float timeline_frame, StripAnim *sanim, bool *r_is_proxy_image)
void SEQ_render_new_render_data(Main *bmain, struct Depsgraph *depsgraph, Scene *scene, int rectx, int recty, int preview_render_size, int for_render, SeqRenderData *r_context)
ImBuf * seq_render_strip(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame)
void SEQ_render_thumbnails_base_set(const SeqRenderData *context, Sequence *seq, Sequence *seq_orig, rctf *view_area, const short *stop)
static ImBuf * seq_render_strip_stack(const SeqRenderData *context, SeqRenderState *state, ListBase *channels, ListBase *seqbasep, float timeline_frame, int chanshown)
bool SEQ_render_is_muted(const ListBase *channels, const Sequence *seq)
void seq_imbuf_assign_spaces(Scene *scene, ImBuf *ibuf)
static void multibuf(ImBuf *ibuf, const float fmul)
struct RenderEffectThread RenderEffectThread
static bool seq_need_scale_to_render_size(const Sequence *seq, bool is_proxy_image)
static bool seq_must_swap_input_in_blend_mode(Sequence *seq)
StripElem * SEQ_render_give_stripelem(const Scene *scene, Sequence *seq, int timeline_frame)
static ImBuf * seq_render_movieclip_strip(const SeqRenderData *context, Sequence *seq, float frame_index, bool *r_is_proxy_image)
static bool seq_image_transform_transparency_gained(const SeqRenderData *context, Sequence *seq)
float SEQ_render_thumbnail_first_frame_get(const Scene *scene, Sequence *seq, float frame_step, rctf *view_area)
void seq_render_state_init(SeqRenderState *state)
static void sequencer_image_crop_transform_matrix(const Sequence *seq, const ImBuf *in, const ImBuf *out, const float image_scale_factor, const float preview_scale_factor, float r_transform_matrix[4][4])
static bool sequencer_use_crop(const Sequence *seq)
ImBuf * seq_render_give_ibuf_seqbase(const SeqRenderData *context, float timeline_frame, int chan_shown, ListBase *channels, ListBase *seqbasep)
static bool seq_image_strip_is_multiview_render(Scene *scene, Sequence *seq, int totfiles, char *name, char *r_prefix, const char *r_ext)
static ImBuf * seq_render_movie_strip(const SeqRenderData *context, Sequence *seq, float frame_index, float timeline_frame, bool *r_is_proxy_image)
void SEQ_render_thumbnails(const SeqRenderData *context, Sequence *seq, Sequence *seq_orig, float frame_step, rctf *view_area, const short *stop)
static bool sequencer_use_transform(const Sequence *seq)
static ImBuf * seq_get_uncached_thumbnail(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame)
static ImBuf * seq_render_movie_strip_custom_file_proxy(const SeqRenderData *context, Sequence *seq, int timeline_frame)
int seq_get_shown_sequences(const Scene *scene, ListBase *channels, ListBase *seqbase, const int timeline_frame, const int chanshown, Sequence **r_seq_arr)
void seq_imbuf_to_sequencer_space(Scene *scene, ImBuf *ibuf, bool make_float)
void SEQ_render_imbuf_from_sequencer_space(Scene *scene, ImBuf *ibuf)
static ImBuf * seq_get_movieclip_ibuf(Sequence *seq, MovieClipUser user)
ImBuf * seq_render_effect_execute_threaded(struct SeqEffectHandle *sh, const SeqRenderData *context, Sequence *seq, float timeline_frame, float fac, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *ibuf3)
static ImBuf * seq_render_image_strip_view(const SeqRenderData *context, Sequence *seq, char *name, char *prefix, const char *ext, int view_id)
float SEQ_render_thumbnail_next_frame_get(const Scene *scene, Sequence *seq, float last_frame, float frame_step)
static void render_effect_execute_init_handle(void *handle_v, int start_line, int tot_line, void *init_data_v)
void SEQ_render_pixel_from_sequencer_space_v4(struct Scene *scene, float pixel[4])
#define EARLY_USE_INPUT_2
#define EARLY_USE_INPUT_1
ImBuf * SEQ_modifier_apply_stack(const SeqRenderData *context, Sequence *seq, ImBuf *ibuf, int timeline_frame)
Editing * SEQ_editing_get(const Scene *scene)
void SEQ_relations_free_all_anim_ibufs(Scene *scene, int timeline_frame)
bool SEQ_time_has_right_still_frames(const Scene *scene, const Sequence *seq)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
float seq_give_frame_index(const Scene *scene, Sequence *seq, float timeline_frame)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
ListBase * displayed_channels
const SeqRenderData * context
struct SeqEffectHandle * sh
const SeqRenderData * context
struct SeqEffectHandle * sh
struct bNodeTree * nodetree
ColorManagedColorspaceSettings sequencer_colorspace_settings
void(* execute_slice)(const struct SeqRenderData *context, struct Sequence *seq, float timeline_frame, float fac, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, int start_line, int total_lines, struct ImBuf *out)
int(* early_out)(struct Sequence *seq, float fac)
struct GPUOffScreen * gpu_offscreen
float motion_blur_shutter
struct Depsgraph * depsgraph
struct Object * scene_camera
struct Stereo3dFormat * stereo3d_format
ColorManagedColorspaceSettings colorspace_settings
StripTransform * transform
ListBase * SEQ_get_seqbase_from_sequence(Sequence *seq, ListBase **r_channels, int *r_offset)
void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile)