From 78411dc7d77328e6c8fb7b38f7cacd186e68171e Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Tue, 19 May 2015 15:35:33 +0200 Subject: Fix T44755 set_value node output in node tree not properly converted to color in GLSL Issue here is that intermediate result was clipped as an optimization in such nodes and thus not converted to the correct type properly. Now only clip those values if types match. This keeps both the optimization and the conversion. I looked at converting uniform types always but it's more involved to compare types at conversion time for such links because the type was getting overridden during link duplication. --- source/blender/gpu/intern/gpu_codegen.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/blender/gpu/intern/gpu_codegen.c') diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index 90e4ce69394..8f07df5d3d1 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -930,8 +930,11 @@ static void gpu_node_input_link(GPUNode *node, GPUNodeLink *link, const GPUType if (link->output) { outnode = link->output->node; name = outnode->name; + input = outnode->inputs.first; - if (STREQ(name, "set_value") || STREQ(name, "set_rgb")) { + if ((STREQ(name, "set_value") || STREQ(name, "set_rgb")) && + (input->type == type)) + { input = MEM_dupallocN(outnode->inputs.first); input->type = type; if (input->link) -- cgit v1.2.3