Fix OSL distance() of point to line segment function not being available,
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 28 Dec 2012 18:21:07 +0000 (18:21 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 28 Dec 2012 18:21:07 +0000 (18:21 +0000)
implemented now in stdosl.h.

intern/cycles/kernel/shaders/stdosl.h

index 69ca6b32c3630a0eadea5fb96b04a36538c9710c..f340eaff95f10b4876d0ee58428c76d684093075 100644 (file)
@@ -161,6 +161,15 @@ vector cross (vector a, vector b) BUILTIN;
 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 @@ color transformc (string to, color x)
         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 @@ color transformc (string from, string to, color x)
         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 startswith (string s, string prefix) BUILTIN;
 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) {