diff options
| author | Bryan Galdrikian <[email protected]> | 2018-01-23 15:09:19 -0800 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2018-01-23 15:09:19 -0800 |
| commit | 5b173c1082bd932de70b5664dce9b1c95e0ae237 (patch) | |
| tree | 1f39a99b81be853e31044828ccfe6d04c36a25da /sdk | |
| parent | Changes for 1.1.2 release candidate (diff) | |
| download | blast-5b173c1082bd932de70b5664dce9b1c95e0ae237.tar.xz blast-5b173c1082bd932de70b5664dce9b1c95e0ae237.zip | |
Linux checked and profile builds
New NvBlastExtAuthoringBuildCollisionMesh API
buildtools/steps/build_all_linux.sh will be committed separately
Diffstat (limited to 'sdk')
7 files changed, 126 insertions, 59 deletions
diff --git a/sdk/compiler/cmake/modules/FindPhysXSDK.cmake b/sdk/compiler/cmake/modules/FindPhysXSDK.cmake index 0194edb..fa3ddb1 100644 --- a/sdk/compiler/cmake/modules/FindPhysXSDK.cmake +++ b/sdk/compiler/cmake/modules/FindPhysXSDK.cmake @@ -209,51 +209,51 @@ find_library(SIMULATIONCONTROLLER_LIB_CHECKED ) find_library(PHYSX3_LIB_PROFILE - NAMES PhysX3PROFILE${PHYSX_ARCH_FILE} + NAMES PhysX3PROFILE PhysX3PROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PHYSX3EXTENSIONS_LIB_PROFILE - NAMES PhysX3ExtensionsPROFILE${PHYSX_ARCH_FILE} + NAMES PhysX3ExtensionsPROFILE PhysX3ExtensionsPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PHYSX3CHARACTERKINEMATIC_LIB_PROFILE - NAMES PhysX3CharacterKinematicPROFILE${PHYSX_ARCH_FILE} + NAMES PhysX3CharacterKinematicPROFILE PhysX3CharacterKinematicPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PHYSX3COMMON_LIB_PROFILE - NAMES PhysX3CommonPROFILE${PHYSX_ARCH_FILE} + NAMES PhysX3CommonPROFILE PhysX3CommonPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PHYSX3COOKING_LIB_PROFILE - NAMES PhysX3CookingPROFILE${PHYSX_ARCH_FILE} + NAMES PhysX3CookingPROFILE PhysX3CookingPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(LOWLEVEL_LIB_PROFILE - NAMES LowLevelPROFILE${PHYSX_ARCH_FILE} + NAMES LowLevelPROFILE LowLevelPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(LOWLEVELAABB_LIB_PROFILE - NAMES LowLevelAABBPROFILE${PHYSX_ARCH_FILE} + NAMES LowLevelAABBPROFILE LowLevelAABBPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(LOWLEVELCLOTH_LIB_PROFILE - NAMES LowLevelClothPROFILE${PHYSX_ARCH_FILE} + NAMES LowLevelClothPROFILE LowLevelClothPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(LOWLEVELDYNAMICS_LIB_PROFILE - NAMES LowLevelDynamicsPROFILE${PHYSX_ARCH_FILE} + NAMES LowLevelDynamicsPROFILE LowLevelDynamicsPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(LOWLEVELPARTICLES_LIB_PROFILE - NAMES LowLevelParticlesPROFILE${PHYSX_ARCH_FILE} + NAMES LowLevelParticlesPROFILE LowLevelParticlesPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(SCENEQUERY_LIB_PROFILE - NAMES SceneQueryPROFILE${PHYSX_ARCH_FILE} + NAMES SceneQueryPROFILE SceneQueryPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(SIMULATIONCONTROLLER_LIB_PROFILE - NAMES SimulationControllerPROFILE${PHYSX_ARCH_FILE} + NAMES SimulationControllerPROFILE SimulationControllerPROFILE${PHYSX_ARCH_FILE} PATHS ${LIB_PATH} ) @@ -469,31 +469,31 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PHYSXSDK SCENEQUERY_LIB_DEBUG SIMULATIONCONTROLLER_LIB_DEBUG -# PHYSX3_LIB_CHECKED -# PHYSX3EXTENSIONS_LIB_CHECKED -# PHYSX3CHARACTERKINEMATIC_LIB_CHECKED -# PHYSX3COMMON_LIB_CHECKED -# PHYSX3COOKING_LIB_CHECKED -# LOWLEVEL_LIB_CHECKED -# LOWLEVELAABB_LIB_CHECKED -# LOWLEVELCLOTH_LIB_CHECKED -# LOWLEVELDYNAMICS_LIB_CHECKED -# LOWLEVELPARTICLES_LIB_CHECKED -# SCENEQUERY_LIB_CHECKED -# SIMULATIONCONTROLLER_LIB_CHECKED -# -# PHYSX3_LIB_PROFILE -# PHYSX3EXTENSIONS_LIB_PROFILE -# PHYSX3CHARACTERKINEMATIC_LIB_PROFILE -# PHYSX3COMMON_LIB_PROFILE -# PHYSX3COOKING_LIB_PROFILE -# LOWLEVEL_LIB_PROFILE -# LOWLEVELAABB_LIB_PROFILE -# LOWLEVELCLOTH_LIB_PROFILE -# LOWLEVELDYNAMICS_LIB_PROFILE -# LOWLEVELPARTICLES_LIB_PROFILE -# SCENEQUERY_LIB_PROFILE -# SIMULATIONCONTROLLER_LIB_PROFILE + PHYSX3_LIB_CHECKED + PHYSX3EXTENSIONS_LIB_CHECKED + PHYSX3CHARACTERKINEMATIC_LIB_CHECKED + PHYSX3COMMON_LIB_CHECKED + PHYSX3COOKING_LIB_CHECKED + LOWLEVEL_LIB_CHECKED + LOWLEVELAABB_LIB_CHECKED + LOWLEVELCLOTH_LIB_CHECKED + LOWLEVELDYNAMICS_LIB_CHECKED + LOWLEVELPARTICLES_LIB_CHECKED + SCENEQUERY_LIB_CHECKED + SIMULATIONCONTROLLER_LIB_CHECKED + + PHYSX3_LIB_PROFILE + PHYSX3EXTENSIONS_LIB_PROFILE + PHYSX3CHARACTERKINEMATIC_LIB_PROFILE + PHYSX3COMMON_LIB_PROFILE + PHYSX3COOKING_LIB_PROFILE + LOWLEVEL_LIB_PROFILE + LOWLEVELAABB_LIB_PROFILE + LOWLEVELCLOTH_LIB_PROFILE + LOWLEVELDYNAMICS_LIB_PROFILE + LOWLEVELPARTICLES_LIB_PROFILE + SCENEQUERY_LIB_PROFILE + SIMULATIONCONTROLLER_LIB_PROFILE ${DLL_VAR_LIST} ) diff --git a/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake b/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake index ff18af3..da540ec 100644 --- a/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake +++ b/sdk/compiler/cmake/modules/FindPxSharedSDK.cmake @@ -99,7 +99,7 @@ find_library(PXTASK_LIB_DEBUG ) find_library(PSFASTXML_LIB_CHECKED - NAMES PsFastXmlCHECKED${PXSHARED_ARCH_FILE} + NAMES PsFastXmlCHECKED PsFastXmlCHECKED${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXFOUNDATION_LIB_CHECKED @@ -111,12 +111,12 @@ find_library(PXPVDSDK_LIB_CHECKED PATHS ${LIB_PATH} ) find_library(PXTASK_LIB_CHECKED - NAMES PxTaskCHECKED${PXSHARED_ARCH_FILE} + NAMES PxTaskCHECKED PxTaskCHECKED${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PSFASTXML_LIB_PROFILE - NAMES PsFastXmlPROFILE${PXSHARED_ARCH_FILE} + NAMES PsFastXmlPROFILE PsFastXmlPROFILE${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) find_library(PXFOUNDATION_LIB_PROFILE @@ -128,7 +128,7 @@ find_library(PXPVDSDK_LIB_PROFILE PATHS ${LIB_PATH} ) find_library(PXTASK_LIB_PROFILE - NAMES PxTaskPROFILE${PXSHARED_ARCH_FILE} + NAMES PxTaskPROFILE PxTaskPROFILE${PXSHARED_ARCH_FILE} PATHS ${LIB_PATH} ) @@ -201,6 +201,15 @@ if (TARGET_BUILD_PLATFORM STREQUAL "linux") PATHS ${BIN_PATH} ) + find_library(PXFOUNDATION_LIB_CHECKED + NAMES PxFoundationCHECKED${PXSHARED_ARCH_FILE} + PATHS ${BIN_PATH} + ) + find_library(PXPVDSDK_LIB_CHECKED + NAMES PxPvdSDKCHECKED${PXSHARED_ARCH_FILE} + PATHS ${BIN_PATH} + ) + find_library(PXFOUNDATION_LIB_DEBUG NAMES PxFoundationDEBUG${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} @@ -209,6 +218,15 @@ if (TARGET_BUILD_PLATFORM STREQUAL "linux") NAMES PxPvdSDKDEBUG${PXSHARED_ARCH_FILE} PATHS ${BIN_PATH} ) + + find_library(PXFOUNDATION_LIB_PROFILE + NAMES PxFoundationPROFILE${PXSHARED_ARCH_FILE} + PATHS ${BIN_PATH} + ) + find_library(PXPVDSDK_LIB_PROFILE + NAMES PxPvdSDKPROFILE${PXSHARED_ARCH_FILE} + PATHS ${BIN_PATH} + ) endif() FIND_PACKAGE_HANDLE_STANDARD_ARGS(PXSHAREDSDK @@ -225,15 +243,15 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(PXSHAREDSDK PXPVDSDK_LIB_DEBUG PXTASK_LIB_DEBUG -# PSFASTXML_LIB_CHECKED -# PXFOUNDATION_LIB_CHECKED -# PXPVDSDK_LIB_CHECKED -# PXTASK_LIB_CHECKED -# -# PSFASTXML_LIB_PROFILE -# PXFOUNDATION_LIB_PROFILE -# PXPVDSDK_LIB_PROFILE -# PXTASK_LIB_PROFILE + PSFASTXML_LIB_CHECKED + PXFOUNDATION_LIB_CHECKED + PXPVDSDK_LIB_CHECKED + PXTASK_LIB_CHECKED + + PSFASTXML_LIB_PROFILE + PXFOUNDATION_LIB_PROFILE + PXPVDSDK_LIB_PROFILE + PXTASK_LIB_PROFILE ${DLL_VAR_LIST} diff --git a/sdk/extensions/authoring/include/NvBlastExtAuthoring.h b/sdk/extensions/authoring/include/NvBlastExtAuthoring.h index d3ca85c..21d6a7c 100644 --- a/sdk/extensions/authoring/include/NvBlastExtAuthoring.h +++ b/sdk/extensions/authoring/include/NvBlastExtAuthoring.h @@ -189,10 +189,25 @@ Updates graphics mesh only \param[in] fTool Fracture tool created by NvBlastExtAuthoringCreateFractureTool \param[out] ares AuthoringResult object which contains chunks, for which rendermeshes will be updated (e.g. to tweak UVs). */ -NVBLAST_API void NvBlastExtUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& ares); - +NVBLAST_API void NvBlastExtAuthoringUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& ares); +/** +Build collision meshes +\param[in,out] ares AuthoringResult object which contains chunks, for which collision meshes will be built. +\param[in] collisionBuilder Reference to ConvexMeshBuilder instance. +\param[in] collisionParam Parameters of collision hulls generation. +\param[in] chunksToProcessCount Number of chunk indices in chunksToProcess memory buffer. +\param[in] chunksToProcess Chunk indices for which collision mesh should be built. +*/ +NVBLAST_API void NvBlastExtAuthoringBuildCollisionMeshes +( + Nv::Blast::AuthoringResult& ares, + Nv::Blast::ConvexMeshBuilder& collisionBuilder, + const Nv::Blast::CollisionParams& collisionParam, + uint32_t chunksToProcessCount, + uint32_t* chunksToProcess +); /** Creates MeshCleaner object @@ -200,8 +215,6 @@ NVBLAST_API void NvBlastExtUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv */ NVBLAST_API Nv::Blast::MeshCleaner* NvBlastExtAuthoringCreateMeshCleaner(); - - /** Finds bonds connecting chunks in a list of assets diff --git a/sdk/extensions/authoring/include/NvBlastExtAuthoringCollisionBuilder.h b/sdk/extensions/authoring/include/NvBlastExtAuthoringCollisionBuilder.h index 5b202bd..80f0396 100644 --- a/sdk/extensions/authoring/include/NvBlastExtAuthoringCollisionBuilder.h +++ b/sdk/extensions/authoring/include/NvBlastExtAuthoringCollisionBuilder.h @@ -57,10 +57,14 @@ struct CollisionParams void setDefault() { maximumNumberOfHulls = 8; + maximumNumberOfVerticesPerHull = 64; voxelGridResolution = 1000000; + concavity = 0.0025f; } uint32_t maximumNumberOfHulls; // Maximum number of convex hull generated for one chunk. If equal to 1 convex decomposition is disabled. - uint32_t voxelGridResolution; // Voxel grid resolution used for chunk convex decomposition. + uint32_t maximumNumberOfVerticesPerHull; // Controls the maximum number of triangles per convex-hull (default=64, range=4-1024) + uint32_t voxelGridResolution; // Voxel grid resolution used for chunk convex decomposition (default=1,000,000, range=10,000-16,000,000). + float concavity; // Value between 0 and 1, controls how accurate hull generation is }; /** diff --git a/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp b/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp index 13654e2..ee636bc 100644 --- a/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp +++ b/sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp @@ -139,7 +139,7 @@ CollisionHull* NvBlastExtAuthoringTransformCollisionHull(const CollisionHull* hu return ret; } -void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& result, const CollisionParams& params) +void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& result, const CollisionParams& params, uint32_t chunksToProcessCount = 0, uint32_t* chunksToProcess = nullptr) { uint32_t chunkCount = (uint32_t)result.chunkCount; if (params.maximumNumberOfHulls == 1) @@ -172,10 +172,27 @@ void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& re } else { + std::set<int32_t> chunkSet; + for (uint32_t c = 0; c < chunksToProcessCount; c++) + { + chunkSet.insert(chunksToProcess[c]); + } std::vector<std::vector<CollisionHull*> > hulls(chunkCount); int32_t totalHulls = 0; for (uint32_t i = 0; i < chunkCount; ++i) { + if (chunkSet.size() > 0 && chunkSet.find(i) == chunkSet.end()) + { + int32_t newHulls = result.collisionHullOffset[i + 1] - result.collisionHullOffset[i]; + int32_t off = result.collisionHullOffset[i]; + for (int32_t subhull = 0; subhull < newHulls; ++subhull) + { + hulls[i].push_back(result.collisionHull[off + subhull]); + } + totalHulls += newHulls; + continue; + } + CollisionHull** tempHull; int32_t newHulls = collisionBuilder.buildMeshConvexDecomposition(result.geometry + result.geometryOffset[i], @@ -188,6 +205,11 @@ void buildPhysicsChunks(ConvexMeshBuilder& collisionBuilder, AuthoringResult& re SAFE_ARRAY_DELETE(tempHull); } + SAFE_ARRAY_DELETE(result.collisionHullOffset); + SAFE_ARRAY_DELETE(result.collisionHull); + SAFE_ARRAY_DELETE(result.physicsSubchunks); + SAFE_ARRAY_DELETE(result.physicsChunks); + result.collisionHullOffset = SAFE_ARRAY_NEW(uint32_t, chunkCount + 1); result.collisionHullOffset[0] = 0; result.collisionHull = SAFE_ARRAY_NEW(CollisionHull*, totalHulls); @@ -488,11 +510,17 @@ uint32_t NvBlastExtAuthoringFindAssetConnectingBonds } -void NvBlastExtUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& aResult) +void NvBlastExtAuthoringUpdateGraphicsMesh(Nv::Blast::FractureTool& fTool, Nv::Blast::AuthoringResult& aResult) { uint32_t chunkCount = fTool.getChunkCount(); for (uint32_t i = 0; i < chunkCount; ++i) { fTool.updateBaseMesh(i, aResult.geometry + aResult.geometryOffset[i]); } -}
\ No newline at end of file +} + +void NvBlastExtAuthoringBuildCollisionMeshes(Nv::Blast::AuthoringResult& ares, Nv::Blast::ConvexMeshBuilder& collisionBuilder, + const Nv::Blast::CollisionParams& collisionParam, uint32_t chunksToProcessCount, uint32_t* chunksToProcess) +{ + buildPhysicsChunks(collisionBuilder, ares, collisionParam, chunksToProcessCount, chunksToProcess); +} diff --git a/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp b/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp index 43f1dbf..34e97e6 100644 --- a/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp +++ b/sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp @@ -373,6 +373,10 @@ int32_t ConvexMeshBuilderImpl::buildMeshConvexDecomposition(const Triangle* mesh VHACD::IVHACD::Parameters vhacdParam; vhacdParam.m_maxConvexHulls = iparams.maximumNumberOfHulls; vhacdParam.m_resolution = iparams.voxelGridResolution; + vhacdParam.m_concavity = iparams.concavity; + vhacdParam.m_oclAcceleration = false; + //TODO vhacdParam.m_callback + vhacdParam.m_minVolumePerCH = 0.003f; // 1.f / (3 * vhacdParam.m_resolution ^ (1 / 3)); decomposer->Compute(coords.data(), triangleCount * 3, indices.data(), triangleCount, vhacdParam); diff --git a/sdk/extensions/serialization/source/NvBlastExtPxSerializerRAW.cpp b/sdk/extensions/serialization/source/NvBlastExtPxSerializerRAW.cpp index ea9a57e..a139f42 100644 --- a/sdk/extensions/serialization/source/NvBlastExtPxSerializerRAW.cpp +++ b/sdk/extensions/serialization/source/NvBlastExtPxSerializerRAW.cpp @@ -203,7 +203,7 @@ ExtPxAsset* deserializeExtPxAsset(ExtIStream& stream, TkFramework& framework, ph } defaultActorDesc.initialBondHealths = bondHealthCount ? bondHealths.begin() : nullptr; - auto& supportChunkHealths = asset->getBondHealthsArray(); + auto& supportChunkHealths = asset->getSupportChunkHealthsArray(); uint32_t supportChunkHealthCount; stream >> supportChunkHealthCount; supportChunkHealths.resize(supportChunkHealthCount); |