forked from bartvdbraak/blender
Render passes:
Feature fix for ObjectIndex, now frontmost visible transparent face also writes an index.
This commit is contained in:
parent
086d51c822
commit
30984a3bc8
@ -893,7 +893,7 @@ void zbufshadeDA_tile(RenderPart *pa)
|
|||||||
/* allocate, but not free here, for asynchronous display of this rect in main thread */
|
/* allocate, but not free here, for asynchronous display of this rect in main thread */
|
||||||
rl->acolrect= MEM_callocN(4*sizeof(float)*pa->rectx*pa->recty, "alpha layer");
|
rl->acolrect= MEM_callocN(4*sizeof(float)*pa->rectx*pa->recty, "alpha layer");
|
||||||
|
|
||||||
/* swap for live updates */
|
/* swap for live updates, and it is used in zbuf.c!!! */
|
||||||
SWAP(float *, rl->acolrect, rl->rectf);
|
SWAP(float *, rl->acolrect, rl->rectf);
|
||||||
ztramask= zbuffer_transp_shade(pa, rl, rl->rectf);
|
ztramask= zbuffer_transp_shade(pa, rl, rl->rectf);
|
||||||
SWAP(float *, rl->acolrect, rl->rectf);
|
SWAP(float *, rl->acolrect, rl->rectf);
|
||||||
|
@ -2699,6 +2699,22 @@ static void add_transp_speed(RenderLayer *rl, int offset, float *speed, float al
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void add_transp_obindex(RenderLayer *rl, int offset, int facenr)
|
||||||
|
{
|
||||||
|
VlakRen *vlr= RE_findOrAddVlak(&R, (facenr-1) & RE_QUAD_MASK);
|
||||||
|
if(vlr && vlr->ob) {
|
||||||
|
RenderPass *rpass;
|
||||||
|
|
||||||
|
for(rpass= rl->passes.first; rpass; rpass= rpass->next) {
|
||||||
|
if(rpass->passtype == SCE_PASS_INDEXOB) {
|
||||||
|
float *fp= rpass->rect + offset;
|
||||||
|
*fp= (float)vlr->ob->index;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* ONLY OSA! merge all shaderesult samples to one */
|
/* ONLY OSA! merge all shaderesult samples to one */
|
||||||
/* target should have been cleared */
|
/* target should have been cleared */
|
||||||
static void merge_transp_passes(RenderLayer *rl, ShadeResult *shr)
|
static void merge_transp_passes(RenderLayer *rl, ShadeResult *shr)
|
||||||
@ -3110,10 +3126,15 @@ unsigned short *zbuffer_transp_shade(RenderPart *pa, RenderLayer *rl, float *pas
|
|||||||
qsort(zrow, totface, sizeof(int)*3, vergzvlak);
|
qsort(zrow, totface, sizeof(int)*3, vergzvlak);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* zbuffer and index pass for transparent, no AA or filters */
|
||||||
if(addzbuf)
|
if(addzbuf)
|
||||||
if(pa->rectz[od]>zrow[totface-1][0])
|
if(pa->rectz[od]>zrow[totface-1][0])
|
||||||
pa->rectz[od]= zrow[totface-1][0];
|
pa->rectz[od]= zrow[totface-1][0];
|
||||||
|
|
||||||
|
if(addpassflag & SCE_PASS_INDEXOB)
|
||||||
|
add_transp_obindex(rl, od, zrow[totface-1][1]);
|
||||||
|
|
||||||
|
|
||||||
if(R.osa==0) {
|
if(R.osa==0) {
|
||||||
while(totface>0) {
|
while(totface>0) {
|
||||||
totface--;
|
totface--;
|
||||||
|
Loading…
Reference in New Issue
Block a user