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

Sergey Sharybin sergey.vfx at gmail.com
Mon Dec 30 21:04:16 CET 2013


What is the reason of updating OSL from 1.4.0 to 1.4.1 and should other
platforms also be updated?


On Tue, Dec 31, 2013 at 1:35 AM, Thomas Dinges <blender at dingto.org> wrote:

> 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)
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>



-- 
With best regards, Sergey Sharybin


More information about the Bf-committers mailing list