diff --git a/src/DivaGL/mdl/disp_manager.cpp b/src/DivaGL/mdl/disp_manager.cpp index dcf182a..2a1f7cb 100644 --- a/src/DivaGL/mdl/disp_manager.cpp +++ b/src/DivaGL/mdl/disp_manager.cpp @@ -2008,7 +2008,7 @@ namespace mdl { mats = alloc_mat4_array(num_bone_index); if (bone_mat) for (int32_t k = 0; k < num_bone_index; k++, bone_index++) - mats[k] = bone_mat[*bone_index]; + mat4_transpose(&bone_mat[*bone_index], &mats[k]); else for (int32_t k = 0; k < num_bone_index; k++) mats[k] = mat4_identity; diff --git a/src/DivaGL/object.cpp b/src/DivaGL/object.cpp index e21aa5c..c7a36c4 100644 --- a/src/DivaGL/object.cpp +++ b/src/DivaGL/object.cpp @@ -657,31 +657,29 @@ void obj_skin_set_matrix_buffer(obj_skin* s, mat4* matrices, if (!s->num_bone) return; + uint32_t* bone_id = s->bone_id_array; + mat4* bone_matrix = s->bone_matrix_array; if (mat) - for (uint32_t i = 0; i < s->num_bone; i++) { + for (uint32_t i = 0; i < s->num_bone; i++, bone_id++, bone_matrix++, matrix_buffer++) { mat4 temp; - int32_t bone_id = s->bone_id_array[i]; - if (bone_id & 0x8000) - mat4_mul(&ex_data_matrices[bone_id & 0x7FFF], mat, &temp); + if (*bone_id & 0x8000) + mat4_mul(&ex_data_matrices[*bone_id & 0x7FFF], mat, &temp); else - mat4_mul(&matrices[bone_id], mat, &temp); + mat4_mul(&matrices[*bone_id], mat, &temp); mat4_mul(global_mat, &temp, &temp); - mat4_mul(&temp, &s->bone_matrix_array[i], &matrix_buffer[i]); - mat4_transpose(&matrix_buffer[i], &matrix_buffer[i]); + mat4_mul(&temp, bone_matrix, matrix_buffer); } else - for (uint32_t i = 0; i < s->num_bone; i++) { + for (uint32_t i = 0; i < s->num_bone; i++, bone_id++, bone_matrix++, matrix_buffer++) { mat4 temp; - int32_t bone_id = s->bone_id_array[i]; - if (bone_id & 0x8000) - temp = ex_data_matrices[bone_id & 0x7FFF]; + if (*bone_id & 0x8000) + temp = ex_data_matrices[*bone_id & 0x7FFF]; else - temp = matrices[bone_id]; + temp = matrices[*bone_id]; mat4_mul(global_mat, &temp, &temp); - mat4_mul(&temp, &s->bone_matrix_array[i], &matrix_buffer[i]); - mat4_transpose(&matrix_buffer[i], &matrix_buffer[i]); + mat4_mul(&temp, bone_matrix, matrix_buffer); } } diff --git a/src/DivaGL/render_context.hpp b/src/DivaGL/render_context.hpp index b49826b..efe8748 100644 --- a/src/DivaGL/render_context.hpp +++ b/src/DivaGL/render_context.hpp @@ -19,9 +19,6 @@ #include "render_manager.hpp" #include "render_texture.hpp" -#define TEXTURE_PATTERN_COUNT 24 -#define TEXTURE_TRANSFORM_COUNT 24 - struct draw_state_stats { int32_t object_draw_count; int32_t object_translucent_draw_count;