From 9fa78b3e8b64c14e9733373f740bd1da28188426 Mon Sep 17 00:00:00 2001 From: Omar Emara Date: Thu, 16 Jun 2022 11:52:18 +0200 Subject: Realtime Compositor: Correct multiply by alpha --- .../blender/nodes/composite/nodes/node_composite_mixrgb.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/blender/nodes/composite/nodes/node_composite_mixrgb.cc b/source/blender/nodes/composite/nodes/node_composite_mixrgb.cc index f2985db9a67..a8123a50e58 100644 --- a/source/blender/nodes/composite/nodes/node_composite_mixrgb.cc +++ b/source/blender/nodes/composite/nodes/node_composite_mixrgb.cc @@ -47,12 +47,19 @@ class MixRGBShaderNode : public ShaderNode { GPUNodeStack *inputs = get_inputs_array(); GPUNodeStack *outputs = get_outputs_array(); - GPU_stack_link(material, &bnode(), get_shader_function_name(), inputs, outputs); - if (get_use_alpha()) { - GPU_link(material, "multiply_by_alpha", inputs[0].link, inputs[1].link, &inputs[0].link); + if (!inputs[0].hasinput) { + GPUNodeLink *factor; + GPU_link(material, "set_value", GPU_uniform(inputs[0].vec), &factor); + GPU_link(material, "multiply_by_alpha", factor, inputs[2].link, &inputs[0].link); + } + else { + GPU_link(material, "multiply_by_alpha", inputs[0].link, inputs[2].link, &inputs[0].link); + } } + GPU_stack_link(material, &bnode(), get_shader_function_name(), inputs, outputs); + if (!get_should_clamp()) { return; } -- cgit v1.2.3