[Bf-blender-cvs] [bd803939957] master: Fix T60684 Fourth and subsequent vertex color / UV layers displayed black

Clément Foucault noreply at git.blender.org
Tue Mar 19 16:26:10 CET 2019


Commit: bd803939957555e9c22b096365238704f55f6b3e
Author: Clément Foucault
Date:   Tue Mar 19 16:25:52 2019 +0100
Branches: master
https://developer.blender.org/rBbd803939957555e9c22b096365238704f55f6b3e

Fix T60684 Fourth and subsequent vertex color / UV layers displayed black

===================================================================

M	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 */



More information about the Bf-blender-cvs mailing list