Optimize model data access during models importing

This commit is contained in:
Wojciech Figat
2021-12-13 17:31:23 +01:00
parent b88ac45b53
commit 06305a8af6

View File

@@ -495,21 +495,27 @@ void MeshData::TransformBuffer(const Matrix& matrix)
Matrix::Transpose(inverseTransposeMatrix, inverseTransposeMatrix); Matrix::Transpose(inverseTransposeMatrix, inverseTransposeMatrix);
// Transform positions // Transform positions
const auto pp = Positions.Get();
for (int32 i = 0; i < Positions.Count(); i++) for (int32 i = 0; i < Positions.Count(); i++)
{ {
Vector3::Transform(Positions[i], matrix, Positions[i]); auto& p = pp[i];
Vector3::Transform(p, matrix, p);
} }
// Transform normals and tangents // Transform normals and tangents
const auto nn = Normals.Get();
for (int32 i = 0; i < Normals.Count(); i++) for (int32 i = 0; i < Normals.Count(); i++)
{ {
Vector3::TransformNormal(Normals[i], inverseTransposeMatrix, Normals[i]); auto& n = nn[i];
Normals[i].Normalize(); Vector3::TransformNormal(n, inverseTransposeMatrix, n);
n.Normalize();
} }
const auto tt = Tangents.Get();
for (int32 i = 0; i < Tangents.Count(); i++) for (int32 i = 0; i < Tangents.Count(); i++)
{ {
Vector3::TransformNormal(Tangents[i], inverseTransposeMatrix, Tangents[i]); auto& t = tt[i];
Tangents[i].Normalize(); Vector3::TransformNormal(t, inverseTransposeMatrix, t);
t.Normalize();
} }
// Transform blend shapes // Transform blend shapes