diff options
Diffstat (limited to 'src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp')
| -rw-r--r-- | src/runtimerender/resourcemanager/qssgrenderbuffermanager.cpp | 6 |
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; |
