[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51527] trunk/blender/source/blender/ render/intern/source/zbuf.c: Fix for [#28927] Z-Transp disables Material Pass Index

Jeroen Bakker j.bakker at atmind.nl
Tue Oct 23 09:20:38 CEST 2012


Revision: 51527
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51527
Author:   jbakker
Date:     2012-10-23 07:20:37 +0000 (Tue, 23 Oct 2012)
Log Message:
-----------
Fix for [#28927] Z-Transp disables Material Pass Index

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	2012-10-23 06:37:58 UTC (rev 51526)
+++ trunk/blender/source/blender/render/intern/source/zbuf.c	2012-10-23 07:20:37 UTC (rev 51527)
@@ -3517,7 +3517,7 @@
 	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_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 @@
 					}
 				}
 				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);
 					}
 				}
 




More information about the Bf-blender-cvs mailing list