Fix editmesh GLSL tangent drawing
The generic tangent calculation relied on CDDM arrays which aren't available in edit-mode. Add a tangent calculation callback, which has its own implementation for editmesh data.
This commit is contained in:
@@ -375,7 +375,7 @@ static void mesh_calc_tri_tessface(
|
||||
|
||||
if (tangent) {
|
||||
DM_ensure_normals(dm);
|
||||
DM_add_tangent_layer(dm);
|
||||
DM_calc_loop_tangents(dm);
|
||||
|
||||
precomputed_normals = dm->getPolyDataArray(dm, CD_NORMAL);
|
||||
calculate_normal = precomputed_normals ? false : true;
|
||||
|
||||
@@ -3275,7 +3275,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset)
|
||||
if (need_nmap_tangent!=0 && CustomData_get_layer_index(&dm->faceData, CD_TANGENT) == -1) {
|
||||
bool generate_data = false;
|
||||
if (CustomData_get_layer_index(&dm->loopData, CD_TANGENT) == -1) {
|
||||
DM_add_tangent_layer(dm);
|
||||
dm->calcLoopTangents(dm);
|
||||
generate_data = true;
|
||||
}
|
||||
DM_generate_tangent_tessface_data(dm, generate_data);
|
||||
|
||||
@@ -456,7 +456,7 @@ static void do_multires_bake(MultiresBakeRender *bkr, Image *ima, bool require_t
|
||||
|
||||
if (require_tangent) {
|
||||
if (CustomData_get_layer_index(&dm->loopData, CD_TANGENT) == -1)
|
||||
DM_add_tangent_layer(dm);
|
||||
DM_calc_loop_tangents(dm);
|
||||
|
||||
pvtangent = DM_get_loop_data_layer(dm, CD_TANGENT);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user