94 #include "../../windowmanager/WM_api.h"
95 #include "../../windowmanager/wm_window.h"
166 const char *name_override);
188 return G.is_break ==
true;
198 float megs_used_memory, megs_peak_memory;
199 char info_time_str[32];
204 megs_used_memory = (
mem_in_use) / (1024.0 * 1024.0);
205 megs_peak_memory = (peak_memory) / (1024.0 * 1024.0);
208 TIP_(
"Fra:%d Mem:%.2fM (Peak %.2fM) "),
215 fprintf(stdout,
TIP_(
"| Time:%s | "), info_time_str);
217 fprintf(stdout,
"%s", rs->
infostr);
234 printf(
"Saved: '%s'\n", name);
291 void *exrhandle,
const char *colorspace,
bool predivide,
int rectx,
int recty)
579 #define MAX_SCENE_RENDER_NAME (MAX_ID_NAME + 1024 + 2)
659 #ifdef WITH_FREESTYLE
857 bool have_layer =
false;
1026 const int orig_rectx = re->
rectx, orig_recty = re->
recty;
1055 re->
rectx = orig_rectx;
1056 re->
recty = orig_recty;
1071 if (camera ==
NULL) {
1092 int winx = re->
winx, winy = re->
winy;
1146 if (this_scene == 0 ||
node->id ==
NULL ||
node->id == &sce->
id) {
1190 memcpy(&i, &re->
i,
sizeof(i));
1200 int update_newframe = 0;
1227 update_newframe = 1;
1257 if (update_newframe) {
1304 (
unsigned char *)rres.
rect32,
1336 static int recurs_depth = 0;
1339 int cfra = re->
r.
cfra;
1341 int view_id, tot_views;
1342 struct ImBuf **ibuf_arr;
1361 ibuf_arr =
MEM_mallocN(
sizeof(
ImBuf *) * tot_views,
"Sequencer Views ImBufs");
1375 for (view_id = 0; view_id < tot_views; view_id++) {
1386 ibuf_arr[view_id] =
NULL;
1396 for (view_id = 0; view_id < tot_views; view_id++) {
1400 if (ibuf_arr[view_id]) {
1410 if (recurs_depth == 0) {
1451 bool render_seq =
false;
1517 "No camera found in scene \"%s\" (used in compositing of scene \"%s\")",
1540 bool active_view =
false;
1554 if (view_camera == camera) {
1559 "Camera \"%s\" is not a multi-view camera",
1666 BKE_report(reports,
RPT_ERROR,
"Cannot save render buffers, check the temp default path");
1728 memset(&baker, 0,
sizeof(baker));
1768 winx = (rd->
size * rd->
xsch) / 100;
1769 winy = (rd->
size * rd->
ysch) / 100;
1782 disprect.
xmax = winx;
1783 disprect.
ymax = winy;
1883 const bool write_still)
1889 G.is_rendering =
true;
1903 if (write_still && !
G.is_break) {
1906 printf(
"Error: can't write single images with a movie format!\n");
1939 G.is_rendering =
false;
1942 #ifdef WITH_FREESTYLE
1945 static void change_renderdata_engine(
Render *re,
const char *new_engine)
1956 static bool use_eevee_for_freestyle_render(
Render *re)
1967 char scene_engine[32];
1969 if (use_eevee_for_freestyle_render(re)) {
1975 change_renderdata_engine(re, scene_engine);
1981 void RE_RenderFreestyleExternal(
Render *re)
2037 for (view_id = 0, rv = rr->
views.
first; rv; rv = rv->
next, view_id++) {
2083 printf(
"Stereo 3D not supported for MultiLayer image: %s\n",
name);
2090 for (i = 0; i < 2; i++) {
2117 ibuf_arr[2]->
planes = 24;
2124 for (i = 0; i < 3; i++) {
2138 void **movie_ctx_arr,
2139 const int totvideos,
2153 for (view_id = 0; view_id < totvideos; view_id++) {
2182 for (i = 0; i < 2; i++) {
2200 (
int *)ibuf_arr[2]->
rect,
2206 for (i = 0; i < 3; i++) {
2219 const int totvideos,
2220 const char *name_override)
2235 if (name_override) {
2259 printf(
" Time: %s",
name);
2269 printf(
" (Saving: %s)\n",
name);
2271 fputc(
'\n', stdout);
2305 for (i = 0; i < totvideos; i++) {
2329 const int cfrao = rd.
cfra;
2330 int nfra, totrendered = 0, totskipped = 0;
2346 bool is_error =
false;
2358 for (i = 0; i < totvideos; i++) {
2386 G.is_rendering =
true;
2426 if (is_movie ==
false) {
2439 if (!is_multiview_name) {
2441 printf(
"skipping existing frame \"%s\"\n",
name);
2448 bool is_skip =
false;
2460 printf(
"skipping existing frame \"%s\" for view \"%s\"\n", filepath, srv->
name);
2472 if (!is_multiview_name) {
2517 if (
G.is_break ==
true) {
2519 if (is_movie ==
false) {
2521 if (!is_multiview_name) {
2550 if (
G.is_break ==
false) {
2563 if (totskipped && totrendered == 0) {
2580 G.is_rendering =
false;
2632 disprect.
xmax = winx;
2633 disprect.
ymax = winy;
2678 if (rpass ==
NULL) {
2681 "%s: no Combined pass found in the render layer '%s'",
2687 if (ibuf->
x == layer->
rectx && ibuf->
y == layer->
recty) {
2695 if ((ibuf->
x -
x >= layer->
rectx) && (ibuf->
y -
y >= layer->
recty)) {
2712 reports,
RPT_ERROR,
"%s: failed to allocate clip buffer '%s'", __func__, filename);
2718 "%s: incorrect dimensions for partial copy '%s'",
2756 if (!
STREQ(rp->name,
"Combined")) {
2770 if (viewname ==
NULL || viewname[0] ==
'\0') {
2784 #define CHECK_PASS(NAME) \
2785 if (passtype == SCE_PASS_##NAME) { \
2786 return RE_pass_find_by_name(rl, RE_PASSNAME_##NAME, viewname); \
struct AnimData * BKE_animdata_from_id(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, const 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)
int BKE_imbuf_write(struct ImBuf *ibuf, const char *name, const struct ImageFormatData *imf)
void BKE_image_path_from_imformat(char *string, const char *base, const char *relbase, int frame, const struct ImageFormatData *im_format, const bool use_ext, const bool use_frames, const char *suffix)
int BKE_image_path_ensure_ext_from_imformat(char *string, const struct ImageFormatData *im_format)
struct StampData * BKE_stamp_data_copy(const struct StampData *stamp_data)
bool BKE_imtype_is_movie(const char imtype)
int BKE_imbuf_write_stamp(struct Scene *scene, struct RenderResult *rr, struct ImBuf *ibuf, const char *name, const struct ImageFormatData *imf)
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)
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 NODE_CUSTOM_GROUP
void ntreeCompositTagRender(struct Scene *scene)
void ntreeFreeCache(struct bNodeTree *ntree)
void nodeUpdate(struct bNodeTree *ntree, struct bNode *node)
void ntreeCompositExecTree(struct Scene *scene, struct bNodeTree *ntree, struct RenderData *rd, int rendering, int do_previews, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, const char *view_name)
#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_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
const char * BKE_scene_multiview_view_id_suffix_get(const struct RenderData *rd, const int view_id)
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)
void BKE_scene_multiview_view_filepath_get(const struct RenderData *rd, const char *filepath, const char *view, char *r_filepath)
float BKE_scene_frame_get(const struct Scene *scene)
int BKE_render_num_threads(const struct RenderData *r)
bool BKE_scene_camera_switch_update(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)
void BKE_scene_multiview_filepath_get(struct SceneRenderView *srv, const char *filepath, char *r_filepath)
void BKE_scene_multiview_videos_dimensions_get(const struct RenderData *rd, const size_t width, const 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(const 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()
bool BLI_file_is_writable(const char *file) ATTR_WARN_UNUSED_RESULT 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()
GSet * BLI_gset_ptr_new(const char *info)
bool BLI_gset_haskey(GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
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, const int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT 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)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_findstringindex(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
bool BLI_make_existing_file(const char *name)
bool BLI_path_extension_check(const char *str, const char *ext) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
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()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
void BLI_rw_mutex_end(ThreadRWMutex *mutex)
#define THREAD_LOCK_WRITE
void BLI_rw_mutex_lock(ThreadRWMutex *mutex, int mode)
void BLI_rw_mutex_init(ThreadRWMutex *mutex)
void BLI_rw_mutex_unlock(ThreadRWMutex *mutex)
size_t BLI_timecode_string_from_time_simple(char *str, const size_t maxncpy, const 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_evaluate_on_framechange(Depsgraph *graph, float ctime)
void DEG_graph_free(Depsgraph *graph)
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_IMF_IMTYPE_MULTILAYER
@ SCE_VIEWS_FORMAT_MULTIVIEW
#define R_STAMP_STRIPMETA
#define STEREO_RIGHT_NAME
#define R_IMF_FLAG_PREVIEW_JPG
#define R_IMF_IMTYPE_OPENEXR
#define R_IMF_IMTYPE_JPEG90
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 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 type
_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
struct ImBuf * IMB_colormanagement_imbuf_for_write(struct ImBuf *ibuf, bool save_as_render, bool allocate_result, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, struct ImageFormatData *image_format_data)
void IMB_float_from_rect(struct ImBuf *ibuf)
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void IMB_freeImBuf(struct ImBuf *ibuf)
bool IMB_prepare_write_ImBuf(const bool isfloat, struct ImBuf *ibuf)
struct ImBuf * IMB_stereo3d_ImBuf(struct ImageFormatData *im_format, struct ImBuf *ibuf_left, struct ImBuf *ibuf_right)
struct ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
bool IMB_isfloat(const struct ImBuf *ibuf)
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 RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set CMP_NODE_COMPOSITE
Platform independent time functions.
#define RE_USE_CUSTOM_FREESTYLE
#define RE_ENGINE_RENDERING
RenderEngineType * RE_engines_find(const char *idname)
bool RE_engine_is_external(const Render *re)
bool RE_engine_use_persistent_data(RenderEngine *engine)
bool RE_engine_render(Render *re, bool do_all)
void RE_engine_free(RenderEngine *engine)
void RE_SetCamera(Render *re, Object *cam_ob)
void RE_parts_clamp(Render *re)
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)
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))
static int do_write_image_or_movie(Render *re, Main *bmain, Scene *scene, bMovieHandle *mh, const int totvideos, const char *name_override)
static int check_mode_full_sample(RenderData *rd)
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)
static void result_rcti_nothing(void *UNUSED(arg), RenderResult *UNUSED(rr), volatile struct rcti *UNUSED(rect))
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))
float * RE_RenderLayerGetPass(volatile RenderLayer *rl, const char *name, const char *viewname)
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)
void render_copy_renderdata(RenderData *to, RenderData *from)
void RE_RenderFrame(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int frame, const bool write_still)
bool RE_WriteRenderViewsImage(ReportList *reports, RenderResult *rr, Scene *scene, const bool stamp, char *name)
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))
void RE_layer_load_from_file(RenderLayer *layer, ReportList *reports, const char *filename, int x, int y)
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)
#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)
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)
RenderPass * RE_pass_find_by_type(volatile RenderLayer *rl, int passtype, const char *viewname)
static void render_result_uncrop(Render *re)
RenderLayer * RE_GetRenderLayer(RenderResult *rr, const char *name)
static struct @1133 RenderGlobal
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_result_load_from_file(RenderResult *result, ReportList *reports, const char *filename)
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)
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)
RenderPass * RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, const char *viewname)
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_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)
void RE_display_update_cb(Render *re, void *handle, void(*f)(void *handle, RenderResult *rr, volatile rcti *rect))
static void render_print_save_message(ReportList *reports, const char *name, int ok, int err)
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)
static void validate_render_settings(Render *re)
static int render_imbuf_write_stamp_test(ReportList *reports, Scene *scene, struct RenderResult *rr, ImBuf *ibuf, const char *name, const ImageFormatData *imf, bool stamp)
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)
bool RE_WriteRenderResult(ReportList *reports, RenderResult *rr, const char *filename, ImageFormatData *imf, const char *view, int layer)
void render_result_single_layer_end(Render *re)
RenderView * RE_RenderViewGetById(RenderResult *rr, const int view_id)
void render_result_exr_file_path(Scene *scene, const char *layname, int sample, char *filepath)
bool render_result_exr_file_cache_read(Render *re)
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)
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_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)
RenderPass * render_layer_add_pass(RenderResult *rr, RenderLayer *rl, int channels, const char *name, const char *viewname, const char *chan_id)
bool RE_HasFloatPixels(RenderResult *rr)
ImBuf * render_result_rect_to_ibuf(RenderResult *rr, const RenderData *rd, const int view_id)
void render_result_clone_passes(Render *re, RenderResult *rr, const char *viewname)
RenderResult * render_result_new(Render *re, rcti *partrct, int savebuffers, const char *layername, const char *viewname)
void render_result_single_layer_begin(Render *re)
void RE_render_result_rect_from_ibuf(RenderResult *rr, RenderData *UNUSED(rd), ImBuf *ibuf, const int view_id)
void render_result_views_shallowcopy(RenderResult *dst, RenderResult *src)
const char * RE_engine_id_BLENDER_EEVEE
struct SELECTID_Context context
_W64 unsigned int uintptr_t
void SEQ_relations_free_all_anim_ibufs(Scene *scene, int timeline_frame)
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
volatile RenderLayer * renlay
struct StampData * stamp_data
void(* current_scene_update)(void *handle, struct Scene *scene)
void(* progress)(void *handle, float i)
Scene * pipeline_scene_eval
Depsgraph * pipeline_depsgraph
RenderResult * pushedresult
struct RenderEngine * engine
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)
struct ReportList * reports
struct Object * camera_override
void(* display_update)(void *handle, RenderResult *rr, volatile rcti *rect)
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)