117 volatile rcti *renrect,
122 int tile_y, tile_height, tile_x, tile_width;
133 tile_x = renrect->
xmin;
134 tile_width = renrect->
xmax - tile_x;
135 if (tile_width < 2) {
139 tile_y = renrect->
ymin;
140 tile_height = renrect->
ymax - tile_y;
141 if (tile_height < 2) {
148 tile_width = rr->
rectx;
149 tile_height = rr->
recty;
154 if (offset_x >= ibuf->
x) {
158 if (offset_y >= ibuf->
y) {
162 if (offset_x + tile_width > ibuf->
x) {
163 tile_width = ibuf->
x - offset_x;
165 if (offset_y + tile_height > ibuf->
y) {
166 tile_height = ibuf->
y - offset_y;
169 if (tile_width < 1 || tile_height < 1) {
173 r_ibuf_rect->
xmax = tile_x + tile_width;
174 r_ibuf_rect->
ymax = tile_y + tile_height;
175 r_ibuf_rect->
xmin = tile_x;
176 r_ibuf_rect->
ymin = tile_y;
177 *r_offset_x = offset_x;
178 *r_offset_y = offset_y;
186 const rcti *tile_rect,
189 const char *viewname)
192 const float *rectf =
NULL;
193 int linear_stride, linear_offset_x, linear_offset_y;
242 rectf += 4 * (rr->
rectx * tile_rect->
ymin + tile_rect->
xmin);
243 linear_stride = rr->
rectx;
244 linear_offset_x = offset_x;
245 linear_offset_y = offset_y;
249 linear_stride = ibuf->
x;
289 scn->
r.
cfra = (*scene)->r.cfra;
307 else if (((*scene)->r.scemode &
R_SINGLE_LAYER) && active_layer) {
308 *single_layer = active_layer;
337 op->
reports,
RPT_ERROR,
"Cannot write a single file with an animation format selected");
395 const bool v3d_override,
399 char info_time_str[32];
401 float megs_used_memory, megs_peak_memory;
407 megs_used_memory = (
mem_in_use) / (1024.0 * 1024.0);
408 megs_peak_memory = (peak_memory) / (1024.0 * 1024.0);
412 spos += sprintf(spos,
"%s | ",
TIP_(
"3D Local View"));
414 else if (v3d_override) {
415 spos += sprintf(spos,
"%s | ",
TIP_(
"3D View"));
426 spos += sprintf(spos,
TIP_(
"| Last:%s "), info_time_str);
429 spos += sprintf(spos,
"| ");
436 spos += sprintf(spos,
"| ");
439 spos += sprintf(spos,
TIP_(
"Time:%s "), info_time_str);
444 spos += sprintf(spos,
"| %s ", rs->
statstr);
449 spos += sprintf(spos,
TIP_(
"| Mem:%.2fM (Peak %.2fM) "), megs_used_memory, megs_peak_memory);
458 spos += sprintf(spos,
"| %s ", rs->
infostr);
461 spos += sprintf(spos,
"| %s ",
error);
467 printf(
"WARNING! renderwin text beyond limit\n");
527 if (first_area ==
NULL) {
540 if (matched_area ==
NULL) {
541 matched_area = first_area;
545 SpaceImage *sima = matched_area->spacedata.first;
630 static void render_startjob(
void *rjv,
short *stop,
short *do_update,
float *progress)
737 G.is_rendering =
false;
829 switch (event->
type) {
927 op->
reports,
RPT_ERROR,
"Cannot write a single file with an animation format selected");
976 rj->
anim = is_animation;
995 if (camera_override && camera_override !=
scene->
camera) {
1020 name =
"Sequence Render";
1072 G.is_rendering =
true;
1105 "Render files from the animation range of this scene");
1112 "Save rendered the image to the output path (used only when animation is disabled)");
1117 "When inside a 3D viewport, use layers and camera of the viewport");
1124 "Single render layer to re-render (used only when animation is disabled)");
1131 "Scene to render, current scene if not specified");
1167 mblur_shutter_curve->
preset = preset;
1188 ot->
name =
"Shutter Curve Preset";
1190 ot->
idname =
"RENDER_OT_shutter_curve_preset";
int ED_draw_imbuf_method(struct ImBuf *ibuf)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct View3D * CTX_wm_view3d(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void BKE_image_release_ibuf(struct Image *ima, struct ImBuf *ibuf, void *lock)
struct ImBuf * BKE_image_acquire_ibuf(struct Image *ima, struct ImageUser *iuser, void **r_lock)
void BKE_image_update_gputexture_delayed(struct Image *ima, struct ImBuf *ibuf, int x, int y, int w, int h)
void BKE_image_backup_render(struct Scene *scene, struct Image *ima, bool free_current_slot)
struct Image * BKE_image_ensure_viewer(struct Main *bmain, int type, const char *name)
bool BKE_imtype_is_movie(const char imtype)
void BKE_image_signal(struct Main *bmain, struct Image *ima, struct ImageUser *iuser, int signal)
void BKE_main_id_tag_listbase(struct ListBase *lb, const int tag, const bool value)
void BKE_main_free(struct Main *mainvar)
bool nodeUpdateID(struct bNodeTree *ntree, struct ID *id)
void ntreeCompositClearTags(struct bNodeTree *ntree)
General operations, lookup, etc. for blender objects.
void BKE_object_free_derived_caches(struct Object *ob)
void BKE_report(ReportList *reports, ReportType type, const char *message)
#define SETLOOPER_SET_ONLY(_sce_basis, _sce_iter, _base)
bool BKE_scene_camera_switch_update(struct Scene *scene)
int BKE_scene_multiview_view_id_get(const struct RenderData *rd, const char *viewname)
void BKE_spacedata_draw_locks(bool set)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) 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)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
size_t BLI_timecode_string_from_time_simple(char *str, const size_t maxncpy, const double time_seconds) ATTR_NONNULL()
#define BLT_I18NCONTEXT_ID_CURVE
void DEG_on_visible_update(struct Main *bmain, const bool do_time)
struct Depsgraph Depsgraph
@ CUMA_EXTEND_EXTRAPOLATE
#define IMA_MAX_RENDER_TEXT
Object is a sort of wrapper for general info.
#define RE_PASSNAME_COMBINED
#define V3D_CAMERA_LOCAL(v3d)
#define R_NO_FRAME_UPDATE
bool ED_operator_screenactive(struct bContext *C)
int ED_screen_animation_play(struct bContext *C, int sync, int mode)
void ED_update_for_newframe(struct Main *bmain, struct Depsgraph *depsgraph)
bScreen * ED_screen_animation_playing(const struct wmWindowManager *wm)
bool ED_editors_flush_edits_ex(struct Main *bmain, bool for_render, bool check_needs_flush)
bool IMB_colormanagement_support_glsl_draw(const struct ColorManagedViewSettings *view_settings)
void IMB_partial_display_buffer_update(struct ImBuf *ibuf, const float *linear_buffer, const unsigned char *byte_buffer, int stride, int offset_x, int offset_y, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, int xmin, int ymin, int xmax, int ymax)
Contains defines and structs used throughout the imbuf module.
@ IB_DISPLAY_BUFFER_INVALID
Read Guarded memory(de)allocation.
Platform independent time functions.
RenderEngineType * RE_engines_find(const char *idname)
void SEQ_cache_cleanup(Scene *scene)
void * BKE_image_free_buffers
size_t(* MEM_get_peak_memory)(void)
void(* MEM_freeN)(void *vmemh)
size_t(* MEM_get_memory_in_use)(void)
void *(* MEM_callocN)(size_t len, const char *str)
static void error(const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
bool RE_HasSingleLayer(Render *re)
void RE_stats_draw_cb(Render *re, void *handle, void(*f)(void *handle, RenderStats *rs))
RenderResult * RE_AcquireResultRead(Render *re)
void RE_progress_cb(Render *re, void *handle, void(*f)(void *handle, float))
int RE_seq_render_active(Scene *scene, RenderData *rd)
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_RenderFrame(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int frame, const bool write_still)
void RE_InitRenderCB(Render *re)
Render * RE_NewSceneRender(const Scene *scene)
void RE_ReleaseResult(Render *re)
void RE_RenderAnim(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int sfra, int efra, int tfra)
const char * RE_GetActiveRenderView(Render *re)
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))
void RE_display_update_cb(Render *re, void *handle, void(*f)(void *handle, RenderResult *rr, volatile rcti *rect))
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)
struct ScrArea * render_view_open(struct bContext *C, int mx, int my, struct ReportList *reports)
static void render_endjob(void *rjv)
static void render_image_restore_layer(RenderJob *rj)
static void current_scene_update(void *rjv, Scene *scene)
static int render_shutter_curve_preset_exec(bContext *C, wmOperator *op)
Scene * ED_render_job_get_scene(const bContext *C)
static int render_break(void *rjv)
static int screen_render_modal(bContext *C, wmOperator *op, const wmEvent *event)
static void image_renderinfo_cb(void *rjv, RenderStats *rs)
void RENDER_OT_render(wmOperatorType *ot)
static void image_buffer_rect_update(RenderJob *rj, RenderResult *rr, ImBuf *ibuf, ImageUser *iuser, const rcti *tile_rect, int offset_x, int offset_y, const char *viewname)
static int screen_render_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int render_breakjob(void *rjv)
static void screen_render_single_layer_set(wmOperator *op, Main *mainp, ViewLayer *active_layer, Scene **scene, ViewLayer **single_layer)
static void render_drawlock(void *rjv, bool lock)
static void make_renderinfo_string(const RenderStats *rs, const Scene *scene, const bool v3d_override, const char *error, char *str)
void RENDER_OT_shutter_curve_preset(wmOperatorType *ot)
static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect)
static int screen_render_exec(bContext *C, wmOperator *op)
static void clean_viewport_memory(Main *bmain, Scene *scene)
static bool image_buffer_calc_tile_rect(const RenderResult *rr, const ImBuf *ibuf, volatile rcti *renrect, rcti *r_ibuf_rect, int *r_offset_x, int *r_offset_y)
static void render_image_update_pass_and_layer(RenderJob *rj, RenderResult *rr, ImageUser *iuser)
static void render_progress_update(void *rjv, float progress)
static void clean_viewport_memory_base(Base *base)
static void screen_render_cancel(bContext *C, wmOperator *op)
static void render_startjob(void *rjv, short *stop, short *do_update, float *progress)
static void render_freejob(void *rjv)
struct RenderJob RenderJob
Scene * ED_render_job_get_current_scene(const bContext *C)
bool RE_HasCombinedLayer(RenderResult *rr)
RenderView * RE_RenderViewGetById(RenderResult *rr, const int view_id)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
_W64 unsigned int uintptr_t
bool SEQ_relations_check_scene_recursion(Scene *scene, ReportList *reports)
struct CurveMapping mblur_shutter_curve
struct ImageFormatData im_format
void(* render)(struct RenderEngine *engine, struct Depsgraph *depsgraph)
ColorManagedViewSettings view_settings
struct Object * camera_override
ColorManagedDisplaySettings display_settings
volatile RenderLayer * renlay
struct bNodeTree * nodetree
ColorManagedViewSettings view_settings
ColorManagedDisplaySettings display_settings
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
int(* modal)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
void(* cancel)(struct bContext *, struct wmOperator *)
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
double PIL_check_seconds_timer(void)
void WM_cursor_wait(bool val)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_set_locked_interface(wmWindowManager *wm, bool lock)
void WM_jobs_kill_all_except(wmWindowManager *wm, void *owner)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type)
void * WM_jobs_customdata_from_type(wmWindowManager *wm, int job_type)
bool WM_jobs_test(wmWindowManager *wm, void *owner, int job_type)
void WM_jobs_delay_start(wmJob *wm_job, double delay_time)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
void WM_jobs_kill_type(struct wmWindowManager *wm, void *owner, int job_type)
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
bScreen * WM_window_get_active_screen(const wmWindow *win)
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)