From 7115f60b91b5717d90f643fd692010905c7004db Mon Sep 17 00:00:00 2001 From: Bryan Galdrikian Date: Thu, 31 May 2018 11:36:08 -0700 Subject: Blast 1.1.3. See docs/release_notes.txt. --- tools/common/BlastDataExporter.cpp | 282 ++++++++++++++++++------------------- 1 file changed, 141 insertions(+), 141 deletions(-) mode change 100644 => 100755 tools/common/BlastDataExporter.cpp (limited to 'tools/common/BlastDataExporter.cpp') diff --git a/tools/common/BlastDataExporter.cpp b/tools/common/BlastDataExporter.cpp old mode 100644 new mode 100755 index 3ffffb1..2f88476 --- a/tools/common/BlastDataExporter.cpp +++ b/tools/common/BlastDataExporter.cpp @@ -1,141 +1,141 @@ -// This code contains NVIDIA Confidential Information and is disclosed to you -// under a form of NVIDIA software license agreement provided separately to you. -// -// Notice -// NVIDIA Corporation and its licensors retain all intellectual property and -// proprietary rights in and to this software and related documentation and -// any modifications thereto. Any use, reproduction, disclosure, or -// distribution of this software and related documentation without an express -// license agreement from NVIDIA Corporation is strictly prohibited. -// -// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES -// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO -// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, -// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. -// -// Information and code furnished is believed to be accurate and reliable. -// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such -// information or for any infringement of patents or other rights of third parties that may -// result from its use. No license is granted by implication or otherwise under any patent -// or patent rights of NVIDIA Corporation. Details are subject to change without notice. -// This code supersedes and replaces all information previously supplied. -// NVIDIA Corporation products are not authorized for use as critical -// components in life support devices or systems without express written approval of -// NVIDIA Corporation. -// -// Copyright (c) 2018 NVIDIA Corporation. All rights reserved. - - -#include "BlastDataExporter.h" -#include "NvBlastExtPxManager.h" -#include -#include "NvBlastExtSerialization.h" -#include "NvBlastExtLlSerialization.h" -#include "NvBlastExtTkSerialization.h" -#include "NvBlastExtPxSerialization.h" -#include -#include "PsFileBuffer.h" -#include "NvBlastExtPxAsset.h" -#include "NvBlast.h" -#include "NvBlastGlobals.h" -#include -#include -using namespace Nv::Blast; - - -BlastDataExporter::BlastDataExporter(TkFramework* framework, physx::PxPhysics* physics, physx::PxCooking* cooking) : mFramework(framework) -{ - mSerialization = NvBlastExtSerializationCreate(); - if (mSerialization != nullptr && physics != nullptr && cooking != nullptr && framework != nullptr) - { - NvBlastExtTkSerializerLoadSet(*framework, *mSerialization); - NvBlastExtPxSerializerLoadSet(*framework, *physics, *cooking, *mSerialization); - mSerialization->setSerializationEncoding(NVBLAST_FOURCC('C', 'P', 'N', 'B')); - } -} - - -BlastDataExporter::~BlastDataExporter() -{ - if (mSerialization != nullptr) - { - mSerialization->release(); - } -} - - -ExtPxAsset* BlastDataExporter::createExtBlastAsset(std::vector& bondDescs, const std::vector& chunkDescs, - std::vector& physicsChunks) -{ - ExtPxAssetDesc descriptor; - descriptor.bondCount = static_cast(bondDescs.size()); - descriptor.bondDescs = bondDescs.data(); - descriptor.chunkCount = static_cast(chunkDescs.size()); - descriptor.chunkDescs = chunkDescs.data(); - descriptor.bondFlags = nullptr; - descriptor.pxChunks = physicsChunks.data(); - ExtPxAsset* asset = ExtPxAsset::create(descriptor, *mFramework); - return asset; -} - - -NvBlastAsset* BlastDataExporter::createLlBlastAsset(std::vector& bondDescs, const std::vector& chunkDescs) -{ - NvBlastAssetDesc assetDesc; - assetDesc.bondCount = static_cast(bondDescs.size()); - assetDesc.bondDescs = bondDescs.data(); - - assetDesc.chunkCount = static_cast(chunkDescs.size()); - assetDesc.chunkDescs = chunkDescs.data(); - - std::vector scratch(static_cast(NvBlastGetRequiredScratchForCreateAsset(&assetDesc, logLL))); - void* mem = NVBLAST_ALLOC(NvBlastGetAssetMemorySize(&assetDesc, logLL)); - NvBlastAsset* asset = NvBlastCreateAsset(mem, &assetDesc, scratch.data(), logLL); - return asset; -} - - -TkAsset* BlastDataExporter::createTkBlastAsset(const std::vector& bondDescs, const std::vector& chunkDescs) -{ - TkAssetDesc desc; - desc.bondCount = static_cast(bondDescs.size()); - desc.bondDescs = bondDescs.data(); - desc.chunkCount = static_cast(chunkDescs.size()); - desc.chunkDescs = chunkDescs.data(); - desc.bondFlags = nullptr; - TkAsset* asset = mFramework->createAsset(desc); - return asset; -}; - - -bool BlastDataExporter::saveBlastObject(const std::string& outputDir, const std::string& objectName, const void* object, uint32_t objectTypeID) -{ - void* buffer; - const uint64_t bufferSize = mSerialization->serializeIntoBuffer(buffer, object, objectTypeID); - if (bufferSize == 0) - { - std::cerr << "saveBlastObject: Serialization failed.\n"; - return false; - } - - physx::PsFileBuffer fileBuf((outputDir + "/" + objectName + ".blast").c_str(), physx::PxFileBuf::OPEN_WRITE_ONLY); - bool result = fileBuf.isOpen(); - - if (!result) - { - std::cerr << "Can't open output buffer.\n"; - } - else - { - result = (bufferSize == (size_t)fileBuf.write(buffer, (uint32_t)bufferSize)); - if (!result) - { - std::cerr << "Buffer write failed.\n"; - } - fileBuf.close(); - } - - NVBLAST_FREE(buffer); - - return result; -}; +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2018 NVIDIA Corporation. All rights reserved. + + +#include "BlastDataExporter.h" +#include "NvBlastExtPxManager.h" +#include +#include "NvBlastExtSerialization.h" +#include "NvBlastExtLlSerialization.h" +#include "NvBlastExtTkSerialization.h" +#include "NvBlastExtPxSerialization.h" +#include +#include "PsFileBuffer.h" +#include "NvBlastExtPxAsset.h" +#include "NvBlast.h" +#include "NvBlastGlobals.h" +#include +#include +using namespace Nv::Blast; + + +BlastDataExporter::BlastDataExporter(TkFramework* framework, physx::PxPhysics* physics, physx::PxCooking* cooking) : mFramework(framework) +{ + mSerialization = NvBlastExtSerializationCreate(); + if (mSerialization != nullptr && physics != nullptr && cooking != nullptr && framework != nullptr) + { + NvBlastExtTkSerializerLoadSet(*framework, *mSerialization); + NvBlastExtPxSerializerLoadSet(*framework, *physics, *cooking, *mSerialization); + mSerialization->setSerializationEncoding(NVBLAST_FOURCC('C', 'P', 'N', 'B')); + } +} + + +BlastDataExporter::~BlastDataExporter() +{ + if (mSerialization != nullptr) + { + mSerialization->release(); + } +} + + +ExtPxAsset* BlastDataExporter::createExtBlastAsset(std::vector& bondDescs, const std::vector& chunkDescs, + std::vector& physicsChunks) +{ + ExtPxAssetDesc descriptor; + descriptor.bondCount = static_cast(bondDescs.size()); + descriptor.bondDescs = bondDescs.data(); + descriptor.chunkCount = static_cast(chunkDescs.size()); + descriptor.chunkDescs = chunkDescs.data(); + descriptor.bondFlags = nullptr; + descriptor.pxChunks = physicsChunks.data(); + ExtPxAsset* asset = ExtPxAsset::create(descriptor, *mFramework); + return asset; +} + + +NvBlastAsset* BlastDataExporter::createLlBlastAsset(std::vector& bondDescs, const std::vector& chunkDescs) +{ + NvBlastAssetDesc assetDesc; + assetDesc.bondCount = static_cast(bondDescs.size()); + assetDesc.bondDescs = bondDescs.data(); + + assetDesc.chunkCount = static_cast(chunkDescs.size()); + assetDesc.chunkDescs = chunkDescs.data(); + + std::vector scratch(static_cast(NvBlastGetRequiredScratchForCreateAsset(&assetDesc, logLL))); + void* mem = NVBLAST_ALLOC(NvBlastGetAssetMemorySize(&assetDesc, logLL)); + NvBlastAsset* asset = NvBlastCreateAsset(mem, &assetDesc, scratch.data(), logLL); + return asset; +} + + +TkAsset* BlastDataExporter::createTkBlastAsset(const std::vector& bondDescs, const std::vector& chunkDescs) +{ + TkAssetDesc desc; + desc.bondCount = static_cast(bondDescs.size()); + desc.bondDescs = bondDescs.data(); + desc.chunkCount = static_cast(chunkDescs.size()); + desc.chunkDescs = chunkDescs.data(); + desc.bondFlags = nullptr; + TkAsset* asset = mFramework->createAsset(desc); + return asset; +}; + + +bool BlastDataExporter::saveBlastObject(const std::string& outputDir, const std::string& objectName, const void* object, uint32_t objectTypeID) +{ + void* buffer; + const uint64_t bufferSize = mSerialization->serializeIntoBuffer(buffer, object, objectTypeID); + if (bufferSize == 0) + { + std::cerr << "saveBlastObject: Serialization failed.\n"; + return false; + } + + physx::PsFileBuffer fileBuf((outputDir + "/" + objectName + ".blast").c_str(), physx::PxFileBuf::OPEN_WRITE_ONLY); + bool result = fileBuf.isOpen(); + + if (!result) + { + std::cerr << "Can't open output buffer.\n"; + } + else + { + result = (bufferSize == (size_t)fileBuf.write(buffer, (uint32_t)bufferSize)); + if (!result) + { + std::cerr << "Buffer write failed.\n"; + } + fileBuf.close(); + } + + NVBLAST_FREE(buffer); + + return result; +}; -- cgit v1.2.3