82 #include "../../windowmanager/WM_api.h"
83 #include "../../windowmanager/wm_window.h"
161 const char *name_override);
183 return G.is_break ==
true;
193 float megs_used_memory, megs_peak_memory;
194 char info_time_str[32];
199 megs_used_memory = (
mem_in_use) / (1024.0 * 1024.0);
200 megs_peak_memory = (peak_memory) / (1024.0 * 1024.0);
211 TIP_(
"Fra:%d Mem:%.2fM (Peak %.2fM) "),
216 fprintf(stdout,
TIP_(
"| Time:%s | "), info_time_str);
218 fprintf(stdout,
"%s", rs->
infostr);
259 void *exrhandle,
const char *colorspace,
bool predivide,
int rectx,
int recty)
539 #define MAX_SCENE_RENDER_NAME (MAX_ID_NAME + 1024 + 2)
620 #ifdef WITH_FREESTYLE
795 bool have_layer =
false;
972 const int orig_rectx = re->
rectx, orig_recty = re->
recty;
1002 re->
rectx = orig_rectx;
1003 re->
recty = orig_recty;
1039 int winx = re->
winx, winy = re->
winy;
1092 if (this_scene == 0 ||
node->id ==
NULL ||
node->id == &sce->
id) {
1111 bool changed_scene =
false;
1127 changed_scene =
true;
1135 if (changed_scene) {
1147 memcpy(&i, &re->
i,
sizeof(i));
1157 int update_newframe = 0;
1184 update_newframe = 1;
1214 if (update_newframe) {
1255 (
unsigned char *)rres.
rect32,
1287 static int recurs_depth = 0;
1290 int cfra = re->
r.
cfra;
1292 int view_id, tot_views;
1293 struct ImBuf **ibuf_arr;
1312 ibuf_arr =
MEM_mallocN(
sizeof(
ImBuf *) * tot_views,
"Sequencer Views ImBufs");
1326 for (view_id = 0; view_id < tot_views; view_id++) {
1337 ibuf_arr[view_id] =
NULL;
1347 for (view_id = 0; view_id < tot_views; view_id++) {
1351 if (ibuf_arr[view_id]) {
1361 if (recurs_depth == 0) {
1402 bool render_seq =
false;
1468 "No camera found in scene \"%s\" (used in compositing of scene \"%s\")",
1491 bool active_view =
false;
1505 if (view_camera ==
camera) {
1510 "Camera \"%s\" is not a multi-view camera",
1653 memset(&baker, 0,
sizeof(baker));
1706 disprect.
xmax = winx;
1707 disprect.
ymax = winy;
1819 const float subframe,
1820 const bool write_still)
1826 G.is_rendering =
true;
1841 if (write_still && !
G.is_break) {
1844 printf(
"Error: can't write single images with a movie format!\n");
1877 G.is_rendering =
false;
1880 #ifdef WITH_FREESTYLE
1883 static void change_renderdata_engine(
Render *re,
const char *new_engine)
1894 static bool use_eevee_for_freestyle_render(
Render *re)
1905 char scene_engine[32];
1907 if (use_eevee_for_freestyle_render(re)) {
1913 change_renderdata_engine(re, scene_engine);
1919 void RE_RenderFreestyleExternal(
Render *re)
1959 void **movie_ctx_arr,
1960 const int totvideos,
1977 for (view_id = 0; view_id < totvideos; view_id++) {
2005 for (i = 0; i < 2; i++) {
2018 (
int *)ibuf_arr[2]->
rect,
2024 for (i = 0; i < 3; i++) {
2039 const int totvideos,
2040 const char *name_override)
2052 if (do_write_file) {
2061 if (name_override) {
2086 printf(
" Time: %s",
name);
2095 if (do_write_file) {
2097 printf(
" (Saving: %s)\n",
name);
2100 fputc(
'\n', stdout);
2134 for (i = 0; i < totvideos; i++) {
2157 const int cfra_old = rd.
cfra;
2158 const float subframe_old = rd.
subframe;
2159 int nfra, totrendered = 0, totskipped = 0;
2181 bool is_error =
false;
2193 for (i = 0; i < totvideos; i++) {
2221 G.is_rendering =
true;
2262 if (
is_movie ==
false && do_write_file) {
2275 if (!is_multiview_name) {
2277 printf(
"skipping existing frame \"%s\"\n",
name);
2284 bool is_skip =
false;
2296 printf(
"skipping existing frame \"%s\" for view \"%s\"\n", filepath, srv->
name);
2308 if (!is_multiview_name) {
2354 if (
G.is_break ==
true) {
2356 if (
is_movie ==
false && do_write_file) {
2358 if (!is_multiview_name) {
2387 if (
G.is_break ==
false) {
2400 if (totskipped && totrendered == 0) {
2418 G.is_rendering =
false;
2467 disprect.
xmax = winx;
2468 disprect.
ymax = winy;
2506 if (rpass ==
NULL) {
2509 "%s: no Combined pass found in the render layer '%s'",
2515 if (ibuf->
x == layer->
rectx && ibuf->
y == layer->
recty) {
2523 if ((ibuf->
x -
x >= layer->
rectx) && (ibuf->
y -
y >= layer->
recty)) {
2540 reports,
RPT_ERROR,
"%s: failed to allocate clip buffer '%s'", __func__, filepath);
2546 "%s: incorrect dimensions for partial copy '%s'",
2583 if (!
STREQ(rp->name,
"Combined")) {
2597 if (viewname ==
NULL || viewname[0] ==
'\0') {
2610 #define CHECK_PASS(NAME) \
2611 if (passtype == SCE_PASS_##NAME) { \
2612 return RE_pass_find_by_name(rl, RE_PASSNAME_##NAME, viewname); \
struct AnimData * BKE_animdata_from_id(const struct ID *id)
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)
void BKE_callback_exec_null(struct Main *bmain, eCbEvent evt)
@ BKE_CB_EVT_RENDER_COMPLETE
@ BKE_CB_EVT_RENDER_STATS
@ BKE_CB_EVT_RENDER_WRITE
@ BKE_CB_EVT_RENDER_CANCEL
void BKE_callback_exec_id(struct Main *bmain, struct ID *id, eCbEvent evt)
Camera data-block and utility functions.
struct Object * BKE_camera_multiview_render(const struct Scene *scene, struct Object *camera, const char *viewname)
struct StampData * BKE_stamp_data_copy(const struct StampData *stamp_data)
void BKE_stamp_info_from_imbuf(struct RenderResult *rr, struct ImBuf *ibuf)
void BKE_render_result_stamp_info(struct Scene *scene, struct Object *camera, struct RenderResult *rr, bool allocate_only)
void BKE_image_stamp_buf(struct Scene *scene, struct Object *camera, const struct StampData *stamp_data_template, unsigned char *rect, float *rectf, int width, int height, int channels)
void BKE_image_all_free_anim_ibufs(struct Main *bmain, int cfra)
bool BKE_image_render_write(struct ReportList *reports, struct RenderResult *rr, const struct Scene *scene, const bool stamp, const char *filepath_basis)
struct Object * BKE_view_layer_camera_find(struct ViewLayer *view_layer)
struct ViewLayer * BKE_view_layer_context_active_PLACEHOLDER(const struct Scene *scene)
struct ViewLayer * BKE_view_layer_default_render(const struct Scene *scene)
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
#define CMP_NODE_COMPOSITE
#define NODE_CUSTOM_GROUP
void ntreeFreeCache(struct bNodeTree *ntree)
#define CMP_NODE_OUTPUT_FILE
#define CMP_NODE_R_LAYERS
General operations, lookup, etc. for blender objects.
void BKE_ptcache_bake(struct PTCacheBaker *baker)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
int BKE_scene_multiview_num_videos_get(const struct RenderData *rd)
void BKE_scene_update_sound(struct Depsgraph *depsgraph, struct Main *bmain)
bool BKE_scene_multiview_is_render_view_active(const struct RenderData *rd, const struct SceneRenderView *srv)
float BKE_scene_frame_get(const struct Scene *scene)
void BKE_render_resolution(const struct RenderData *r, const bool use_crop, int *r_width, int *r_height)
int BKE_render_num_threads(const struct RenderData *r)
bool BKE_scene_camera_switch_update(struct Scene *scene)
float BKE_scene_ctime_get(const struct Scene *scene)
int BKE_scene_multiview_num_views_get(const struct RenderData *rd)
int BKE_scene_multiview_view_id_get(const struct RenderData *rd, const char *viewname)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
const char * BKE_scene_multiview_view_id_suffix_get(const struct RenderData *rd, int view_id)
void BKE_scene_multiview_filepath_get(const struct SceneRenderView *srv, const char *filepath, char *r_filepath)
void BKE_scene_multiview_videos_dimensions_get(const struct RenderData *rd, size_t width, size_t height, size_t *r_width, size_t *r_height)
void BKE_sound_reset_scene_specs(struct Scene *scene)
bMovieHandle * BKE_movie_handle_get(char imtype)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_file_touch(const char *file) ATTR_NONNULL()
int BLI_delete(const char *file, bool dir, bool recursive) ATTR_NONNULL()
size_t BLI_file_size(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_gset_haskey(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
GSet * BLI_gset_ptr_new(const char *info)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
int BLI_listbase_count_at_most(const struct ListBase *listbase, int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_findstringindex(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
bool BLI_make_existing_file(const char *name)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
bool BLI_str_endswith(const char *__restrict str, const char *__restrict end) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void BLI_rw_mutex_end(ThreadRWMutex *mutex)
void BLI_mutex_end(ThreadMutex *mutex)
void BLI_mutex_init(ThreadMutex *mutex)
#define THREAD_LOCK_WRITE
#define BLI_MUTEX_INITIALIZER
void BLI_rw_mutex_lock(ThreadRWMutex *mutex, int mode)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
void BLI_rw_mutex_init(ThreadRWMutex *mutex)
void BLI_rw_mutex_unlock(ThreadRWMutex *mutex)
pthread_mutex_t ThreadMutex
size_t BLI_timecode_string_from_time_simple(char *str, size_t maxncpy, double time_seconds) ATTR_NONNULL()
#define STREQLEN(a, b, n)
Depsgraph * DEG_graph_new(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, eEvaluationMode mode)
void DEG_graph_free(Depsgraph *graph)
void DEG_evaluate_on_framechange(Depsgraph *graph, float frame)
void DEG_graph_build_for_render_pipeline(struct Depsgraph *graph)
void DEG_debug_name_set(struct Depsgraph *depsgraph, const char *name)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
#define ID_IS_LINKED(_id)
Object groups, one object can be in many groups at once.
Object is a sort of wrapper for general info.
#define RE_PASSNAME_COMBINED
#define R_STAMP_STRIPMETA
#define STEREO_RIGHT_NAME
@ SCE_VIEWS_FORMAT_MULTIVIEW
void FRS_init_stroke_renderer(struct Render *re)
void FRS_end_stroke_rendering(struct Render *re)
void FRS_begin_stroke_rendering(struct Render *re)
int FRS_is_freestyle_enabled(struct ViewLayer *view_layer)
void FRS_do_stroke_rendering(struct Render *re, struct ViewLayer *view_layer)
void GPU_context_discard(GPUContext *)
GPUContext * GPU_context_create(void *ghost_window)
void GPU_context_active_set(GPUContext *)
_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 width
struct ImBuf * IMB_colormanagement_imbuf_for_write(struct ImBuf *ibuf, bool save_as_render, bool allocate_result, const struct ImageFormatData *image_format)
void IMB_float_from_rect(struct ImBuf *ibuf)
struct ImBuf * IMB_stereo3d_ImBuf(const struct ImageFormatData *im_format, struct ImBuf *ibuf_left, struct ImBuf *ibuf_right)
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
struct ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
void IMB_rectcpy(struct ImBuf *dbuf, const struct ImBuf *sbuf, int destx, int desty, int srcx, int srcy, int width, int height)
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 NORMAL
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
Platform independent time functions.
#define RE_USE_CUSTOM_FREESTYLE
#define RE_USE_NO_IMAGE_SAVE
#define RE_ENGINE_RENDERING
#define RE_USE_POSTPROCESS
RenderEngineType * RE_engines_find(const char *idname)
bool RE_engine_use_persistent_data(RenderEngine *engine)
bool RE_engine_render(Render *re, bool do_all)
void RE_engine_free(RenderEngine *engine)
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
void SEQ_cache_cleanup(Scene *scene)
void RE_SetCamera(Render *re, const Object *cam_ob)
struct Object * RE_GetCamera(Render *re)
size_t(* MEM_get_peak_memory)(void)
void(* MEM_freeN)(void *vmemh)
void(* MEM_reset_peak_memory)(void)
size_t(* MEM_get_memory_in_use)(void)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static const pxr::TfToken out("out", pxr::TfToken::Immortal)
static const pxr::TfToken preview("preview", pxr::TfToken::Immortal)
void ntreeCompositTagRender(Scene *scene)
void ntreeCompositExecTree(Scene *scene, bNodeTree *ntree, RenderData *rd, int rendering, int do_preview, const char *view_name)
bool RE_HasSingleLayer(Render *re)
void RE_ReleaseResultImageViews(Render *re, RenderResult *rr)
Render * RE_GetRender(const char *name)
void RE_stats_draw_cb(Render *re, void *handle, void(*f)(void *handle, RenderStats *rs))
RenderPass * RE_pass_find_by_type(RenderLayer *rl, int passtype, const char *viewname)
static void re_free_persistent_data(Render *re)
RenderPass * RE_create_gp_pass(RenderResult *rr, const char *layername, const char *viewname)
void RE_FreeRender(Render *re)
static void do_render_engine(Render *re)
RenderPass * RE_pass_find_by_name(RenderLayer *rl, const char *name, const char *viewname)
RenderResult * RE_AcquireResultRead(Render *re)
void RE_ReleaseResultImage(Render *re)
void RE_progress_cb(Render *re, void *handle, void(*f)(void *handle, float))
void RE_PreviewRender(Render *re, Main *bmain, Scene *sce)
static int render_init_from_main(Render *re, const RenderData *rd, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int anim, int anim_init)
static void update_physics_cache(Render *re, Scene *scene, ViewLayer *view_layer, int UNUSED(anim_init))
static void do_render_compositor_scenes(Render *re)
static void do_render_compositor_scene(Render *re, Scene *sce, int cfra)
static void re_movie_free_all(Render *re, bMovieHandle *mh, int totvideos)
int RE_seq_render_active(Scene *scene, RenderData *rd)
bool RE_WriteRenderViewsMovie(ReportList *reports, RenderResult *rr, Scene *scene, RenderData *rd, bMovieHandle *mh, void **movie_ctx_arr, const int totvideos, bool preview)
static void render_callback_exec_null(Render *re, Main *bmain, eCbEvent evt)
static void stats_background(void *UNUSED(arg), RenderStats *rs)
static void result_nothing(void *UNUSED(arg), RenderResult *UNUSED(rr))
void RE_current_scene_update_cb(Render *re, void *handle, void(*f)(void *handle, Scene *scene))
void * RE_gpu_context_get(Render *re)
void * RE_gl_context_get(Render *re)
Render * RE_GetSceneRender(const Scene *scene)
static bool do_write_image_or_movie(Render *re, Main *bmain, Scene *scene, bMovieHandle *mh, const int totvideos, const char *name_override)
void render_copy_renderdata(RenderData *to, RenderData *from)
void RE_FreePersistentData(const Scene *scene)
static int compositor_needs_render(Scene *sce, int this_scene)
static bool check_valid_camera_multiview(Scene *scene, Object *camera, ReportList *reports)
static void stats_nothing(void *UNUSED(arg), RenderStats *UNUSED(rs))
static struct @1170 RenderGlobal
static void render_update_depsgraph(Render *re)
void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
static int check_compositor_output(Scene *scene)
void RE_layer_load_from_file(RenderLayer *layer, ReportList *reports, const char *filepath, int x, int y)
#define MAX_SCENE_RENDER_NAME
void RE_ClearResult(Render *re)
void RE_SwapResult(Render *re, RenderResult **rr)
Render * RE_NewRender(const char *name)
void RE_FreeRenderResult(RenderResult *rr)
static void current_scene_nothing(void *UNUSED(arg), Scene *UNUSED(scene))
static void render_pipeline_free(Render *re)
bool RE_passes_have_name(struct RenderLayer *rl)
RenderLayer * render_get_active_layer(Render *re, RenderResult *rr)
void RE_FreeAllPersistentData(void)
static void float_nothing(void *UNUSED(arg), float UNUSED(val))
void RE_InitRenderCB(Render *re)
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)
static int check_valid_camera(Scene *scene, Object *camera_override, ReportList *reports)
void render_update_anim_renderdata(Render *re, RenderData *rd, ListBase *render_layers)
void RE_gl_context_destroy(Render *re)
static void scene_render_name_get(const Scene *scene, const size_t max_size, char *render_name)
static void render_result_uncrop(Render *re)
RenderLayer * RE_GetRenderLayer(RenderResult *rr, const char *name)
Render * RE_NewSceneRender(const Scene *scene)
static void render_result_disprect_to_full_resolution(Render *re)
static void do_render_sequencer(Render *re)
void RE_InitState(Render *re, Render *source, RenderData *rd, ListBase *render_layers, ViewLayer *single_layer, int winx, int winy, rcti *disprect)
void RE_ReleaseResult(Render *re)
static void render_compositor_stats(void *arg, const char *str)
float * RE_RenderLayerGetPass(RenderLayer *rl, const char *name, const char *viewname)
void RE_RenderAnim(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int sfra, int efra, int tfra)
static void do_render_full_pipeline(Render *re)
static bool node_tree_has_compositor_output(bNodeTree *ntree)
const char * RE_GetActiveRenderView(Render *re)
RenderResult * RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
static void do_render_compositor(Render *re)
RenderResult * RE_AcquireResultWrite(Render *re)
Scene * RE_GetScene(Render *re)
static void re_init_resolution(Render *re, Render *source, int winx, int winy, rcti *disprect)
bool RE_layers_have_name(struct RenderResult *rr)
void RE_display_clear_cb(Render *re, void *handle, void(*f)(void *handle, RenderResult *rr))
bool RE_allow_render_generic_object(Object *ob)
void RE_gl_context_create(Render *re)
void RE_result_load_from_file(RenderResult *result, ReportList *reports, const char *filepath)
void RE_display_update_cb(Render *re, void *handle, void(*f)(void *handle, RenderResult *rr, rcti *rect))
void RE_test_break_cb(Render *re, void *handle, int(*f)(void *handle))
static void get_videos_dimensions(const Render *re, const RenderData *rd, size_t *r_width, size_t *r_height)
static void result_rcti_nothing(void *UNUSED(arg), RenderResult *UNUSED(rr), struct rcti *UNUSED(rect))
static void renderresult_stampinfo(Render *re)
static void render_init_depsgraph(Render *re)
void RE_AcquiredResultGet32(Render *re, RenderResult *result, unsigned int *rect, const int view_id)
bool RE_is_rendering_allowed(Scene *scene, ViewLayer *single_layer, Object *camera_override, ReportList *reports)
void RE_draw_lock_cb(Render *re, void *handle, void(*f)(void *handle, bool lock))
void RE_SetReports(Render *re, ReportList *reports)
void RE_FreeAllRender(void)
void RE_AcquireResultImageViews(Render *re, RenderResult *rr)
static int default_break(void *UNUSED(arg))
static bool render_scene_has_layers_to_render(Scene *scene, ViewLayer *single_layer)
bool RE_ReadRenderResult(Scene *scene, Scene *scenode)
void RE_SetScene(Render *re, Scene *sce)
void RE_ResultGet32(Render *re, unsigned int *rect)
static void render_callback_exec_id(Render *re, Main *bmain, ID *id, eCbEvent evt)
static bool check_valid_compositing_camera(Scene *scene, Object *camera_override, ReportList *reports)
void RE_FreeAllRenderResults(void)
void RE_SetActiveRenderView(Render *re, const char *viewname)
RenderStats * RE_GetStats(Render *re)
void RE_init_threadcount(Render *re)
void RE_display_init_cb(Render *re, void *handle, void(*f)(void *handle, RenderResult *rr))
ImBuf * SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown)
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)
void SEQ_render_imbuf_from_sequencer_space(Scene *scene, ImBuf *ibuf)
void render_result_single_layer_end(Render *re)
RenderView * RE_RenderViewGetById(RenderResult *rr, const int view_id)
bool render_result_exr_file_cache_read(Render *re)
void RE_render_result_rect_from_ibuf(RenderResult *rr, const ImBuf *ibuf, const int view_id)
void render_result_rect_fill_zero(RenderResult *rr, const int view_id)
void render_result_views_shallowdelete(RenderResult *rr)
void render_result_views_new(RenderResult *rr, const RenderData *rd)
RenderPass * render_layer_add_pass(RenderResult *rr, RenderLayer *rl, int channels, const char *name, const char *viewname, const char *chan_id, const bool allocate)
void render_result_merge(RenderResult *rr, RenderResult *rrpart)
int render_result_exr_file_read_path(RenderResult *rr, RenderLayer *rl_single, const char *filepath)
void render_result_view_new(RenderResult *rr, const char *viewname)
RenderResult * render_result_new_from_exr(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
void render_result_passes_allocated_ensure(RenderResult *rr)
void render_result_free(RenderResult *rr)
void render_result_rect_get_pixels(RenderResult *rr, unsigned int *rect, int rectx, int recty, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, const int view_id)
RenderResult * render_result_new(Render *re, rcti *partrct, const char *layername, const char *viewname)
void render_result_clone_passes(Render *re, RenderResult *rr, const char *viewname)
ImBuf * RE_render_result_rect_to_ibuf(RenderResult *rr, const ImageFormatData *imf, const float dither, const int view_id)
void render_result_single_layer_begin(Render *re)
void render_result_views_shallowcopy(RenderResult *dst, RenderResult *src)
const char * RE_engine_id_BLENDER_EEVEE
static bool is_movie(wmDrag *drag)
_W64 unsigned int uintptr_t
void SEQ_relations_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render)
struct IDProperty * metadata
char name[IMB_FILENAME_SIZE]
struct Depsgraph * depsgraph
struct ViewLayer * view_layer
struct CurveMapping mblur_shutter_curve
struct ImageFormatData im_format
float unit_line_thickness
struct RenderLayer * next
struct StampData * stamp_data
ThreadMutex engine_draw_mutex
void(* current_scene_update)(void *handle, struct Scene *scene)
void(* progress)(void *handle, float i)
Scene * pipeline_scene_eval
RenderResult * pushedresult
struct RenderEngine * engine
struct GSet * highlighted_tiles
struct Depsgraph * pipeline_depsgraph
void(* display_update)(void *handle, RenderResult *rr, rcti *rect)
ThreadRWMutex resultmutex
void(* display_init)(void *handle, RenderResult *rr)
void(* draw_lock)(void *handle, bool lock)
void(* stats_draw)(void *handle, RenderStats *ri)
void(* display_clear)(void *handle, RenderResult *rr)
int(* test_break)(void *handle)
ThreadMutex highlighted_tiles_mutex
struct ReportList * reports
struct Object * camera_override
struct SceneRenderView * next
struct bNodeTree * nodetree
ColorManagedViewSettings view_settings
ColorManagedDisplaySettings display_settings
struct Object * scene_camera
void(* end_movie)(void *context_v)
int(* start_movie)(void *context_v, const struct Scene *scene, struct RenderData *rd, int rectx, int recty, struct ReportList *reports, bool preview, const char *suffix)
void(* context_free)(void *context_v)
void *(* context_create)(void)
int(* append_movie)(void *context_v, struct RenderData *rd, int start_frame, int frame, int *pixels, int rectx, int recty, const char *suffix, struct ReportList *reports)
void(* progress)(void *, float progress)
int(* test_break)(void *)
void(* stats_draw)(void *, const char *str)
void RE_point_density_fix_linking(void)
double PIL_check_seconds_timer(void)
void * WM_opengl_context_create(void)
void wm_window_reset_drawable(void)
void WM_opengl_context_activate(void *context)
void WM_opengl_context_dispose(void *context)