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-05-14 13:33:25 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-14 13:39:18 +0300
commit6bb7eb17065100a8ff6bb9eee2f3f7448e89e674 (patch)
tree837de4d4cde963bf06203fed42a983c8a2a2f126 /source/blender/draw/intern
parent6c76975df588817694ea0f0d1a154aa38ba1393c (diff)
Eevee: Fix Auto Tangent not working if active UV layer is greater than 3
Diffstat (limited to 'source/blender/draw/intern')
-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 88ac20b7532..bb171565f59 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1142,11 +1142,12 @@ static MeshRenderData *mesh_render_data_create_ex(Mesh *me,
rdata->cd.layers.tangent_len);
int i_dst = 0;
+ int act_tan = rdata->cd.layers.tangent_active;
for (int i_src = 0; i_src < cd_layers_src.uv_len; i_src++, i_dst++) {
if ((cd_used->tan & (1 << i_src)) == 0) {
i_dst--;
if (rdata->cd.layers.tangent_active >= i_src) {
- rdata->cd.layers.tangent_active--;
+ act_tan--;
}
}
else {
@@ -1170,6 +1171,11 @@ static MeshRenderData *mesh_render_data_create_ex(Mesh *me,
}
}
}
+ if (rdata->cd.layers.tangent_active != -1) {
+ /* Actual active UV slot inside uv layers used for shading. */
+ rdata->cd.layers.tangent_active = act_tan;
+ }
+
if (cd_used->tan_orco != 0) {
const char *name = CustomData_get_layer_name(&rdata->cd.output.ldata, CD_TANGENT, i_dst);
uint hash = BLI_ghashutil_strhash_p(name);