[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27119] branches/render25/intern/iksolver/ intern/TNT/svd.h: Rende Branch: irradiance caching, fix part of the black pixels with

Brecht Van Lommel brecht at blender.org
Wed Feb 24 13:42:15 CET 2010


Revision: 27119
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27119
Author:   blendix
Date:     2010-02-24 13:42:15 +0100 (Wed, 24 Feb 2010)

Log Message:
-----------
Rende Branch: irradiance caching, fix part of the black pixels with
a division by zero check in the TNT SVD code.

Modified Paths:
--------------
    branches/render25/intern/iksolver/intern/TNT/svd.h

Modified: branches/render25/intern/iksolver/intern/TNT/svd.h
===================================================================
--- branches/render25/intern/iksolver/intern/TNT/svd.h	2010-02-24 11:03:22 UTC (rev 27118)
+++ branches/render25/intern/iksolver/intern/TNT/svd.h	2010-02-24 12:42:15 UTC (rev 27119)
@@ -349,8 +349,9 @@
 
 				for (j = k; j < p-1; j++) {
 					typename MaTRiX::value_type t = hypot(f,g);
-					typename MaTRiX::value_type cs = f/t;
-					typename MaTRiX::value_type sn = g/t;
+					/* division by zero checks added to avoid NaN (brecht) */
+					typename MaTRiX::value_type cs = (t == 0.0f)? 0.0f: f/t;
+					typename MaTRiX::value_type sn = (t == 0.0f)? 0.0f: g/t;
 					if (j != k) {
 						e[j-1] = t;
 					}
@@ -366,8 +367,9 @@
 					}
 
 					t = hypot(f,g);
-					cs = f/t;
-					sn = g/t;
+					/* division by zero checks added to avoid NaN (brecht) */
+					cs = (t == 0.0f)? 0.0f: f/t;
+					sn = (t == 0.0f)? 0.0f: g/t;
 					s[j] = t;
 					f = cs*e[j] + sn*s[j+1];
 					s[j+1] = -sn*e[j] + cs*s[j+1];





More information about the Bf-blender-cvs mailing list