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:
authorClément Foucault <foucault.clem@gmail.com>2019-03-19 18:25:52 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-03-19 18:25:59 +0300
commitbd803939957555e9c22b096365238704f55f6b3e (patch)
treebe5b0f559726d978d278db8b31c12262f04ad007 /source/blender/draw/intern/draw_cache_impl_mesh.c
parent899fc0331c40bb8ca6d3673a418fe7ee90c3613a (diff)
Fix T60684 Fourth and subsequent vertex color / UV layers displayed black
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c8
1 files changed, 7 insertions, 1 deletions
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 */