From 06305a8af6b68ee92543c66b4a521777e244abe6 Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Mon, 13 Dec 2021 17:31:23 +0100 Subject: [PATCH] Optimize model data access during models importing --- Source/Engine/Graphics/Models/ModelData.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Source/Engine/Graphics/Models/ModelData.cpp b/Source/Engine/Graphics/Models/ModelData.cpp index 0f4709de7..b8b234594 100644 --- a/Source/Engine/Graphics/Models/ModelData.cpp +++ b/Source/Engine/Graphics/Models/ModelData.cpp @@ -495,21 +495,27 @@ void MeshData::TransformBuffer(const Matrix& matrix) Matrix::Transpose(inverseTransposeMatrix, inverseTransposeMatrix); // Transform positions + const auto pp = Positions.Get(); 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 + const auto nn = Normals.Get(); for (int32 i = 0; i < Normals.Count(); i++) { - Vector3::TransformNormal(Normals[i], inverseTransposeMatrix, Normals[i]); - Normals[i].Normalize(); + auto& n = nn[i]; + Vector3::TransformNormal(n, inverseTransposeMatrix, n); + n.Normalize(); } + const auto tt = Tangents.Get(); for (int32 i = 0; i < Tangents.Count(); i++) { - Vector3::TransformNormal(Tangents[i], inverseTransposeMatrix, Tangents[i]); - Tangents[i].Normalize(); + auto& t = tt[i]; + Vector3::TransformNormal(t, inverseTransposeMatrix, t); + t.Normalize(); } // Transform blend shapes