diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-11-20 21:40:21 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-11-20 21:40:21 +0400 |
commit | fd619cd7f1fca63a9d19df4301a185c86ea6dc2c (patch) | |
tree | 0a9f143efe52eda35f3752991d368c5476422e2f /intern/cycles/kernel/shaders/node_brightness.osl | |
parent | ab1b5af08d25b5c9bdb11110e4e8b607fdea3af5 (diff) |
Fix #33177: OSL render difference with missing textures and HSV nodes.
Diffstat (limited to 'intern/cycles/kernel/shaders/node_brightness.osl')
-rw-r--r-- | intern/cycles/kernel/shaders/node_brightness.osl | 29 |
1 files changed, 6 insertions, 23 deletions
diff --git a/intern/cycles/kernel/shaders/node_brightness.osl b/intern/cycles/kernel/shaders/node_brightness.osl index 8e9f5c9c796..b263d815566 100644 --- a/intern/cycles/kernel/shaders/node_brightness.osl +++ b/intern/cycles/kernel/shaders/node_brightness.osl @@ -20,32 +20,15 @@ shader node_brightness( color ColorIn = color(0.8, 0.8, 0.8), - float Brightness = 0.0, + float Bright = 0.0, float Contrast = 0.0, output color ColorOut = color(0.8, 0.8, 0.8)) { - float delta = Contrast * (1.0 / 200.0); - float a = 1.0 - delta * 2.0; - float b; + float a = 1.0 + Contrast; + float b = Bright - Contrast*0.5; - /* input value is a percentage */ - float bright_factor = Brightness / 100.0; - - /* - * The algorithm is by Werner D. Streidt - * (http://visca.com/ffactory/archives/5-99/msg00021.html) - * Extracted of OpenCV demhist.c - */ - - if (Contrast > 0.0) { - a = (a < 0.0 ? 1.0 / a : 0.0); - b = a * (bright_factor - delta); - } - else { - delta *= -1.0; - b = a * (bright_factor + delta); - } - - ColorOut = a * ColorIn + b; + ColorOut[0] = max(a*ColorIn[0] + b, 0.0); + ColorOut[1] = max(a*ColorIn[1] + b, 0.0); + ColorOut[2] = max(a*ColorIn[2] + b, 0.0); } |