[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30899] trunk/blender: 2.5: remove vertex normal flip option, this is more harmful than helpful

Brecht Van Lommel brecht at blender.org
Fri Jul 30 13:50:00 CEST 2010


Revision: 30899
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30899
Author:   blendix
Date:     2010-07-30 13:50:00 +0200 (Fri, 30 Jul 2010)

Log Message:
-----------
2.5: remove vertex normal flip option, this is more harmful than helpful
in many cases, and also gave incorrect rim lighting.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_data_mesh.py
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/makesdna/DNA_curve_types.h
    trunk/blender/source/blender/makesdna/DNA_mesh_types.h
    trunk/blender/source/blender/makesrna/intern/rna_curve.c
    trunk/blender/source/blender/makesrna/intern/rna_mesh.c
    trunk/blender/source/blender/render/intern/include/render_types.h
    trunk/blender/source/blender/render/intern/include/renderdatabase.h
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/render/intern/source/rayshade.c
    trunk/blender/source/blender/render/intern/source/renderdatabase.c
    trunk/blender/source/blender/render/intern/source/shadeinput.c

Modified: trunk/blender/release/scripts/ui/properties_data_mesh.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_mesh.py	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/release/scripts/ui/properties_data_mesh.py	2010-07-30 11:50:00 UTC (rev 30899)
@@ -114,7 +114,6 @@
             col = split.column()
         else:
             col.separator()
-        col.prop(mesh, "vertex_normal_flip")
         col.prop(mesh, "double_sided")
 
 

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2010-07-30 11:50:00 UTC (rev 30899)
@@ -697,7 +697,6 @@
 	if(dl==0) return;
 
 	if(dl->type==DL_INDEX4) {
-		me->flag= ME_NOPUNOFLIP;
 		me->totvert= dl->nr;
 		me->totface= dl->parts;
 		

Modified: trunk/blender/source/blender/makesdna/DNA_curve_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_curve_types.h	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/makesdna/DNA_curve_types.h	2010-07-30 11:50:00 UTC (rev 30899)
@@ -245,7 +245,7 @@
 #define CU_PATH			8
 #define CU_FOLLOW		16
 #define CU_UV_ORCO		32
-#define CU_NOPUNOFLIP	64
+#define CU_DEPRECATED	64
 #define CU_STRETCH		128
 #define CU_OFFS_PATHDIST	256
 #define CU_FAST			512 /* Font: no filling inside editmode */

Modified: trunk/blender/source/blender/makesdna/DNA_mesh_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_mesh_types.h	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/makesdna/DNA_mesh_types.h	2010-07-30 11:50:00 UTC (rev 30899)
@@ -129,7 +129,7 @@
 
 /* me->flag */
 /* #define ME_ISDONE		1 */
-#define ME_NOPUNOFLIP	2
+#define ME_DEPRECATED	2
 #define ME_TWOSIDED		4
 #define ME_UVEFFECT		8
 #define ME_VCOLEFFECT	16

Modified: trunk/blender/source/blender/makesrna/intern/rna_curve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_curve.c	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/makesrna/intern/rna_curve.c	2010-07-30 11:50:00 UTC (rev 30899)
@@ -706,11 +706,6 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UV_ORCO);
 	RNA_def_property_ui_text(prop, "Map Along Length", "Generate texture mapping coordinates following the curve direction, rather than the local bounding box");
 	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
-	
-	prop= RNA_def_property(srna, "vertex_normal_flip", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CU_NOPUNOFLIP);
-	RNA_def_property_ui_text(prop, "Vertex Normal Flip", "Flip vertex normals towards the camera during render");
-	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
 }
 
 static void rna_def_font(BlenderRNA *brna, StructRNA *srna)

Modified: trunk/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_mesh.c	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/makesrna/intern/rna_mesh.c	2010-07-30 11:50:00 UTC (rev 30899)
@@ -1748,10 +1748,6 @@
 	RNA_def_property_range(prop, 1, 80);
 	RNA_def_property_ui_text(prop, "Auto Smooth Angle", "Defines maximum angle between face normals that 'Auto Smooth' will operate on");
 
