From 28d5f2ab6054c26865c655bb1f82534b83c773ce Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Sun, 8 Dec 2013 12:20:15 +0100 Subject: [PATCH] Cycles: Update stdosl.h to OSL 1.4.0. (includes new aastep functions). --- intern/cycles/kernel/shaders/stdosl.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/intern/cycles/kernel/shaders/stdosl.h b/intern/cycles/kernel/shaders/stdosl.h index 47c5dc27f2b..d1d1222af44 100644 --- a/intern/cycles/kernel/shaders/stdosl.h +++ b/intern/cycles/kernel/shaders/stdosl.h @@ -412,13 +412,27 @@ matrix transpose (matrix m) BUILTIN; // Pattern generation -float step (float edge, float x) BUILTIN; color step (color edge, color x) BUILTIN; point step (point edge, point x) BUILTIN; vector step (vector edge, vector x) BUILTIN; normal step (normal edge, normal x) BUILTIN; +float step (float edge, float x) BUILTIN; float smoothstep (float edge0, float edge1, float x) BUILTIN; +float aastep (float edge, float s, float dedge, float ds) { + // Box filtered AA step + float width = fabs(dedge) + fabs(ds); + float halfwidth = 0.5*width; + float e1 = edge-halfwidth; + return (s <= e1) ? 0.0 : ((s >= (edge+halfwidth)) ? 1.0 : (s-e1)/width); +} +float aastep (float edge, float s, float ds) { + return aastep (edge, s, filterwidth(edge), ds); +} +float aastep (float edge, float s) { + return aastep (edge, s, filterwidth(edge), filterwidth(s)); +} + // Derivatives and area operators