From bd803939957555e9c22b096365238704f55f6b3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 19 Mar 2019 16:25:52 +0100 Subject: Fix T60684 Fourth and subsequent vertex color / UV layers displayed black --- source/blender/draw/intern/draw_cache_impl_mesh.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c') diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index 08b306b0ebe..3e1b6b6c020 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -889,11 +889,13 @@ static MeshRenderData *mesh_render_data_create_ex( * to a safe glsl var name, but without name clash. * NOTE 2 : Replicate changes to code_generate_vertex_new() in gpu_codegen.c */ if (rdata->cd.layers.vcol_len != 0) { + int act_vcol = rdata->cd.layers.vcol_active; for (int i_src = 0, i_dst = 0; i_src < cd_layers_src.vcol_len; i_src++, i_dst++) { if ((cd_lused[CD_MLOOPCOL] & (1 << i_src)) == 0) { + /* This is a non-used VCol slot. Skip. */ i_dst--; if (rdata->cd.layers.vcol_active >= i_src) { - rdata->cd.layers.vcol_active--; + act_vcol--; } } else { @@ -916,6 +918,10 @@ static MeshRenderData *mesh_render_data_create_ex( } } } + if (rdata->cd.layers.vcol_active != -1) { + /* Actual active Vcol slot inside vcol layers used for shading. */ + rdata->cd.layers.vcol_active = act_vcol; + } } /* Start Fresh */ -- cgit v1.2.3