diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-12-28 22:21:07 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-12-28 22:21:07 +0400 |
commit | cfd0b3c5f2efc80ae0276721b5cae0686cf94093 (patch) | |
tree | 0b6bec5b7941f8d567e301ff3b769c25ed73f58e /intern/cycles/kernel/shaders/stdosl.h | |
parent | 81b371a451407f77a7a79e4ca1aec4744cb845aa (diff) |
Fix OSL distance() of point to line segment function not being available,
implemented now in stdosl.h.
Diffstat (limited to 'intern/cycles/kernel/shaders/stdosl.h')
-rw-r--r-- | intern/cycles/kernel/shaders/stdosl.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/intern/cycles/kernel/shaders/stdosl.h b/intern/cycles/kernel/shaders/stdosl.h index 69ca6b32c36..f340eaff95f 100644 --- a/intern/cycles/kernel/shaders/stdosl.h +++ b/intern/cycles/kernel/shaders/stdosl.h @@ -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) { |