Revision: 24527
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24527
Author:   campbellbarton
Date:     2009-11-12 16:05:51 +0100 (Thu, 12 Nov 2009)

Log Message:
-----------
sintel's normals were rendering black around her eye.
Subsurf FLT_EPSILON from float.h was too high, using a smaller value fixes

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c

Modified: trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c 2009-11-12 
14:49:54 UTC (rev 24526)
+++ trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c 2009-11-12 
15:05:51 UTC (rev 24527)
@@ -3,12 +3,15 @@
 #include <stdlib.h>
 #include <string.h>
 #include <math.h>
-#include <float.h>
 
 #include "CCGSubSurf.h"
 
 #include "BLO_sys_types.h" // for intptr_t support
 
+/* used for normalize_v3 in BLI_math_vector
+ * float.h's FLT_EPSILON causes trouble with subsurf normals - campbell */
+#define EPSILON (1.0e-35f)
+
 /***/
 
 typedef unsigned char  byte;
@@ -593,7 +596,7 @@
 
        length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
 
-       if (length>FLT_EPSILON) {
+       if (length>EPSILON) {
                float invLength = 1.f/length;
 
                no[0] *= invLength;
@@ -1934,7 +1937,7 @@
 
                        length = sqrt(no[0]*no[0] + no[1]*no[1] + no[2]*no[2]);
 
-                       if (length>FLT_EPSILON) {
+                       if (length>EPSILON) {
                                float invLength = 1.0f/length;
                                no[0] *= invLength;
                                no[1] *= invLength;
@@ -1993,7 +1996,7 @@
                                                float *no = FACE_getIFNo(f, 
lvl, S, x, y);
                                                float length = sqrt(no[0]*no[0] 
+ no[1]*no[1] + no[2]*no[2]);
 
-                                               if (length>FLT_EPSILON) {
+                                               if (length>EPSILON) {
                                                        float invLength = 
1.0f/length;
                                                        no[0] *= invLength;
                                                        no[1] *= invLength;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to