-	prop= RNA_def_property(srna, "vertex_normal_flip", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ME_NOPUNOFLIP);
-	RNA_def_property_ui_text(prop, "Vertex Normal Flip", "Flip vertex normals towards the camera during render");
-
 	prop= RNA_def_property(srna, "double_sided", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_TWOSIDED);
 	RNA_def_property_ui_text(prop, "Double Sided", "Render/display the mesh with double or single sided lighting");

Modified: trunk/blender/source/blender/render/intern/include/render_types.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/render_types.h	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/render/intern/include/render_types.h	2010-07-30 11:50:00 UTC (rev 30899)
@@ -587,23 +587,21 @@
 #define R_HALO			2
 #define R_SEC_FIELD		4
 #define R_LAMPHALO		8
-#define R_GLOB_NOPUNOFLIP	16
-#define R_NEED_TANGENT	32
-#define R_BAKE_TRACE	128
-#define R_BAKING		256
+#define R_NEED_TANGENT	16
+#define R_BAKE_TRACE	32
+#define R_BAKING		64
 
 /* vlakren->flag (vlak = face in dutch) char!!! */
 #define R_SMOOTH		1
 #define R_HIDDEN		2
 /* strand flag, means special handling */
 #define R_STRAND		4
-#define R_NOPUNOFLIP	8
-#define R_FULL_OSA		16
-#define R_FACE_SPLIT	32
+#define R_FULL_OSA		8
+#define R_FACE_SPLIT	16
 /* Tells render to divide face other way. */
-#define R_DIVIDE_24		64	
+#define R_DIVIDE_24		32	
 /* vertex normals are tangent or view-corrected vector, for hair strands */
-#define R_TANGENT		128		
+#define R_TANGENT		64		
 
 /* strandbuffer->flag */
 #define R_STRAND_BSPLINE	1

Modified: trunk/blender/source/blender/render/intern/include/renderdatabase.h
===================================================================
--- trunk/blender/source/blender/render/intern/include/renderdatabase.h	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/render/intern/include/renderdatabase.h	2010-07-30 11:50:00 UTC (rev 30899)
@@ -115,7 +115,7 @@
 float *RE_vlakren_get_surfnor(struct ObjectRen *obr, VlakRen *ren, int verify);
 float *RE_vlakren_get_nmap_tangent(struct ObjectRen *obr, VlakRen *ren, int verify);
 RadFace **RE_vlakren_get_radface(struct ObjectRen *obr, VlakRen *ren, int verify);
-int RE_vlakren_get_normal(struct Render *re, struct ObjectInstanceRen *obi, struct VlakRen *vlr, float *nor);
+void RE_vlakren_get_normal(struct Render *re, struct ObjectInstanceRen *obi, struct VlakRen *vlr, float *nor);
 
 float *RE_strandren_get_surfnor(struct ObjectRen *obr, struct StrandRen *strand, int verify);
 float *RE_strandren_get_uv(struct ObjectRen *obr, struct StrandRen *strand, int n, char **name, int verify);

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2010-07-30 11:50:00 UTC (rev 30899)
@@ -356,17 +356,6 @@
 }
 
 /* ------------------------------------------------------------------------- */
-
-static int check_vnormal(float *n, float *veno)
-{
-	float inp;
-
-	inp=n[0]*veno[0]+n[1]*veno[1]+n[2]*veno[2];
-	if(inp < -FLT_EPSILON10) return 1;
-	return 0;
-}
-
-/* ------------------------------------------------------------------------- */
 /* Stress, tangents and normals                                              */
 /* ------------------------------------------------------------------------- */
 
@@ -536,9 +525,6 @@
 			float n1[3], n2[3], n3[3], n4[3];
 			float fac1, fac2, fac3, fac4=0.0f;
 			
-			if(re->flag & R_GLOB_NOPUNOFLIP)
-				vlr->flag |= R_NOPUNOFLIP;
-			
 			sub_v3_v3v3(n1, v2->co, v1->co);
 			normalize_v3(n1);
 			sub_v3_v3v3(n2, v3->co, v2->co);
@@ -562,21 +548,11 @@
 				fac3= saacos(-n2[0]*n3[0]-n2[1]*n3[1]-n2[2]*n3[2]);
 				fac4= saacos(-n3[0]*n4[0]-n3[1]*n4[1]-n3[2]*n4[2]);
 
