[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [61262] trunk/lib/win64/osl: MSVC 2008 x64 :

Thomas Dinges blender at dingto.org
Mon Dec 30 20:35:51 CET 2013


Revision: 61262
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=61262
Author:   dingto
Date:     2013-12-30 19:35:50 +0000 (Mon, 30 Dec 2013)
Log Message:
-----------
MSVC 2008 x64:
* Update OSL to 1.4.1.

Release 1.4.1 - 19 Dec 2013 (compared to 1.4.0)
-----------------------------------------------
* Guard matrix*point transformations against possible division by zero.
* Fix subtle bug with splines taking arrays, where the number of knots
  passed was less than the full length of the array, and the knots had
  derivatives -- the derivatives would be looked up from the wrong spot
  in the array (and could read uninitialized portions of the array).
* testshade/testrender - Fix timer call that wasn't correctly reporting
  execution time versus total time.
* Fix incorrect function declarations for the no-bitcode case (only
  affected Windows or if a site purposely built without precompiled
  bitcode for llvm_ops.cpp).
* Build: more robust detection of clang, for older cmake versions.
* Build: handle 3-part version numbers for LLVM installations.
* Build: Fix USE_EXTERNAL_PUGIXML versus USING_OIIO_PUGI issue.

Modified Paths:
--------------
    trunk/lib/win64/osl/CHANGES
    trunk/lib/win64/osl/bin/oslc.exe
    trunk/lib/win64/osl/include/OSL/dual_vec.h
    trunk/lib/win64/osl/include/OSL/oslversion.h
    trunk/lib/win64/osl/lib/oslcomp.lib
    trunk/lib/win64/osl/lib/oslexec.lib
    trunk/lib/win64/osl/lib/oslquery.lib

Modified: trunk/lib/win64/osl/CHANGES
===================================================================
--- trunk/lib/win64/osl/CHANGES	2013-12-28 22:14:56 UTC (rev 61261)
+++ trunk/lib/win64/osl/CHANGES	2013-12-30 19:35:50 UTC (rev 61262)
@@ -1,3 +1,21 @@
+Release 1.4.1 - 19 Dec 2013 (compared to 1.4.0)
+-----------------------------------------------
+* Guard matrix*point transformations against possible division by zero.
+* Fix subtle bug with splines taking arrays, where the number of knots
+  passed was less than the full length of the array, and the knots had
+  derivatives -- the derivatives would be looked up from the wrong spot
+  in the array (and could read uninitialized portions of the array).
+* testshade/testrender - Fix timer call that wasn't correctly reporting
+  execution time versus total time.
+* Fix incorrect function declarations for the no-bitcode case (only
+  affected Windows or if a site purposely built without precompiled
+  bitcode for llvm_ops.cpp).
+* Build: more robust detection of clang, for older cmake versions.
+* Build: handle 3-part version numbers for LLVM installations.
+* Build: Fix USE_EXTERNAL_PUGIXML versus USING_OIIO_PUGI issue.
+
+
+
 Release 1.4.0 - 25 November 2013 (compared to 1.3)
 --------------------------------------------------
 

Modified: trunk/lib/win64/osl/bin/oslc.exe
===================================================================
(Binary files differ)

Modified: trunk/lib/win64/osl/include/OSL/dual_vec.h
===================================================================
--- trunk/lib/win64/osl/include/OSL/dual_vec.h	2013-12-28 22:14:56 UTC (rev 61261)
+++ trunk/lib/win64/osl/include/OSL/dual_vec.h	2013-12-30 19:35:50 UTC (rev 61262)
@@ -138,21 +138,49 @@
     dst = make_Vec3 (a, b, c);
 }
 
+inline void robust_multVecMatrix(const Matrix44& x, const Imath::Vec3<float>& src, Imath::Vec3<float>& dst)
+{
+   float a = src[0] * x[0][0] + src[1] * x[1][0] + src[2] * x[2][0] + x[3][0];
+   float b = src[0] * x[0][1] + src[1] * x[1][1] + src[2] * x[2][1] + x[3][1];
+   float c = src[0] * x[0][2] + src[1] * x[1][2] + src[2] * x[2][2] + x[3][2];
+   float w = src[0] * x[0][3] + src[1] * x[1][3] + src[2] * x[2][3] + x[3][3];
 
+   if (w != 0) {
+      dst.x = a / w;
+      dst.y = b / w;
+      dst.z = c / w;
+   } else {
+      dst.x = 0;
+      dst.y = 0;
+      dst.z = 0;
+   }
+}
 
 /// Multiply a matrix times a vector with derivatives to obtain
 /// a transformed vector with derivatives.
 inline void
-multVecMatrix (const Matrix44 &M, Dual2<Vec3> &in, Dual2<Vec3> &out)
+robust_multVecMatrix (const Matrix44 &M, const Dual2<Vec3> &in, Dual2<Vec3> &out)
 {
     // Rearrange into a Vec3<Dual2<float> >
     Imath::Vec3<Dual2<float> > din, dout;
     for (int i = 0;  i < 3;  ++i)
         din[i].set (in.val()[i], in.dx()[i], in.dy()[i]);
 
-    // N.B. the following function has a divide by 'w'
-    M.multVecMatrix (din, dout);
+    Dual2<float> a = din[0] * M[0][0] + din[1] * M[1][0] + din[2] * M[2][0] + M[3][0];
+    Dual2<float> b = din[0] * M[0][1] + din[1] * M[1][1] + din[2] * M[2][1] + M[3][1];
+    Dual2<float> c = din[0] * M[0][2] + din[1] * M[1][2] + din[2] * M[2][2] + M[3][2];
+    Dual2<float> w = din[0] * M[0][3] + din[1] * M[1][3] + din[2] * M[2][3] + M[3][3];
 
+    if (w.val() != 0) {
+       dout.x = a / w;
+       dout.y = b / w;
+       dout.z = c / w;
+    } else {
+       dout.x = 0;
+       dout.y = 0;
+       dout.z = 0;
+    }
+
     // Rearrange back into Dual2<Vec3>
     out.set (Vec3 (dout[0].val(), dout[1].val(), dout[2].val()),
              Vec3 (dout[0].dx(),  dout[1].dx(),  dout[2].dx()),

Modified: trunk/lib/win64/osl/include/OSL/oslversion.h
===================================================================
--- trunk/lib/win64/osl/include/OSL/oslversion.h	2013-12-28 22:14:56 UTC (rev 61261)
+++ trunk/lib/win64/osl/include/OSL/oslversion.h	2013-12-30 19:35:50 UTC (rev 61262)
@@ -43,7 +43,7 @@
 // Version of this library:
 #define OSL_LIBRARY_VERSION_MAJOR 1
 #define OSL_LIBRARY_VERSION_MINOR 4
-#define OSL_LIBRARY_VERSION_PATCH 0
+#define OSL_LIBRARY_VERSION_PATCH 1
 #define OSL_LIBRARY_VERSION_RELEASE_TYPE 
 
 #define OSL_LIBRARY_VERSION_CODE (10000 * OSL_LIBRARY_VERSION_MAJOR + \

Modified: trunk/lib/win64/osl/lib/oslcomp.lib
===================================================================
(Binary files differ)

Modified: trunk/lib/win64/osl/lib/oslexec.lib
===================================================================
(Binary files differ)

Modified: trunk/lib/win64/osl/lib/oslquery.lib
===================================================================
(Binary files differ)




More information about the Bf-blender-cvs mailing list