[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57439] trunk/blender/source/blender/ render/intern/source/zbuf.c: Fix #35664: blender internal material index pass + ztransp + multiple materials
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Jun 13 17:02:42 CEST 2013
Revision: 57439
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57439
Author: blendix
Date: 2013-06-13 15:02:42 +0000 (Thu, 13 Jun 2013)
Log Message:
-----------
Fix #35664: blender internal material index pass + ztransp + multiple materials
assigned to a mesh did not work correct.
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/zbuf.c
Modified: trunk/blender/source/blender/render/intern/source/zbuf.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/zbuf.c 2013-06-13 14:40:22 UTC (rev 57438)
+++ trunk/blender/source/blender/render/intern/source/zbuf.c 2013-06-13 15:02:42 UTC (rev 57439)
@@ -4148,15 +4148,24 @@
}
if (addpassflag & SCE_PASS_INDEXMA) {
ObjectRen *obr = R.objectinstance[zrow[totface-1].obi].obr;
+ int p = zrow[totface-1].p;
Material *mat = NULL;
if (zrow[totface-1].segment == -1) {
- if (obr->vlaknodes)
- mat = obr->vlaknodes->vlak->mat;
+ int facenr = (p - 1) & RE_QUAD_MASK;
+ VlakRen *vlr = NULL;
+
+ if (facenr >= 0 && facenr < obr->totvlak)
+ vlr = RE_findOrAddVlak(obr, facenr);
+
+ if (vlr)
+ mat = vlr->mat;
}
else {
- if (obr->strandbuf)
- mat = obr->strandbuf->ma;
+ StrandRen *strand = RE_findOrAddStrand(obr, p - 1);
+
+ if (strand)
+ mat = strand->buffer->ma;
}
if (mat) {
More information about the Bf-blender-cvs
mailing list