-				if(!(vlr->flag & R_NOPUNOFLIP)) {
-					if( check_vnormal(vlr->n, v4->n) ) fac4= -fac4;
-				}
-
 				v4->n[0] +=fac4*vlr->n[0];
 				v4->n[1] +=fac4*vlr->n[1];
 				v4->n[2] +=fac4*vlr->n[2];
 			}
 
-			if(!(vlr->flag & R_NOPUNOFLIP)) {
-				if( check_vnormal(vlr->n, v1->n) ) fac1= -fac1;
-				if( check_vnormal(vlr->n, v2->n) ) fac2= -fac2;
-				if( check_vnormal(vlr->n, v3->n) ) fac3= -fac3;
-			}
-
 			v1->n[0] +=fac1*vlr->n[0];
 			v1->n[1] +=fac1*vlr->n[1];
 			v1->n[2] +=fac1*vlr->n[2];
@@ -1021,7 +997,7 @@
 	else width= 1.0f;
 	
 	if(ma->mode & MA_TANGENT_STR)
-		flag= R_SMOOTH|R_NOPUNOFLIP|R_TANGENT;
+		flag= R_SMOOTH|R_TANGENT;
 	else
 		flag= R_SMOOTH;
 	
@@ -2431,7 +2407,7 @@
 			normal_tri_v3( vlr->n,vlr->v3->co, vlr->v2->co, vlr->v1->co);
 
 		vlr->mat= ma;
-		vlr->flag= ME_SMOOTH+R_NOPUNOFLIP;
+		vlr->flag= ME_SMOOTH;
 		vlr->ec= 0;
 
 		/* mball -too bad- always has triangles, because quads can be non-planar */
@@ -2460,10 +2436,8 @@
 /* returns amount of vertices added for orco */
 static int dl_surf_to_renderdata(ObjectRen *obr, DispList *dl, Material **matar, float *orco, float mat[4][4])
 {
-	Object *ob= obr->ob;
 	VertRen *v1, *v2, *v3, *v4, *ver;
 	VlakRen *vlr, *vlr1, *vlr2, *vlr3;
-	Curve *cu= ob->data;
 	float *data, n1[3];
 	int u, v, orcoret= 0;
 	int p1, p2, p3, p4, a;
@@ -2543,9 +2517,6 @@
 			vlr->mat= matar[ dl->col];
 			vlr->ec= ME_V1V2+ME_V2V3;
 			vlr->flag= dl->rt;
-			if( (cu->flag & CU_NOPUNOFLIP) ) {
-				vlr->flag |= R_NOPUNOFLIP;
-			}
 			
 			add_v3_v3(v1->n, n1);
 			add_v3_v3(v2->n, n1);
@@ -2694,9 +2665,6 @@
 
 					vlr->mat= ma;
 					vlr->flag= flag;
-					if(cu &&(cu->flag & ME_NOPUNOFLIP)) {
-						vlr->flag |= R_NOPUNOFLIP;
-					}
 					vlr->ec= 0; /* mesh edges rendered separately */
 
 					if(len==0) obr->totvlak--;
@@ -2904,9 +2872,6 @@
 
 						vlr->mat= matar[ dl->col ];
 						vlr->flag= 0;
-						if( (cu->flag & CU_NOPUNOFLIP) ) {
-							vlr->flag |= R_NOPUNOFLIP;
-						}
 						vlr->ec= 0;
 					}
 				}
@@ -3391,9 +3356,6 @@
 
 							vlr->mat= ma;
 							vlr->flag= flag;
-							if((me->flag & ME_NOPUNOFLIP) ) {
-								vlr->flag |= R_NOPUNOFLIP;
-							}
 							vlr->ec= 0; /* mesh edges rendered separately */
 
 							if(len==0) obr->totvlak--;
@@ -5612,7 +5574,6 @@
 	
 	RE_init_threadcount(re);
 	
-	re->flag |= R_GLOB_NOPUNOFLIP;
 	re->flag |= R_BAKING;
 	re->excludeob= actob;
 	if(actob)

Modified: trunk/blender/source/blender/render/intern/source/rayshade.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rayshade.c	2010-07-30 11:40:23 UTC (rev 30898)
+++ trunk/blender/source/blender/render/intern/source/rayshade.c	2010-07-30 11:50:00 UTC (rev 30899)
@@ -531,10 +531,6 @@
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list