Cleanup: use bool for render pipeline & related API's

Also add doc-string for RenderEngine::reports.
This commit is contained in:
2023-04-05 17:47:51 +10:00
parent 7e99470a85
commit 2c446d2de3
4 changed files with 41 additions and 34 deletions

View File

@@ -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;

View File

@@ -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.

View File

@@ -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. */

View File

@@ -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;