From 66228d4362a64b31ad5614033412ba0b21ca371f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 1 Mar 2019 17:57:06 +0100 Subject: Fix T62090 : Eevee shader compilation: undefined variable "att1_is_srgb" The geom shader check was not needed and this uncovered an error in the GPU_BARYCENTRIC_TEXCO optimization recently commited. --- source/blender/gpu/intern/gpu_codegen.c | 2 +- source/blender/nodes/shader/nodes/node_shader_geometry.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/source/blender/gpu/intern/gpu_codegen.c b/source/blender/gpu/intern/gpu_codegen.c index a2c25a9ffb4..63d875b07fd 100644 --- a/source/blender/gpu/intern/gpu_codegen.c +++ b/source/blender/gpu/intern/gpu_codegen.c @@ -889,7 +889,7 @@ static char *code_generate_vertex(ListBase *nodes, const char *vert_code, bool u input->attr_id, attr_prefix_get(input->attr_type), hash); /* Auto attribute can be vertex color byte buffer. * We need to know and convert them to linear space in VS. */ - if (!use_geom && input->attr_type == CD_AUTO_FROM_NAME) { + if (input->attr_type == CD_AUTO_FROM_NAME) { BLI_dynstr_appendf(ds, "uniform bool ba%u;\n", hash); BLI_dynstr_appendf(ds, "#define att%d_is_srgb ba%u\n", input->attr_id, hash); } diff --git a/source/blender/nodes/shader/nodes/node_shader_geometry.c b/source/blender/nodes/shader/nodes/node_shader_geometry.c index 4c4ad7c4cc9..ec9b3a5443e 100644 --- a/source/blender/nodes/shader/nodes/node_shader_geometry.c +++ b/source/blender/nodes/shader/nodes/node_shader_geometry.c @@ -37,11 +37,13 @@ static int node_shader_gpu_geometry(GPUMaterial *mat, bNode *node, bNodeExecData { /* HACK: Don't request GPU_BARYCENTRIC_TEXCO if not used because it will * trigger the use of geometry shader (and the performance penalty it implies). */ - eGPUBuiltin bary_builtin = (out[7].type == GPU_NONE) ? GPU_VIEW_NORMAL : GPU_BARYCENTRIC_TEXCO; + float val[2] = {0.0f, 0.0f}; + GPUNodeLink *bary_link = (!out[5].hasoutput) ? GPU_constant(val) : GPU_builtin(GPU_BARYCENTRIC_TEXCO); + return GPU_stack_link(mat, node, "node_geometry", in, out, GPU_builtin(GPU_VIEW_POSITION), GPU_builtin(GPU_VIEW_NORMAL), GPU_attribute(CD_ORCO, ""), GPU_builtin(GPU_OBJECT_MATRIX), - GPU_builtin(GPU_INVERSE_VIEW_MATRIX), GPU_builtin(bary_builtin)); + GPU_builtin(GPU_INVERSE_VIEW_MATRIX), bary_link); } /* node type definition */ -- cgit v1.2.3