Campbell report:

Not clearing the value for 'parts rendered' caused 3d previewrender to
sometimes fail doing updates (when an escape happens during converting
render data).
This commit is contained in:
Ton Roosendaal
2006-06-28 12:53:57 +00:00
parent 1937162af5
commit 9ecffb4314
4 changed files with 14 additions and 10 deletions

View File

@@ -2944,7 +2944,7 @@ void RE_Database_Free(Render *re)
if(re->r.mode & R_RAYTRACE) freeoctree(re);
re->totvlak=re->totvert=re->totlamp=re->tothalo= 0;
re->i.convertdone= 0;
re->i.convertdone= re->i.partsdone= 0;
if(re->scene)
if(re->scene->r.scemode & R_FREE_IMAGE)

View File

@@ -958,6 +958,7 @@ static void render_tile_processor(Render *re, int firsttile)
re->display_draw(pa->result, NULL);
re->i.partsdone++;
re->stats_draw(&re->i);
}
free_render_result(pa->result);
pa->result= NULL;

View File

@@ -2828,7 +2828,7 @@ static void material_panel_tramir(Material *ma)
uiBlockBeginAlign(block);
uiDefButF(block, NUMSLI, B_MATPRV, "SpecTra ", 10,20,150,20, &(ma->spectra), 0.0, 1.0, 0, 0, "Makes specular areas opaque on transparent materials");
uiDefButF(block, NUMSLI, B_MATPRV, "Add ", 160,20,150,20, &(ma->add), 0.0, 1.0, 0, 0, "Uses additive blending for Z-transparant materials");
// uiDefButF(block, NUMSLI, B_MATPRV, "Add ", 160,20,150,20, &(ma->add), 0.0, 1.0, 0, 0, "Uses additive blending for Z-transparant materials");
uiBlockEndAlign(block);
}

View File

@@ -599,7 +599,8 @@ void BIF_previewdraw(ScrArea *sa, uiBlock *block)
/* *************************** Preview for 3d window *********************** */
static void view3d_previewrender_stats(RenderStats *rs)
{
// printf("rendered %.3f\n", rs->lastframetime);
// if(rs->convertdone)
// printf("rendered %d %.3f\n", rs->partsdone, rs->lastframetime);
}
static void view3d_previewrender_progress(RenderResult *rr, volatile rcti *renrect)
@@ -638,7 +639,7 @@ void BIF_view3d_previewrender_signal(ScrArea *sa, short signal)
RenderInfo *ri= v3d->ri;
ri->status &= ~signal;
ri->curtile= 0;
// printf("preview signal\n");
//printf("preview signal %d\n", signal);
if(ri->re && (signal & PR_DBASE))
RE_Database_Free(ri->re);
@@ -744,7 +745,7 @@ void BIF_view3d_previewrender(ScrArea *sa)
addafterqueue(curarea->win, RENDERPREVIEW, 1);
return;
}
//printf("Enter previewrender\n");
/* ok, are we rendering all over? */
if(ri->re==NULL) {
char name[32];
@@ -774,7 +775,7 @@ void BIF_view3d_previewrender(ScrArea *sa)
/* until here are no escapes */
ri->status |= PR_DISPRECT;
ri->curtile= 0;
// printf("new render\n");
//printf("new render\n");
}
re= ri->re;
@@ -791,7 +792,7 @@ void BIF_view3d_previewrender(ScrArea *sa)
RE_SetWindow(ri->re, &viewplane, clipsta, clipend);
ri->status |= PR_DISPRECT;
ri->curtile= 0;
// printf("disprect update\n");
//printf("disprect update\n");
}
if((ri->status & PR_DBASE)==0) {
unsigned int lay= G.scene->lay;
@@ -810,7 +811,7 @@ void BIF_view3d_previewrender(ScrArea *sa)
if(rstats->convertdone)
ri->status |= PR_DBASE|PR_PROJECTED|PR_ROTATED;
ri->curtile= 0;
// printf("dbase update\n");
//printf("dbase update\n");
}
if((ri->status & PR_PROJECTED)==0) {
if(ri->status & PR_DBASE) {
@@ -822,12 +823,12 @@ void BIF_view3d_previewrender(ScrArea *sa)
ri->status |= PR_PROJECTED;
}
ri->curtile= 0;
// printf("project update\n");
//printf("project update\n");
}
/* OK, can we enter render code? */
if(ri->status==(PR_DISPRECT|PR_DBASE|PR_PROJECTED|PR_ROTATED)) {
// printf("curtile %d tottile %d\n", ri->curtile, ri->tottile);
//printf("curtile %d tottile %d\n", ri->curtile, ri->tottile);
RE_TileProcessor(ri->re, ri->curtile);
if(ri->rect==NULL)
@@ -848,6 +849,8 @@ void BIF_view3d_previewrender(ScrArea *sa)
else {
addafterqueue(curarea->win, RENDERPREVIEW, 1);
}
//printf("\n");
}
/* in panel space! */