Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/bake.c
| Show First 20 Lines • Show All 473 Lines • ▼ Show 20 Lines | if (tangent) { | ||||
| BKE_mesh_calc_loop_tangents(me_eval, true, NULL, 0); | BKE_mesh_calc_loop_tangents(me_eval, true, NULL, 0); | ||||
| tspace = CustomData_get_layer(&me_eval->ldata, CD_TANGENT); | tspace = CustomData_get_layer(&me_eval->ldata, CD_TANGENT); | ||||
| BLI_assert(tspace); | BLI_assert(tspace); | ||||
| loop_normals = CustomData_get_layer(&me_eval->ldata, CD_NORMAL); | loop_normals = CustomData_get_layer(&me_eval->ldata, CD_NORMAL); | ||||
| } | } | ||||
| const float *precomputed_normals = CustomData_get_layer(&me->pdata, CD_NORMAL); | const float(*precomputed_normals)[3] = CustomData_get_layer(&me->pdata, CD_NORMAL); | ||||
| const bool calculate_normal = precomputed_normals ? false : true; | const bool calculate_normal = precomputed_normals ? false : true; | ||||
| for (i = 0; i < tottri; i++) { | for (i = 0; i < tottri; i++) { | ||||
| const MLoopTri *lt = &looptri[i]; | const MLoopTri *lt = &looptri[i]; | ||||
| const MPoly *mp = &me->mpoly[lt->poly]; | const MPoly *mp = &me->mpoly[lt->poly]; | ||||
| triangles[i].mverts[0] = &mvert[me->mloop[lt->tri[0]].v]; | triangles[i].mverts[0] = &mvert[me->mloop[lt->tri[0]].v]; | ||||
| triangles[i].mverts[1] = &mvert[me->mloop[lt->tri[1]].v]; | triangles[i].mverts[1] = &mvert[me->mloop[lt->tri[1]].v]; | ||||
| Show All 15 Lines | for (i = 0; i < tottri; i++) { | ||||
| if (calculate_normal) { | if (calculate_normal) { | ||||
| if (lt->poly != mpoly_prev) { | if (lt->poly != mpoly_prev) { | ||||
| BKE_mesh_calc_poly_normal(mp, &me->mloop[mp->loopstart], me->mvert, no); | BKE_mesh_calc_poly_normal(mp, &me->mloop[mp->loopstart], me->mvert, no); | ||||
| mpoly_prev = lt->poly; | mpoly_prev = lt->poly; | ||||
| } | } | ||||
| copy_v3_v3(triangles[i].normal, no); | copy_v3_v3(triangles[i].normal, no); | ||||
| } | } | ||||
| else { | else { | ||||
| copy_v3_v3(triangles[i].normal, &precomputed_normals[lt->poly]); | copy_v3_v3(triangles[i].normal, precomputed_normals[lt->poly]); | ||||
| } | } | ||||
| } | } | ||||
| MEM_freeN(looptri); | MEM_freeN(looptri); | ||||
| return triangles; | return triangles; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 551 Lines • Show Last 20 Lines | |||||