forked from bartvdbraak/blender
Fix for [#28927] Z-Transp disables Material Pass Index
This commit is contained in:
parent
13940cc78e
commit
0c1b6ac3b3
@ -3517,7 +3517,7 @@ static void add_transp_obindex(RenderLayer *rl, int offset, Object *ob)
|
||||
RenderPass *rpass;
|
||||
|
||||
for (rpass= rl->passes.first; rpass; rpass= rpass->next) {
|
||||
if (rpass->passtype == SCE_PASS_INDEXOB||rpass->passtype == SCE_PASS_INDEXMA) {
|
||||
if (rpass->passtype == SCE_PASS_INDEXOB) {
|
||||
float *fp= rpass->rect + offset;
|
||||
*fp= (float)ob->index;
|
||||
break;
|
||||
@ -3525,6 +3525,19 @@ static void add_transp_obindex(RenderLayer *rl, int offset, Object *ob)
|
||||
}
|
||||
}
|
||||
|
||||
static void add_transp_material_index(RenderLayer *rl, int offset, Material *mat)
|
||||
{
|
||||
RenderPass *rpass;
|
||||
|
||||
for (rpass= rl->passes.first; rpass; rpass= rpass->next) {
|
||||
if (rpass->passtype == SCE_PASS_INDEXMA) {
|
||||
float *fp= rpass->rect + offset;
|
||||
*fp= (float)mat->index;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ONLY OSA! merge all shaderesult samples to one */
|
||||
/* target should have been cleared */
|
||||
static void merge_transp_passes(RenderLayer *rl, ShadeResult *shr)
|
||||
@ -4129,10 +4142,12 @@ unsigned short *zbuffer_transp_shade(RenderPart *pa, RenderLayer *rl, float *pas
|
||||
}
|
||||
}
|
||||
if (addpassflag & SCE_PASS_INDEXMA) {
|
||||
ObjectRen *obr= R.objectinstance[zrow[totface-1].obi].obr;
|
||||
if (obr->ob) {
|
||||
ObjectRen *obr = R.objectinstance[zrow[totface-1].obi].obr;
|
||||
VlakRen *vr = obr->vlaknodes->vlak;
|
||||
Material *mat = vr->mat;
|
||||
if (mat) {
|
||||
for (a= 0; a<totfullsample; a++)
|
||||
add_transp_obindex(rlpp[a], od, obr->ob);
|
||||
add_transp_material_index(rlpp[a], od, mat);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user