Multi-View: new util functions RE_RenderViewGetById() and RE_RenderViewGetByName()
Both functions try to find a valid RenderView and if they can't they fallback to the first RenderView of the RenderResult
This commit is contained in:
parent
3acc1ba49c
commit
b033736eb7
|
@ -82,7 +82,7 @@ void CompositorOperation::deinitExecution()
|
|||
RenderResult *rr = RE_AcquireResultWrite(re);
|
||||
|
||||
if (rr) {
|
||||
RenderView *rv = (RenderView *)BLI_findstring(&rr->views, this->m_viewName, offsetof(RenderView, name));
|
||||
RenderView *rv = RE_RenderViewGetByName(rr, this->m_viewName);
|
||||
|
||||
if (rv->rectf != NULL) {
|
||||
MEM_freeN(rv->rectf);
|
||||
|
|
|
@ -354,6 +354,8 @@ bool RE_allow_render_generic_object(struct Object *ob);
|
|||
bool RE_HasFakeLayer(RenderResult *res);
|
||||
bool RE_RenderResult_is_stereo(RenderResult *res);
|
||||
|
||||
struct RenderView *RE_RenderViewGetById(struct RenderResult *res, const int view_id);
|
||||
struct RenderView *RE_RenderViewGetByName(struct RenderResult *res, const char *viewname);
|
||||
float *RE_RenderViewGetRectf(struct RenderResult *rr, const int view_id);
|
||||
float *RE_RenderViewGetRectz(struct RenderResult *rr, const int view_id);
|
||||
int *RE_RenderViewGetRect32(struct RenderResult *rr, const int view_id);
|
||||
|
|
|
@ -395,9 +395,7 @@ void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
|
|||
rr->recty = re->result->recty;
|
||||
|
||||
/* actview view */
|
||||
rv = BLI_findlink(&re->result->views, view_id);
|
||||
if (rv == NULL)
|
||||
rv = (RenderView *)re->result->views.first;
|
||||
rv = RE_RenderViewGetById(re->result, view_id);
|
||||
|
||||
rr->rectf = rv ? rv->rectf : NULL;
|
||||
rr->rectz = rv ? rv->rectz : NULL;
|
||||
|
@ -2287,7 +2285,7 @@ static void do_merge_fullsample(Render *re, bNodeTree *ntree)
|
|||
|
||||
/* store the final result */
|
||||
BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
|
||||
rv = BLI_findlink(&re->result->views, nr);
|
||||
rv = RE_RenderViewGetById(re->result, nr);
|
||||
if (rv->rectf)
|
||||
MEM_freeN(rv->rectf);
|
||||
rv->rectf = rectf;
|
||||
|
@ -2571,7 +2569,7 @@ static void do_render_seq(Render *re)
|
|||
BLI_rw_mutex_unlock(&re->resultmutex);
|
||||
|
||||
for (view_id = 0; view_id < tot_views; view_id++) {
|
||||
RenderView *rv = BLI_findlink(&rr->views, view_id);
|
||||
RenderView *rv = RE_RenderViewGetById(rr, view_id);
|
||||
BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);
|
||||
|
||||
if (ibuf_arr[view_id]) {
|
||||
|
|
|
@ -1507,7 +1507,7 @@ ImBuf *render_result_rect_to_ibuf(RenderResult *rr, RenderData *rd, const int vi
|
|||
|
||||
void render_result_rect_from_ibuf(RenderResult *rr, RenderData *UNUSED(rd), ImBuf *ibuf, const int view_id)
|
||||
{
|
||||
RenderView *rv = BLI_findlink(&rr->views, view_id);
|
||||
RenderView *rv = RE_RenderViewGetById(rr, view_id);
|
||||
|
||||
if (ibuf->rect_float) {
|
||||
if (!rv->rectf)
|
||||
|
@ -1536,7 +1536,7 @@ void render_result_rect_from_ibuf(RenderResult *rr, RenderData *UNUSED(rd), ImBu
|
|||
|
||||
void render_result_rect_fill_zero(RenderResult *rr, const int view_id)
|
||||
{
|
||||
RenderView *rv = BLI_findlink(&rr->views, view_id);
|
||||
RenderView *rv = RE_RenderViewGetById(rr, view_id);
|
||||
|
||||
if (rv->rectf)
|
||||
memset(rv->rectf, 0, 4 * sizeof(float) * rr->rectx * rr->recty);
|
||||
|
@ -1592,6 +1592,18 @@ bool RE_RenderResult_is_stereo(RenderResult *res)
|
|||
return true;
|
||||
}
|
||||
|
||||
RenderView *RE_RenderViewGetById(RenderResult *res, const int view_id)
|
||||
{
|
||||
RenderView *rv = BLI_findlink(&res->views, view_id);
|
||||
return rv ? rv : res->views.first;
|
||||
}
|
||||
|
||||
RenderView *RE_RenderViewGetByName(RenderResult *res, const char *viewname)
|
||||
{
|
||||
RenderView *rv = BLI_findstring(&res->views, viewname, offsetof(RenderView, name));
|
||||
return rv ? rv : res->views.first;
|
||||
}
|
||||
|
||||
void RE_RenderViewSetRectf(RenderResult *res, const int view_id, float *rect)
|
||||
{
|
||||
RenderView *rv = BLI_findlink(&res->views, view_id);
|
||||
|
|
Loading…
Reference in New Issue