forked from bartvdbraak/blender
Fix #35664: blender internal material index pass + ztransp + multiple materials
assigned to a mesh did not work correct.
This commit is contained in:
parent
a754423bd1
commit
7d478ac0a7
@ -4148,15 +4148,24 @@ unsigned short *zbuffer_transp_shade(RenderPart *pa, RenderLayer *rl, float *pas
|
|||||||
}
|
}
|
||||||
if (addpassflag & SCE_PASS_INDEXMA) {
|
if (addpassflag & SCE_PASS_INDEXMA) {
|
||||||
ObjectRen *obr = R.objectinstance[zrow[totface-1].obi].obr;
|
ObjectRen *obr = R.objectinstance[zrow[totface-1].obi].obr;
|
||||||
|
int p = zrow[totface-1].p;
|
||||||
Material *mat = NULL;
|
Material *mat = NULL;
|
||||||
|
|
||||||
if (zrow[totface-1].segment == -1) {
|
if (zrow[totface-1].segment == -1) {
|
||||||
if (obr->vlaknodes)
|
int facenr = (p - 1) & RE_QUAD_MASK;
|
||||||
mat = obr->vlaknodes->vlak->mat;
|
VlakRen *vlr = NULL;
|
||||||
|
|
||||||
|
if (facenr >= 0 && facenr < obr->totvlak)
|
||||||
|
vlr = RE_findOrAddVlak(obr, facenr);
|
||||||
|
|
||||||
|
if (vlr)
|
||||||
|
mat = vlr->mat;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (obr->strandbuf)
|
StrandRen *strand = RE_findOrAddStrand(obr, p - 1);
|
||||||
mat = obr->strandbuf->ma;
|
|
||||||
|
if (strand)
|
||||||
|
mat = strand->buffer->ma;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mat) {
|
if (mat) {
|
||||||
|
Loading…
Reference in New Issue
Block a user