aboutsummaryrefslogtreecommitdiffstats
path: root/src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp')
-rw-r--r--src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp b/src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp
index 9230d8e5..0ad000a8 100644
--- a/src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp
+++ b/src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp
@@ -32,6 +32,7 @@
#include <QtQuick3DRuntimeRender/private/qssgrenderprefiltertexture_p.h>
#include <QtQuick3DRuntimeRender/private/qssgruntimerenderlogging_p.h>
+#include <QtQuick3DAssetImport/private/qssgmeshbvhbuilder_p.h>
#include <QtQuick/QSGTexture>
@@ -495,10 +496,15 @@ QSSGRenderMesh *QSSGBufferManager::createRenderMesh(
::memcpy(newJoint.localToGlobalBoneSpace, importJoint.m_localToGlobalBoneSpace, 16 * sizeof(float));
}
+ // Build BVH for Mesh
+ QSSGMeshBVHBuilder meshBVHBuilder(result.m_mesh);
+ newMesh->bvh = meshBVHBuilder.buildTree();
+
for (quint32 subsetIdx = 0, subsetEnd = result.m_mesh->m_subsets.size(); subsetIdx < subsetEnd; ++subsetIdx) {
QSSGRenderSubset subset;
const QSSGMeshUtilities::MeshSubset &source(result.m_mesh->m_subsets.index(baseAddress, subsetIdx));
subset.bounds = source.m_bounds;
+ subset.bvhRoot = newMesh->bvh->roots.at(subsetIdx);
subset.count = source.m_count;
subset.offset = source.m_offset;
subset.joints = newMesh->joints;