aboutsummaryrefslogtreecommitdiff
path: root/sdk
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2018-01-23 15:09:19 -0800
committerBryan Galdrikian <[email protected]>2018-01-23 15:09:19 -0800
commit5b173c1082bd932de70b5664dce9b1c95e0ae237 (patch)
tree1f39a99b81be853e31044828ccfe6d04c36a25da /sdk
parentChanges for 1.1.2 release candidate (diff)
downloadblast-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')
-rw-r--r--sdk/compiler/cmake/modules/FindPhysXSDK.cmake74
-rw-r--r--sdk/compiler/cmake/modules/FindPxSharedSDK.cmake44
-rw-r--r--sdk/extensions/authoring/include/NvBlastExtAuthoring.h21
-rw-r--r--sdk/extensions/authoring/include/NvBlastExtAuthoringCollisionBuilder.h6
-rw-r--r--sdk/extensions/authoring/source/NvBlastExtAuthoring.cpp34
-rw-r--r--sdk/extensions/authoring/source/NvBlastExtAuthoringCollisionBuilderImpl.cpp4
-rw-r--r--sdk/extensions/serialization/source/NvBlastExtPxSerializerRAW.cpp2
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);