diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-02-15 15:46:31 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-02-15 15:46:31 +0400 |
commit | 6786975f78eabe7795d4e052c43af2cc298364c9 (patch) | |
tree | 958a453a94e269596d28a8db99bdfe499f5771bf | |
parent | bd1c6571c9e96cef75ac30b7b8387a56497e0c2e (diff) |
Fix #34254: cycles brightness/contrast node was missing for GLSL material view.
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 11 | ||||
-rw-r--r-- | source/blender/nodes/shader/nodes/node_shader_brightness.c | 7 |
2 files changed, 17 insertions, 1 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 45e7831d20d..8fc18bf8726 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -390,6 +390,17 @@ void set_rgba_zero(out vec4 outval) outval = vec4(0.0); } +void brightness_contrast(vec4 col, float brightness, float contrast, out vec4 outcol) +{ + float a = 1.0 + contrast; + float b = brightness - contrast*0.5; + + outcol.r = max(a*col.r + b, 0.0); + outcol.g = max(a*col.g + b, 0.0); + outcol.b = max(a*col.b + b, 0.0); + outcol.a = col.a; +} + void mix_blend(float fac, vec4 col1, vec4 col2, out vec4 outcol) { fac = clamp(fac, 0.0, 1.0); diff --git a/source/blender/nodes/shader/nodes/node_shader_brightness.c b/source/blender/nodes/shader/nodes/node_shader_brightness.c index 9c23a29cae9..2b86fa60328 100644 --- a/source/blender/nodes/shader/nodes/node_shader_brightness.c +++ b/source/blender/nodes/shader/nodes/node_shader_brightness.c @@ -43,6 +43,11 @@ static bNodeSocketTemplate sh_node_brightcontrast_out[] = { { -1, 0, "" } }; +static int gpu_shader_brightcontrast(GPUMaterial *mat, bNode *node, GPUNodeStack *in, GPUNodeStack *out) +{ + return GPU_stack_link(mat, "brightness_contrast", in, out); +} + void register_node_type_sh_brightcontrast(bNodeTreeType *ttype) { static bNodeType ntype; @@ -54,7 +59,7 @@ void register_node_type_sh_brightcontrast(bNodeTreeType *ttype) node_type_init(&ntype, NULL); node_type_storage(&ntype, "", NULL, NULL); node_type_exec(&ntype, NULL); - node_type_gpu(&ntype, NULL); + node_type_gpu(&ntype, gpu_shader_brightcontrast); nodeRegisterType(ttype, &ntype); } |