diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h index b529c3193bb..b9b46d3f245 100644 --- a/source/blender/blenkernel/BKE_pointcache.h +++ b/source/blender/blenkernel/BKE_pointcache.h @@ -170,9 +170,9 @@ typedef struct PTCacheBaker { struct Scene *scene; struct ViewLayer *view_layer; struct Depsgraph *depsgraph; - int bake; - int render; - int anim_init; + bool bake; + bool render; + bool anim_init; int quick_step; struct PTCacheID pid; diff --git a/source/blender/render/RE_pipeline.h b/source/blender/render/RE_pipeline.h index 2002e97679d..79a5918da89 100644 --- a/source/blender/render/RE_pipeline.h +++ b/source/blender/render/RE_pipeline.h @@ -71,7 +71,7 @@ typedef struct RenderPass { char view[64]; /* EXR_VIEW_MAXNAME */ int view_id; /* quick lookup */ - int pad; + char _pad0[4]; } RenderPass; /** @@ -130,7 +130,7 @@ typedef struct RenderResult { int framenr; /* for acquire image, to indicate if it there is a combined layer */ - int have_combined; + bool have_combined; /* render info text */ char *text; @@ -356,7 +356,7 @@ void RE_RenderAnim(struct Render *re, void RE_RenderFreestyleStrokes(struct Render *re, struct Main *bmain, struct Scene *scene, - int render); + bool render); void RE_RenderFreestyleExternal(struct Render *re); #endif @@ -415,7 +415,7 @@ void *RE_gpu_context_get(Render *re); */ float RE_filter_value(int type, float x); -int RE_seq_render_active(struct Scene *scene, struct RenderData *rd); +bool RE_seq_render_active(struct Scene *scene, struct RenderData *rd); /** * Used in the interface to decide whether to show layers or passes. diff --git a/source/blender/render/intern/pipeline.cc b/source/blender/render/intern/pipeline.cc index 34e04e1662c..c74b7df6a65 100644 --- a/source/blender/render/intern/pipeline.cc +++ b/source/blender/render/intern/pipeline.cc @@ -1020,30 +1020,32 @@ static void do_render_compositor_scene(Render *re, Scene *sce, int cfra) do_render_engine(resc); } -/* helper call to detect if this scene needs a render, - * or if there's a any render layer to render. */ -static int compositor_needs_render(Scene *sce, int this_scene) +/** + * Helper call to detect if this scene needs a render, + * or if there's a any render layer to render. + */ +static bool compositor_needs_render(Scene *sce, const bool this_scene) { bNodeTree *ntree = sce->nodetree; if (ntree == nullptr) { - return 1; + return true; } if (sce->use_nodes == false) { - return 1; + return true; } if ((sce->r.scemode & R_DOCOMP) == 0) { - return 1; + return true; } for (const bNode *node : ntree->all_nodes()) { if (node->type == CMP_NODE_R_LAYERS && (node->flag & NODE_MUTED) == 0) { if (this_scene == 0 || node->id == nullptr || node->id == &sce->id) { - return 1; + return true; } } } - return 0; + return false; } /* Render all scenes within a compositor node tree. */ @@ -1102,9 +1104,9 @@ static void render_compositor_stats(void *arg, const char *str) static void do_render_compositor(Render *re) { bNodeTree *ntree = re->pipeline_scene_eval->nodetree; - int update_newframe = 0; + bool update_newframe = false; - if (compositor_needs_render(re->pipeline_scene_eval, 1)) { + if (compositor_needs_render(re->pipeline_scene_eval, true)) { /* render the frames * it could be optimized to render only the needed view * but what if a scene has a different number of views @@ -1125,8 +1127,8 @@ static void do_render_compositor(Render *re) BLI_rw_mutex_unlock(&re->resultmutex); - /* scene render process already updates animsys */ - update_newframe = 1; + /* Scene render process already updates animsys. */ + update_newframe = true; } /* swap render result */ @@ -1204,21 +1206,21 @@ static void renderresult_stampinfo(Render *re) } } -int RE_seq_render_active(Scene *scene, RenderData *rd) +bool RE_seq_render_active(Scene *scene, RenderData *rd) { Editing *ed = scene->ed; if (!(rd->scemode & R_DOSEQ) || !ed || !ed->seqbase.first) { - return 0; + return false; } LISTBASE_FOREACH (Sequence *, seq, &ed->seqbase) { if (seq->type != SEQ_TYPE_SOUND_RAM) { - return 1; + return true; } } - return 0; + return false; } /* Render sequencer strips into render result. */ @@ -1574,7 +1576,7 @@ bool RE_is_rendering_allowed(Scene *scene, static void update_physics_cache(Render *re, Scene *scene, ViewLayer *view_layer, - int /*anim_init*/) + const bool /*anim_init*/) { PTCacheBaker baker; @@ -1583,9 +1585,9 @@ static void update_physics_cache(Render *re, baker.scene = scene; baker.view_layer = view_layer; baker.depsgraph = BKE_scene_ensure_depsgraph(re->main, scene, view_layer); - baker.bake = 0; - baker.render = 1; - baker.anim_init = 1; + baker.bake = false; + baker.render = true; + baker.anim_init = true; baker.quick_step = 1; BKE_ptcache_bake(&baker); @@ -1608,8 +1610,8 @@ static bool render_init_from_main(Render *re, Scene *scene, ViewLayer *single_layer, Object *camera_override, - int anim, - int anim_init) + const bool anim, + const bool anim_init) { int winx, winy; rcti disprect; @@ -1755,7 +1757,8 @@ void RE_RenderFrame(Render *re, scene->r.cfra = frame; scene->r.subframe = subframe; - if (render_init_from_main(re, &scene->r, bmain, scene, single_layer, camera_override, 0, 0)) { + if (render_init_from_main( + re, &scene->r, bmain, scene, single_layer, camera_override, false, false)) { RenderData rd; memcpy(&rd, &scene->r, sizeof(rd)); MEM_reset_peak_memory(); @@ -1825,10 +1828,10 @@ static bool use_eevee_for_freestyle_render(Render *re) return !(type->flag & RE_USE_CUSTOM_FREESTYLE); } -void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, int render) +void RE_RenderFreestyleStrokes(Render *re, Main *bmain, Scene *scene, const bool render) { re->result_ok = false; - if (render_init_from_main(re, &scene->r, bmain, scene, nullptr, nullptr, 0, 0)) { + if (render_init_from_main(re, &scene->r, bmain, scene, nullptr, nullptr, false, false)) { if (render) { char scene_engine[32]; BLI_strncpy(scene_engine, re->r.engine, sizeof(scene_engine)); @@ -2095,7 +2098,7 @@ void RE_RenderAnim(Render *re, (rd.im_format.views_format == R_IMF_VIEWS_INDIVIDUAL)); /* do not fully call for each frame, it initializes & pops output window */ - if (!render_init_from_main(re, &rd, bmain, scene, single_layer, camera_override, 0, 1)) { + if (!render_init_from_main(re, &rd, bmain, scene, single_layer, camera_override, false, true)) { return; } @@ -2182,7 +2185,7 @@ void RE_RenderAnim(Render *re, render_update_depsgraph(re); /* Only border now, TODO(ton): camera lens. */ - render_init_from_main(re, &rd, bmain, scene, single_layer, camera_override, 1, 0); + render_init_from_main(re, &rd, bmain, scene, single_layer, camera_override, true, false); if (nfra != scene->r.cfra) { /* Skip this frame, but could update for physics and particles system. */ diff --git a/source/blender/render/intern/render_types.h b/source/blender/render/intern/render_types.h index 418acbca3b1..9a3dedc7036 100644 --- a/source/blender/render/intern/render_types.h +++ b/source/blender/render/intern/render_types.h @@ -113,6 +113,10 @@ struct Render { RenderStats i; + /** + * Optional report list which may be null (borrowed memory). + * Callers to rendering functions are responsible for setting can clearing, see: #RE_SetReports. + */ struct ReportList *reports; void **movie_ctx_arr;