[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15641] branches/soc-2007-joeedh/source/ blender: pre-merge commit

Joseph Eagar joeedh at gmail.com
Sat Jul 19 14:34:19 CEST 2008


Revision: 15641
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15641
Author:   joeedh
Date:     2008-07-19 14:34:19 +0200 (Sat, 19 Jul 2008)

Log Message:
-----------
pre-merge commit

Modified Paths:
--------------
    branches/soc-2007-joeedh/source/blender/blenkernel/BKE_dsm.h
    branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c

Modified: branches/soc-2007-joeedh/source/blender/blenkernel/BKE_dsm.h
===================================================================
--- branches/soc-2007-joeedh/source/blender/blenkernel/BKE_dsm.h	2008-07-19 10:27:52 UTC (rev 15640)
+++ branches/soc-2007-joeedh/source/blender/blenkernel/BKE_dsm.h	2008-07-19 12:34:19 UTC (rev 15641)
@@ -105,7 +105,7 @@
 
 #define DSM_SAMPLEMERGE_LIMIT	(0x7FFFFFFF) //20000000
 
-#define DSM_LINEAR	0
+#define DSM_LINEAR	1
 #define DSM_SOFT	0
 //#define DOQMCDEBUG
 

Modified: branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c
===================================================================
--- branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c	2008-07-19 10:27:52 UTC (rev 15640)
+++ branches/soc-2007-joeedh/source/blender/render/intern/source/dsm.c	2008-07-19 12:34:19 UTC (rev 15641)
@@ -1305,6 +1305,23 @@
 	return totface;
 }
 
+/* color 'shadfac' passes through 'col' with alpha and filter */
+/* filter is only applied on alpha defined transparent part */
+static void addAlphaLight(float *shadfac, float *col, float alpha, float filter)
+{
+	float fr, fg, fb;
+	
+	fr= 1.0f+ filter*(col[0]-1.0f);
+	fg= 1.0f+ filter*(col[1]-1.0f);
+	fb= 1.0f+ filter*(col[2]-1.0f);
+	
+	shadfac[0]= alpha*col[0] + fr*(1.0f-alpha)*shadfac[0];
+	shadfac[1]= alpha*col[1] + fg*(1.0f-alpha)*shadfac[1];
+	shadfac[2]= alpha*col[2] + fb*(1.0f-alpha)*shadfac[2];
+	
+	shadfac[3]= (1.0f-alpha)*shadfac[3];
+}
+
 /*cindex is component index, since all transmittance functions for r, g, and b
   are squased into only one input stream.*/
 DSMFunction *DSM_MergeLayerListNoWeight(MemArena *arena, _ClrEntry *row, ListBase (*transfuncs)[3], 
@@ -1687,7 +1704,9 @@
 							  transparent, they do not produce colored shadows.
 							  
 							  to deal with this, we produce a grayscale color equal to
-							  the shadowalpha, when shadowalpha is not 1.0.*/
+							  the shadowalpha, when shadowalpha is not 1.0.
+							  
+							  WARNING: HACK!*/
 							
 							/*this stuff taken from rayshade.c code*/
 							if (!ELEM(row[a].type, DSM_FACE_STEP, DSM_STRAND_STEP)) {
@@ -1695,10 +1714,21 @@
 									accum[row[a].samplenr][b] *= (1.0f - mat->shad_alpha);
 								} else {
 									fac= 1.0f + mat->filter*(clr[b]-1.0f);
-									fac = clr[3]*clr[b] + fac*(1.0f-clr[3])*accum[row[a].samplenr][b];
-									accum[row[a].samplenr][b] *= (1.0f - clr[3])*fac;
+									//fac = clr[3]*clr[b] + fac*(1.0f-clr[3])*accum[row[a].samplenr][b];
+									fac = clr[3]*clr[b] + fac*(1.0f-clr[3]);
+									accum[row[a].samplenr][b] *= (1.0f-clr[3])*fac;
+									//
+									//accum[row[a].samplenr][b] *= 1.0f - clr[3];
+									//accum[row[a].samplenr][b] *= 1.0 - (1.0 - clr[3])*clr[b];
+									//accum[row[a].samplenr][b] *= 1.0 - clr[3]*(1.0 - clr[b]);
+
+									//addAlphaLight(accum[row[a].samplenr][b], clr, clr[3], mat->filter);
 								}
-							}
+							}/* not needed I think, since accum should already
+							    have the previous value it needs.
+							 else {
+								accum[row[a].samplenr][b] = row[a].prev->value;
+							}*/
 
 							row[a].value = accum[row[a].samplenr][b];
 
@@ -2569,11 +2599,6 @@
 	co[3]= 1.0f;
 	MTC_Mat4MulVec4fl(shb->persmat, co); /* rational hom co */
 	
-	/*MTC_Mat4MulVecfl(shb->viewmat, co);
-	co[3]= 1.0f;
-	MTC_Mat4MulVec4fl(shb->winmat, co);	// rational hom co
-	*/
-
 	xs= siz*(1.0f+co[0]/co[3]);
 	ys= siz*(1.0f+co[1]/co[3]);
 





More information about the Bf-blender-cvs mailing list