Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmar Emara <mail@OmarEmara.dev>2022-06-16 12:52:18 +0300
committerOmar Emara <mail@OmarEmara.dev>2022-06-16 12:52:18 +0300
commit9fa78b3e8b64c14e9733373f740bd1da28188426 (patch)
treeb6060b43ac4a5e1a69042cc5a006e7f5a148eed0
parent082c87bf9624e888edc40c27a9b9fcaea32a6195 (diff)
Realtime Compositor: Correct multiply by alpha
-rw-r--r--source/blender/nodes/composite/nodes/node_composite_mixrgb.cc13
1 files 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;
}