Fix T59529: Auto smooth not working

This commit is contained in:
Clément Foucault 2018-12-18 14:27:04 +01:00
parent 6ccf961915
commit 8839152abf
Notes: blender-bot 2024-01-16 18:05:25 +01:00
Referenced by issue #59588, Disable render keyframes not working
Referenced by issue #59580, Can't select mesh components in see-through mode.
Referenced by issue #59571, autosmooth  problem
Referenced by issue #59557, crashed after change delete and choise another material
Referenced by issue #59529, Auto Smooth Angle Ignored in Object Mode
Referenced by issue #58503, Low Performance with the Subdivision Modifier
1 changed files with 4 additions and 4 deletions

View File

@ -3427,13 +3427,13 @@ static void mesh_create_loop_pos_and_nor(MeshRenderData *rdata, GPUVertBuf *vbo,
for (int a = 0; a < poly_len; a++, mpoly++) {
const MLoop *mloop = rdata->mloop + mpoly->loopstart;
const float *lnors = (rdata->loop_normals) ? rdata->loop_normals[mpoly->loopstart] : NULL;
const float (*lnors)[3] = (rdata->loop_normals) ? &rdata->loop_normals[mpoly->loopstart] : NULL;
const GPUPackedNormal *fnor = (mpoly->flag & ME_SMOOTH) ? NULL : &rdata->poly_normals_pack[a];
for (int b = 0; b < mpoly->totloop; b++, mloop++) {
copy_v3_v3(GPU_vertbuf_raw_step(&pos_step), mvert[mloop->v].co);
GPUPackedNormal *pnor = (GPUPackedNormal *)GPU_vertbuf_raw_step(&nor_step);
if (lnors) {
*pnor = GPU_normal_convert_i10_v3(lnors);
*pnor = GPU_normal_convert_i10_v3(lnors[b]);
}
else if (fnor) {
*pnor = *fnor;
@ -3461,7 +3461,7 @@ static void mesh_create_loop_pos_and_nor(MeshRenderData *rdata, GPUVertBuf *vbo,
for (int a = 0; a < poly_len; a++, mpoly++) {
const MLoop *mloop = rdata->mloop + mpoly->loopstart;
const float *lnors = (rdata->loop_normals) ? rdata->loop_normals[mpoly->loopstart] : NULL;
const float (*lnors)[3] = (rdata->loop_normals) ? &rdata->loop_normals[mpoly->loopstart] : NULL;
const GPUPackedNormal *fnor = (mpoly->flag & ME_SMOOTH) ? NULL : &rdata->poly_normals_pack[a];
if (p_origindex[a] == ORIGINDEX_NONE) {
continue;
@ -3470,7 +3470,7 @@ static void mesh_create_loop_pos_and_nor(MeshRenderData *rdata, GPUVertBuf *vbo,
copy_v3_v3(GPU_vertbuf_raw_step(&pos_step), mvert[mloop->v].co);
GPUPackedNormal *pnor = (GPUPackedNormal *)GPU_vertbuf_raw_step(&nor_step);
if (lnors) {
*pnor = GPU_normal_convert_i10_v3(lnors);
*pnor = GPU_normal_convert_i10_v3(lnors[b]);
}
else if (fnor) {
*pnor = *fnor;