[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12660] trunk/blender/source/blender/ render/intern/source:

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Nov 23 15:10:05 CET 2007


Revision: 12660
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12660
Author:   blendix
Date:     2007-11-23 15:10:05 +0100 (Fri, 23 Nov 2007)

Log Message:
-----------

Fix for bugs #6709 and #7005:
- SSS not working with negative scale objects.
- Fluids + SSS not always rendering smooth normals correct.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/rendercore.c

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2007-11-23 11:07:57 UTC (rev 12659)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2007-11-23 14:10:05 UTC (rev 12660)
@@ -1883,9 +1883,10 @@
 				MTC_Mat4MulVecfl(mat, ver->co);
 
 			if(useFluidmeshNormals) {
-				xn = mvert->no[0]/ 32767.0;
-				yn = mvert->no[1]/ 32767.0;
-				zn = mvert->no[2]/ 32767.0;
+				/* normals are inverted in render */
+				xn = -mvert->no[0]/ 32767.0;
+				yn = -mvert->no[1]/ 32767.0;
+				zn = -mvert->no[2]/ 32767.0;
 				/* transfor to cam  space */
 				ver->n[0]= imat[0][0]*xn+imat[0][1]*yn+imat[0][2]*zn;
 				ver->n[1]= imat[1][0]*xn+imat[1][1]*yn+imat[1][2]*zn;

Modified: trunk/blender/source/blender/render/intern/source/rendercore.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rendercore.c	2007-11-23 11:07:57 UTC (rev 12659)
+++ trunk/blender/source/blender/render/intern/source/rendercore.c	2007-11-23 14:10:05 UTC (rev 12660)
@@ -1182,11 +1182,8 @@
 		shade_input_set_triangle_i(shi, vlr, 0, 1, 2);
 
 	/* we don't want flipped normals, they screw up back scattering */
-	if(vlr->noflag & R_FLIPPED_NO) {
-		shi->facenor[0]= -shi->facenor[0];
-		shi->facenor[1]= -shi->facenor[1];
-		shi->facenor[2]= -shi->facenor[2];
-	}
+	if(vlr->noflag & R_FLIPPED_NO)
+		VecMulf(shi->facenor, -1.0f);
 
 	/* center pixel */
 	x += 0.5f;
@@ -1214,6 +1211,12 @@
 	shade_input_set_uv(shi);
 	shade_input_set_normals(shi);
 
+	/* not a pretty solution, but fixes common cases */
+	if(vlr->ob && vlr->ob->transflag & OB_NEG_SCALE) {
+		VecMulf(shi->vn, -1.0f);
+		VecMulf(shi->vno, -1.0f);
+	}
+
 	/* if nodetree, use the material that we are currently preprocessing
 	   instead of the node material */
 	if(shi->mat->nodetree && shi->mat->use_nodes)





More information about the Bf-blender-cvs mailing list