[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53378] trunk/blender/intern/cycles/kernel /shaders/stdosl.h: Fix OSL distance() of point to line segment function not being available,

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Dec 28 19:21:10 CET 2012


Revision: 53378
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53378
Author:   blendix
Date:     2012-12-28 18:21:07 +0000 (Fri, 28 Dec 2012)
Log Message:
-----------
Fix OSL distance() of point to line segment function not being available,
implemented now in stdosl.h.

Modified Paths:
--------------
    trunk/blender/intern/cycles/kernel/shaders/stdosl.h

Modified: trunk/blender/intern/cycles/kernel/shaders/stdosl.h
===================================================================
--- trunk/blender/intern/cycles/kernel/shaders/stdosl.h	2012-12-28 16:25:41 UTC (rev 53377)
+++ trunk/blender/intern/cycles/kernel/shaders/stdosl.h	2012-12-28 18:21:07 UTC (rev 53378)
@@ -161,6 +161,15 @@
 float dot (vector a, vector b) BUILTIN;
 float length (vector v) BUILTIN;
 float distance (point a, point b) BUILTIN;
+float distance (point a, point b, point q)
+{
+    vector d = b - a;
+    float dd = dot(d, d);
+    if(dd == 0.0)
+        return distance(q, a);
+    float t = dot(q - a, d)/dd;
+    return distance(q, a + clamp(t, 0.0, 1.0)*d);
+}
 normal normalize (normal v) BUILTIN;
 vector normalize (vector v) BUILTIN;
 vector faceforward (vector N, vector I, vector Nref) BUILTIN;
@@ -304,7 +313,7 @@
         r = color (dot (vector(0.299,  0.587,  0.114), (vector)x),
                    dot (vector(0.596, -0.275, -0.321), (vector)x),
                    dot (vector(0.212, -0.523,  0.311), (vector)x));
-    else if (to == "xyz")
+    else if (to == "XYZ")
         r = color (dot (vector(0.412453, 0.357580, 0.180423), (vector)x),
                    dot (vector(0.212671, 0.715160, 0.072169), (vector)x),
                    dot (vector(0.019334, 0.119193, 0.950227), (vector)x));
@@ -366,7 +375,7 @@
         r = color (dot (vector(1,  0.9557,  0.6199), (vector)x),
                    dot (vector(1, -0.2716, -0.6469), (vector)x),
                    dot (vector(1, -1.1082,  1.7051), (vector)x));
-    else if (from == "xyz")
+    else if (from == "XYZ")
         r = color (dot (vector( 3.240479, -1.537150, -0.498535), (vector)x),
                    dot (vector(-0.969256,  1.875991,  0.041556), (vector)x),
                    dot (vector( 0.055648, -0.204043,  1.057311), (vector)x));
@@ -409,6 +418,8 @@
 int endswith (string s, string suffix) BUILTIN;
 string substr (string s, int start, int len) BUILTIN;
 string substr (string s, int start) { return substr (s, start, strlen(s)); }
+float strtof (string str) BUILTIN;
+int strtoi (string str) BUILTIN;
 
 // Define concat in terms of shorter concat
 string concat (string a, string b, string c) {




More information about the Bf-blender-cvs mailing list