[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