[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28047] trunk/blender/source/blender: Fix #21545: geometry node front/back incorrectly depended on camera angle, can

Brecht Van Lommel brecht at blender.org
Tue Apr 6 12:24:57 CEST 2010


Revision: 28047
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28047
Author:   blendix
Date:     2010-04-06 12:24:57 +0200 (Tue, 06 Apr 2010)

Log Message:
-----------
Fix #21545: geometry node front/back incorrectly depended on camera angle, can
actually be implemented simpler now. 

Modified Paths:
--------------
    trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_geom.c
    trunk/blender/source/blender/render/extern/include/RE_shader_ext.h
    trunk/blender/source/blender/render/intern/source/shadeinput.c

Modified: trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_geom.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_geom.c	2010-04-06 10:13:19 UTC (rev 28046)
+++ trunk/blender/source/blender/nodes/intern/SHD_nodes/SHD_geom.c	2010-04-06 10:24:57 UTC (rev 28047)
@@ -54,7 +54,6 @@
 		NodeGeometry *ngeo= (NodeGeometry*)node->storage;
 		ShadeInputUV *suv= &shi->uv[shi->actuv];
 		static float defaultvcol[4] = {1.0f, 1.0f, 1.0f, 1.0f};
-		static float front= 0.0;
 		int i;
 
 		if(ngeo->uvname[0]) {
@@ -109,14 +108,8 @@
 			out[GEOM_OUT_NORMAL]->datatype= NS_OSA_VECTORS;
 		}
 		
-		/* front/back
-		* check the original un-flipped normals to determine front or back side */
-		if (shi->orignor[2] < FLT_EPSILON) {
-			front= 1.0f;
-		} else {
-			front = 0.0f;
-		}
-		out[GEOM_OUT_FRONTBACK]->vec[0]= front;
+		/* front/back, normal flipping was stored */
+		out[GEOM_OUT_FRONTBACK]->vec[0]= (shi->flippednor)? 0.0f: 1.0f;
 	}
 }
 

Modified: trunk/blender/source/blender/render/extern/include/RE_shader_ext.h
===================================================================
--- trunk/blender/source/blender/render/extern/include/RE_shader_ext.h	2010-04-06 10:13:19 UTC (rev 28046)
+++ trunk/blender/source/blender/render/extern/include/RE_shader_ext.h	2010-04-06 10:24:57 UTC (rev 28047)
@@ -166,9 +166,6 @@
 	int depth;				/* 1 or larger on raytrace shading */
 	int volume_depth;		/* number of intersections through volumes */
 	
-	/* stored copy of original face normal (facenor) 
-	 * before flipping. Used in Front/back output on geometry node */
-	float orignor[3];
 	/* for strand shading, normal at the surface */
 	float surfnor[3], surfdist;
 

Modified: trunk/blender/source/blender/render/intern/source/shadeinput.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/shadeinput.c	2010-04-06 10:13:19 UTC (rev 28046)
+++ trunk/blender/source/blender/render/intern/source/shadeinput.c	2010-04-06 10:24:57 UTC (rev 28047)
@@ -276,11 +276,6 @@
 	/* facenormal copy, can get flipped */
 	shi->flippednor= RE_vlakren_get_normal(&R, obi, vlr, shi->facenor);
 	
-	/* copy of original pre-flipped normal, for geometry->front/back node output */
-	VECCOPY(shi->orignor, shi->facenor);
-	if(shi->flippednor)
-		VECMUL(shi->orignor, -1.0f);
-	
 	/* calculate vertexnormals */
 	if(vlr->flag & R_SMOOTH) {
 		VECCOPY(shi->n1, shi->v1->n);
@@ -372,7 +367,6 @@
 
 	/* facenormal, simply viewco flipped */
 	VECCOPY(shi->facenor, spoint->nor);
-	VECCOPY(shi->orignor, shi->facenor);
 
 	/* shade_input_set_normals equivalent */
 	if(shi->mat->mode & MA_TANGENT_STR) {





More information about the Bf-blender-cvs mailing list