diff --git a/src/EntityManager.h b/src/EntityManager.h index 3720a3f..e65603e 100644 --- a/src/EntityManager.h +++ b/src/EntityManager.h @@ -9,6 +9,7 @@ class EntityManager { private: std::vector> entities; std::unordered_map entityMap; + mutable std::vector cachedTransforms; public: // Add entity to the scene @@ -38,13 +39,13 @@ class EntityManager { } // Get all transforms for acceleration structure - std::vector getTransforms() const { - std::vector transforms; - transforms.reserve(entities.size()); + const std::vector& getTransforms() const { + cachedTransforms.clear(); + cachedTransforms.reserve(entities.size()); for (const auto& entity : entities) { - transforms.push_back(entity->transform); + cachedTransforms.push_back(entity->transform); } - return transforms; + return cachedTransforms; } // Get entity by name diff --git a/src/main.cpp b/src/main.cpp index 4d62011..72b5d54 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -834,7 +834,7 @@ class RacingEngine { // Prepare TLAS instance data (CPU-side, before command buffer recording) if (entityManager.countDynamic() > 0) { - auto transforms = entityManager.getTransforms(); + const auto& transforms = entityManager.getTransforms(); acceleration.prepareInstanceData(device, transforms); }