diff options
| author | sschirm <[email protected]> | 2016-12-23 14:20:36 +0100 |
|---|---|---|
| committer | sschirm <[email protected]> | 2016-12-23 14:56:17 +0100 |
| commit | ef6937e69e8ee3f409cf9d460d5ad300a65d5924 (patch) | |
| tree | 710426e8daa605551ce3f34b581897011101c30f /APEX_1.4/module/basicios | |
| parent | Initial commit: (diff) | |
| download | physx-3.4-ef6937e69e8ee3f409cf9d460d5ad300a65d5924.tar.xz physx-3.4-ef6937e69e8ee3f409cf9d460d5ad300a65d5924.zip | |
PhysX 3.4 / APEX 1.4 release candidate @21506124
Diffstat (limited to 'APEX_1.4/module/basicios')
33 files changed, 0 insertions, 8881 deletions
diff --git a/APEX_1.4/module/basicios/cuda/include/common.h b/APEX_1.4/module/basicios/cuda/include/common.h deleted file mode 100644 index e530b9bc..00000000 --- a/APEX_1.4/module/basicios/cuda/include/common.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __COMMON_H__ -#define __COMMON_H__ - -#define APEX_CUDA_MODULE_PREFIX BasicIOS_ - -#include "ApexCuda.h" -#include "InplaceTypes.h" -#include "IofxManagerIntl.h" -#include <float.h> - -#if PX_WINDOWS_FAMILY -#pragma warning(push) -#pragma warning(disable:4201) -#pragma warning(disable:4408) -#endif - -#include <vector_types.h> - -#if PX_WINDOWS_FAMILY -#pragma warning(pop) -#endif - -const unsigned int HISTOGRAM_BIN_COUNT = 256; -const unsigned int HISTOGRAM_SIMULATE_BIN_COUNT = 512; - - -#define COMPACT_KERNEL_CONFIG (0, WARP_SIZE * 3) -#define HISTOGRAM_KERNEL_CONFIG (0, HISTOGRAM_BIN_COUNT) -#define REDUCE_KERNEL_CONFIG (0, WARP_SIZE * 4) -#define SCAN_KERNEL_CONFIG (0, WARP_SIZE * 4) -#define SIMULATE_KERNEL_CONFIG (0, HISTOGRAM_SIMULATE_BIN_COUNT) - - -const unsigned int HOLE_SCAN_FLAG_BIT = 31; -const unsigned int HOLE_SCAN_FLAG = (1U << HOLE_SCAN_FLAG_BIT); -const unsigned int HOLE_SCAN_MASK = (HOLE_SCAN_FLAG - 1); - -// mTmpOutput -const unsigned int STATUS_LAST_ACTIVE_COUNT = 0; -const unsigned int STATUS_LAST_BENEFIT_SUM = 1; -const unsigned int STATUS_LAST_BENEFIT_MIN = 2; -const unsigned int STATUS_LAST_BENEFIT_MAX = 3; - -namespace nvidia -{ -namespace basicios -{ - -} -} // namespace nvidia - -#endif diff --git a/APEX_1.4/module/basicios/cuda/include/compact.h b/APEX_1.4/module/basicios/cuda/include/compact.h deleted file mode 100644 index f0313c09..00000000 --- a/APEX_1.4/module/basicios/cuda/include/compact.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -APEX_CUDA_TEXTURE_1D(texRefCompactScanSum, unsigned int) - -APEX_CUDA_BOUND_KERNEL(COMPACT_KERNEL_CONFIG, compactKernel, - ((unsigned int, targetCount))((unsigned int, totalCount))((unsigned int, injectorCount)) - ((APEX_MEM_BLOCK(unsigned int), g_outIndices))((APEX_MEM_BLOCK(unsigned int), g_outCount))((APEX_MEM_BLOCK(unsigned int), g_injCounters)) - ) diff --git a/APEX_1.4/module/basicios/cuda/include/histogram.h b/APEX_1.4/module/basicios/cuda/include/histogram.h deleted file mode 100644 index ca45aa5e..00000000 --- a/APEX_1.4/module/basicios/cuda/include/histogram.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -APEX_CUDA_SYNC_KERNEL(HISTOGRAM_KERNEL_CONFIG, histogramSyncKernel, ((unsigned int, count)) - ((const float*, g_data))((unsigned int, bound)) - ((float, dataMin))((float, dataMax))((unsigned int*, g_boundParams)) - ((unsigned int*, g_tmpHistograms)) - ) - -APEX_CUDA_BOUND_KERNEL(HISTOGRAM_KERNEL_CONFIG, histogramKernel, - ((APEX_MEM_BLOCK(float), g_data))((unsigned int, bound)) - ((float, dataMin))((float, dataMax))((APEX_MEM_BLOCK(unsigned int), g_boundParams)) - ((APEX_MEM_BLOCK(unsigned int), g_tmpHistograms)) - ((unsigned int, phase))((unsigned int, gridSize)) - ) diff --git a/APEX_1.4/module/basicios/cuda/include/moduleList.h b/APEX_1.4/module/basicios/cuda/include/moduleList.h deleted file mode 100644 index 8a8749ce..00000000 --- a/APEX_1.4/module/basicios/cuda/include/moduleList.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "compact.h" -#include "histogram.h" -#include "reduce.h" -#include "scan.h" -#include "simulate.h" diff --git a/APEX_1.4/module/basicios/cuda/include/reduce.h b/APEX_1.4/module/basicios/cuda/include/reduce.h deleted file mode 100644 index adde0ad7..00000000 --- a/APEX_1.4/module/basicios/cuda/include/reduce.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -APEX_CUDA_SYNC_KERNEL(REDUCE_KERNEL_CONFIG, reduceSyncKernel, ((unsigned int, count)) - ((float*, g_benefit))((float4*, g_output))((unsigned int*, g_tmp)) - ) - -APEX_CUDA_BOUND_KERNEL(REDUCE_KERNEL_CONFIG, reduceKernel, - ((APEX_MEM_BLOCK(float), g_benefit))((APEX_MEM_BLOCK(float4), g_output))((APEX_MEM_BLOCK(unsigned int), g_tmp)) - ((unsigned int, phase))((unsigned int, gridSize)) - ) diff --git a/APEX_1.4/module/basicios/cuda/include/scan.h b/APEX_1.4/module/basicios/cuda/include/scan.h deleted file mode 100644 index 12553c5f..00000000 --- a/APEX_1.4/module/basicios/cuda/include/scan.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -APEX_CUDA_SYNC_KERNEL(SCAN_KERNEL_CONFIG, scanSyncKernel, ((unsigned int, count)) - ((float, benefitMin))((float, benefitMax)) - ((unsigned int*, g_indices))((const float*, g_benefits)) - ((unsigned int*, g_boundParams)) - ((unsigned int*, g_tmpCounts))((unsigned int*, g_tmpCounts1)) - ) - -APEX_CUDA_BOUND_KERNEL(SCAN_KERNEL_CONFIG, scanKernel, - ((float, benefitMin))((float, benefitMax)) - ((APEX_MEM_BLOCK(unsigned int), g_indices))((APEX_MEM_BLOCK(float), g_benefits)) - ((APEX_MEM_BLOCK(unsigned int), g_boundParams)) - ((APEX_MEM_BLOCK(unsigned int), g_tmpCounts))((APEX_MEM_BLOCK(unsigned int), g_tmpCounts1)) - ((unsigned int, phase))((unsigned int, gridSize)) - ) diff --git a/APEX_1.4/module/basicios/cuda/include/simulate.h b/APEX_1.4/module/basicios/cuda/include/simulate.h deleted file mode 100644 index 5ade0039..00000000 --- a/APEX_1.4/module/basicios/cuda/include/simulate.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -APEX_CUDA_STORAGE(simulateStorage) - - -APEX_CUDA_TEXTURE_1D(texRefPositionMass, float4) -APEX_CUDA_TEXTURE_1D(texRefVelocityLife, float4) -APEX_CUDA_TEXTURE_1D(texRefIofxActorIDs, unsigned int) -APEX_CUDA_TEXTURE_1D(texRefLifeSpan, float) -APEX_CUDA_TEXTURE_1D(texRefLifeTime, float) -APEX_CUDA_TEXTURE_1D(texRefInjector, unsigned int) - -APEX_CUDA_TEXTURE_1D(texRefUserData, unsigned int) - -APEX_CUDA_TEXTURE_1D(texRefConvexPlanes, float4) -APEX_CUDA_TEXTURE_1D(texRefConvexVerts, float4) -APEX_CUDA_TEXTURE_1D(texRefConvexPolygonsData, unsigned int) - -APEX_CUDA_TEXTURE_1D(texRefTrimeshIndices, unsigned int) -APEX_CUDA_TEXTURE_1D(texRefTrimeshVerts, float4) - -APEX_CUDA_TEXTURE_1D(texRefHoleScanSum, unsigned int) -APEX_CUDA_TEXTURE_1D(texRefMoveIndices, unsigned int) - -APEX_CUDA_TEXTURE_1D(texRefField, float4) - - -APEX_CUDA_BOUND_KERNEL(SIMULATE_KERNEL_CONFIG, simulateKernel, - ((unsigned int, lastCount))((float, deltaTime))((physx::PxVec3, gravity))((physx::PxVec3, eyePos)) - ((InplaceHandle<InjectorParamsArray>, injectorParamsArrayHandle))((unsigned int, injectorCount)) - ((unsigned int*, g_holeScanSum))((unsigned int*, g_moveCount))((unsigned int*, g_tmpHistogram))((unsigned int*, g_InjectorsCounters)) - ((float4*, g_positionMass))((float4*, g_velocityLife))((float4*, g_collisionNormalFlags))((unsigned int*, g_userData)) - ((float*, g_lifeSpan))((float*, g_lifeTime))((unsigned int*, g_injector))((IofxActorIDIntl*, g_iofxActorIDs)) - ((float*, g_benefit))((InplaceHandle<SimulationParams>, paramsHandle)) - ) - -APEX_CUDA_BOUND_KERNEL(SIMULATE_KERNEL_CONFIG, simulateApplyFieldKernel, - ((unsigned int, lastCount))((float, deltaTime))((physx::PxVec3, gravity))((physx::PxVec3, eyePos)) - ((InplaceHandle<InjectorParamsArray>, injectorParamsArrayHandle))((unsigned int, injectorCount)) - ((APEX_MEM_BLOCK(unsigned int), g_holeScanSum))((APEX_MEM_BLOCK(unsigned int), g_moveCount)) - ((APEX_MEM_BLOCK(unsigned int), g_tmpHistogram))((APEX_MEM_BLOCK(unsigned int), g_InjectorsCounters)) - ((APEX_MEM_BLOCK(float4), g_positionMass))((APEX_MEM_BLOCK(float4), g_velocityLife)) - ((APEX_MEM_BLOCK(float4), g_collisionNormalFlags))((APEX_MEM_BLOCK(unsigned int), g_userData)) - ((APEX_MEM_BLOCK(float), g_lifeSpan))((APEX_MEM_BLOCK(float), g_lifeTime)) - ((APEX_MEM_BLOCK(unsigned int), g_injector))((APEX_MEM_BLOCK(IofxActorIDIntl), g_iofxActorIDs)) - ((APEX_MEM_BLOCK(float), g_benefit))((InplaceHandle<SimulationParams>, paramsHandle)) - ) - - -APEX_CUDA_BOUND_KERNEL((), mergeHistogramKernel, - ((APEX_MEM_BLOCK(unsigned int), g_InjectorsCounters)) - ((APEX_MEM_BLOCK(unsigned int), g_tmpHistograms)) - ((unsigned int, gridSize))((unsigned int, injectorCount)) - ) - -APEX_CUDA_BOUND_KERNEL((), stateKernel, - ((unsigned int, lastCount))((unsigned int, targetCount)) - ((APEX_MEM_BLOCK(unsigned int), g_moveCount)) - ((APEX_MEM_BLOCK(unsigned int), g_inStateToInput))((APEX_MEM_BLOCK(unsigned int), g_outStateToInput)) - ) - -APEX_CUDA_BOUND_KERNEL((), gridDensityGridClearKernel, - ((float*, gridDensityGrid))((GridDensityParams, params)) - ) - -APEX_CUDA_BOUND_KERNEL((), gridDensityGridFillKernel, - ((float4*, positionMass))((float*, gridDensityGrid))((GridDensityParams, params)) - ) - -APEX_CUDA_BOUND_KERNEL((), gridDensityGridApplyKernel, - ((float*, density))((float4*, positionMass))((float*, gridDensityGrid))((GridDensityParams, params)) - ) - -APEX_CUDA_BOUND_KERNEL((), gridDensityGridFillFrustumKernel, - ((float4*, positionMass))((float*, gridDensityGrid))((GridDensityParams, params))((::physx::PxMat44,mat))((GridDensityFrustumParams,frustum)) - ) - -APEX_CUDA_BOUND_KERNEL((), gridDensityGridApplyFrustumKernel, - ((float*, density))((float4*, positionMass))((float*, gridDensityGrid))((GridDensityParams, params))((::physx::PxMat44,mat))((GridDensityFrustumParams,frustum)) - ) - -APEX_CUDA_FREE_KERNEL((), gridDensityGridLowPassKernel, - ((float*, gridDensityGridIn))((float*, gridDensityGridOut))((GridDensityParams, params)) - )
\ No newline at end of file diff --git a/APEX_1.4/module/basicios/include/BasicIosActorCPU.h b/APEX_1.4/module/basicios/include/BasicIosActorCPU.h deleted file mode 100644 index c2aae8a6..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosActorCPU.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_ACTOR_CPU_H__ -#define __BASIC_IOS_ACTOR_CPU_H__ - -#include "Apex.h" - -#if ENABLE_TEST -#include "BasicIosTestActor.h" -#endif -#include "BasicIosActorImpl.h" -#include "BasicIosAssetImpl.h" -#include "InstancedObjectSimulationIntl.h" -#include "BasicIosSceneCPU.h" -#include "ApexActor.h" -#include "ApexContext.h" -#include "ApexFIFO.h" -#include "ApexRWLockable.h" -#include "PxTask.h" - -namespace nvidia -{ -namespace apex -{ -class RenderVolume; -} -namespace basicios -{ - -#if ENABLE_TEST -#define BASIC_IOS_ACTOR BasicIosTestActor -#else -#define BASIC_IOS_ACTOR BasicIosActorImpl -#endif - -class BasicIosActorCPU : public BASIC_IOS_ACTOR -{ -public: - APEX_RW_LOCKABLE_BOILERPLATE - - BasicIosActorCPU(ResourceList&, BasicIosAssetImpl&, BasicIosScene&, nvidia::apex::IofxAsset&); - ~BasicIosActorCPU(); - - virtual void submitTasks(); - virtual void setTaskDependencies(); - virtual void fetchResults(); - -protected: - /* Internal utility functions */ - void simulateParticles(); - - static const uint32_t HISTOGRAM_BIN_COUNT = 1024; - uint32_t computeHistogram(uint32_t dataCount, float dataMin, float dataMax, uint32_t& bound); - -private: - /* particle data (output to the IOFX actors, and some state) */ - - physx::Array<uint32_t> mNewIndices; - - class SimulateTask : public PxTask - { - public: - SimulateTask(BasicIosActorCPU& actor) : mActor(actor) {} - - const char* getName() const - { - return "BasicIosActorCPU::SimulateTask"; - } - void run() - { - mActor.simulateParticles(); - } - - protected: - BasicIosActorCPU& mActor; - - private: - SimulateTask& operator=(const SimulateTask&); - }; - SimulateTask mSimulateTask; - - nvidia::apex::ApexCpuInplaceStorage mSimulationStorage; - - friend class BasicIosAssetImpl; -}; - -} -} // namespace nvidia - -#endif // __BASIC_IOS_ACTOR_CPU_H__ diff --git a/APEX_1.4/module/basicios/include/BasicIosActorGPU.h b/APEX_1.4/module/basicios/include/BasicIosActorGPU.h deleted file mode 100644 index 866df869..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosActorGPU.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_ACTOR_GPU_H__ -#define __BASIC_IOS_ACTOR_GPU_H__ - -#include "Apex.h" - -#if ENABLE_TEST -#include "BasicIosTestActor.h" -#endif -#include "BasicIosActorImpl.h" -#include "BasicIosAssetImpl.h" -#include "InstancedObjectSimulationIntl.h" -#include "BasicIosSceneGPU.h" -#include "ApexActor.h" -#include "ApexContext.h" -#include "ApexFIFO.h" -#include "FieldSamplerQueryIntl.h" - -#include "PxGpuTask.h" - -namespace nvidia -{ -namespace IOFX -{ -class IofxActor; -class RenderVolume; -} - -namespace basicios -{ - -#if ENABLE_TEST -#define BASIC_IOS_ACTOR BasicIosTestActor -#else -#define BASIC_IOS_ACTOR BasicIosActorImpl -#endif - -class BasicIosActorGPU : public BASIC_IOS_ACTOR -{ -public: - APEX_RW_LOCKABLE_BOILERPLATE - - BasicIosActorGPU(ResourceList&, BasicIosAssetImpl&, BasicIosScene&, nvidia::apex::IofxAsset&, const ApexMirroredPlace::Enum defaultPlace = ApexMirroredPlace::GPU); - ~BasicIosActorGPU(); - - virtual void submitTasks(); - virtual void setTaskDependencies(); - virtual void fetchResults(); - -protected: - bool launch(CUstream stream, int kernelIndex); - - PxGpuCopyDescQueue mCopyQueue; - - ApexMirroredArray<uint32_t> mHoleScanSum; - ApexMirroredArray<uint32_t> mMoveIndices; - - ApexMirroredArray<uint32_t> mTmpReduce; - ApexMirroredArray<uint32_t> mTmpHistogram; - ApexMirroredArray<uint32_t> mTmpScan; - ApexMirroredArray<uint32_t> mTmpScan1; - - ApexMirroredArray<uint32_t> mTmpOutput; - ApexMirroredArray<uint32_t> mTmpOutput1; - - class LaunchTask : public PxGpuTask - { - public: - LaunchTask(BasicIosActorGPU& actor) : mActor(actor) {} - const char* getName() const - { - return "BasicIosActorGPU::LaunchTask"; - } - void run() - { - PX_ALWAYS_ASSERT(); - } - bool launchInstance(CUstream stream, int kernelIndex) - { - return mActor.launch(stream, kernelIndex); - } - PxGpuTaskHint::Enum getTaskHint() const - { - return PxGpuTaskHint::Kernel; - } - - protected: - BasicIosActorGPU& mActor; - - private: - LaunchTask& operator=(const LaunchTask&); - }; - - static PX_CUDA_CALLABLE PX_INLINE PxMat44 inverse(const PxMat44& in); - static float distance(PxVec4 a, PxVec4 b); - - LaunchTask mLaunchTask; -}; - -} -} // namespace nvidia - -#endif // __BASIC_IOS_ACTOR_GPU_H__ diff --git a/APEX_1.4/module/basicios/include/BasicIosActorImpl.h b/APEX_1.4/module/basicios/include/BasicIosActorImpl.h deleted file mode 100644 index 8a738ec4..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosActorImpl.h +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_ACTOR_IMPL_H__ -#define __BASIC_IOS_ACTOR_IMPL_H__ - -#include "Apex.h" - -#include "BasicIosActor.h" -#include "IofxActor.h" -#include "BasicIosAssetImpl.h" -#include "InstancedObjectSimulationIntl.h" -#include "BasicIosScene.h" -#include "ApexActor.h" -#include "ApexContext.h" -#include "ApexFIFO.h" -#include "BasicIosCommon.h" -#include "BasicIosCommonSrc.h" -#include "InplaceStorage.h" -#include "ApexMirroredArray.h" -#include "ApexRand.h" - -#include <PxFiltering.h> - -#define MAX_CONVEX_PLANES_COUNT 4096 -#define MAX_CONVEX_VERTS_COUNT 4096 -#define MAX_CONVEX_POLYGONS_DATA_SIZE 16384 - -#define MAX_TRIMESH_VERTS_COUNT 4096 -#define MAX_TRIMESH_INDICES_COUNT 16384 - -namespace nvidia -{ -namespace apex -{ - class FieldSamplerQueryIntl; - class FieldSamplerCallbackIntl; -} -namespace iofx -{ - class RenderVolume; -} - -namespace basicios -{ - -/* Class for managing the interactions with each emitter */ -class BasicParticleInjector : public IosInjectorIntl, public ApexResourceInterface, public ApexResource -{ -public: - void setPreferredRenderVolume(nvidia::apex::RenderVolume* volume); - float getLeastBenefitValue() const - { - return 0.0f; - } - bool isBacklogged() const - { - return false; - } - - void createObjects(uint32_t count, const IosNewObject* createList); -#if APEX_CUDA_SUPPORT - void createObjects(ApexMirroredArray<const IosNewObject>& createArray); -#endif - - void setLODWeights(float maxDistance, float distanceWeight, float speedWeight, float lifeWeight, float separationWeight, float bias); - - PxTaskID getCompletionTaskID() const; - - virtual void release(); - void destroy(); - - // ApexResourceInterface methods - void setListIndex(ResourceList& list, uint32_t index); - uint32_t getListIndex() const - { - return m_listIndex; - } - - virtual void setPhysXScene(PxScene*) {} - virtual PxScene* getPhysXScene() const - { - return NULL; - } - - void assignSimParticlesCount(uint32_t input) - { - mSimulatedParticlesCount = input; - } - - virtual uint32_t getSimParticlesCount() const - { - return mSimulatedParticlesCount; - } - - virtual uint32_t getActivePaticleCount() const - { - return mSimulatedParticlesCount; - } - - virtual void setObjectScale(float objectScale); - -protected: - BasicIosActorImpl* mIosActor; - IofxManagerClientIntl* mIofxClient; - nvidia::apex::RenderVolume* mVolume; - physx::Array<uint16_t> mRandomActorClassIDs; - uint32_t mLastRandomID; - uint16_t mVolumeID; - - uint32_t mInjectorID; - uint32_t mSimulatedParticlesCount; - - /* insertion buffer */ - ApexFIFO<IosNewObject> mInjectedParticles; - - QDSRand mRand; - - BasicParticleInjector(ResourceList& list, BasicIosActorImpl& actor, uint32_t injectorID); - ~BasicParticleInjector(); - - void init(nvidia::apex::IofxAsset* iofxAsset); - - friend class BasicIosActorImpl; -}; - - -class BasicIosActorImpl : public InstancedObjectSimulationIntl, - public BasicIosActor, - public ApexResourceInterface, - public ApexResource, - public ApexRWLockable -{ -public: - APEX_RW_LOCKABLE_BOILERPLATE - - BasicIosActorImpl(ResourceList& list, BasicIosAssetImpl& asset, BasicIosScene& scene, nvidia::apex::IofxAsset& iofxAsset, bool isDataOnDevice); - ~BasicIosActorImpl(); - - // ApexInterface API - void release(); - void destroy(); - - // Actor API - void setPhysXScene(PxScene* s); - PxScene* getPhysXScene() const; - virtual void putInScene(PxScene* scene); - - Asset* getOwner() const - { - return static_cast<Asset*>(mAsset); - } - - // ApexContext - void getLodRange(float& min, float& max, bool& intOnly) const; - float getActiveLod() const; - void forceLod(float lod); - /** - \brief Selectively enables/disables debug visualization of a specific APEX actor. Default value it true. - */ - virtual void setEnableDebugVisualization(bool state) - { - ApexActor::setEnableDebugVisualization(state); - } - - // ApexResourceInterface methods - void setListIndex(ResourceList& list, uint32_t index) - { - m_listIndex = index; - m_list = &list; - } - uint32_t getListIndex() const - { - return m_listIndex; - } - - // IOSIntl - float getObjectRadius() const - { - return mAsset->getParticleRadius(); - } - float getObjectDensity() const - { - return mAsset->getRestDensity(); - } - - // BasicIosActor - float getParticleRadius() const - { - READ_ZONE(); - return mAsset->getParticleRadius(); - } - float getRestDensity() const - { - READ_ZONE(); - return mAsset->getRestDensity(); - } - uint32_t getParticleCount() const - { - READ_ZONE(); - return mParticleCount; - } - PX_INLINE void setOnStartFSCallback(FieldSamplerCallbackIntl* callback) - { - if (mFieldSamplerQuery) - { - mFieldSamplerQuery->setOnStartCallback(callback); - } - } - PX_INLINE void setOnFinishIOFXCallback(IofxManagerCallbackIntl* callback) - { - if (mIofxMgr) - { - mIofxMgr->setOnFinishCallback(callback); - } - } - - const PxVec3* getRecentPositions(uint32_t& count, uint32_t& stride) const; - - PxVec3 getGravity() const; - void setGravity(PxVec3& gravity); - - void visualize(); - virtual void submitTasks() = 0; - virtual void setTaskDependencies() = 0; - virtual void fetchResults(); - - IosInjectorIntl* allocateInjector(IofxAsset* iofxAsset); - void releaseInjector(IosInjectorIntl&); - - virtual void setDensityOrigin(const PxVec3& v) - { - mDensityOrigin = v; - } - - -protected: - //Member functions below have implemented in test actor - virtual bool checkBenefit(uint32_t totalCount) {PX_UNUSED(totalCount); return true;}; - virtual bool checkHoles(uint32_t totalCount) {PX_UNUSED(totalCount); return true;}; - virtual bool checkInState(uint32_t totalCount) {PX_UNUSED(totalCount); return true;}; - virtual bool checkHistogram(uint32_t /*bound*/, uint32_t /*beg*/, uint32_t /*back*/) {return true;}; - - virtual void removeFromScene(); - - void injectNewParticles(); - - void initStorageGroups(InplaceStorage& storage); - - void setTaskDependencies(PxTask* iosTask, bool isDataOnDevice); - - void FillCollisionData(CollisionData& baseData, PxShape* shape); - - BasicIosAssetImpl* mAsset; - BasicIosScene* mBasicIosScene; - - IofxManagerIntl* mIofxMgr; - IosBufferDescIntl mBufDesc; - - ResourceList mInjectorList; - - PxVec3 mGravityVec; - PxVec3 mUp; - float mGravity; - float mTotalElapsedTime; //AM: People, methinks this will backfire eventually due to floating point precision loss! - - uint32_t mMaxParticleCount; - uint32_t mMaxTotalParticleCount; - - uint32_t mParticleCount; - uint32_t mParticleBudget; - - uint32_t mInjectedCount; - float mInjectedBenefitSum; - float mInjectedBenefitMin; - float mInjectedBenefitMax; - - uint32_t mLastActiveCount; - float mLastBenefitSum; - float mLastBenefitMin; - float mLastBenefitMax; - - ApexMirroredArray<float> mLifeSpan; - ApexMirroredArray<float> mLifeTime; - ApexMirroredArray<uint32_t> mInjector; - ApexMirroredArray<float> mBenefit; - - ApexMirroredArray<PxPlane> mConvexPlanes; - ApexMirroredArray<PxVec4> mConvexVerts; - ApexMirroredArray<uint32_t> mConvexPolygonsData; - - ApexMirroredArray<PxVec4> mTrimeshVerts; - ApexMirroredArray<uint32_t> mTrimeshIndices; - - ApexMirroredArray<uint32_t> mInjectorsCounters; - - ApexMirroredArray<float> mGridDensityGrid; - ApexMirroredArray<float> mGridDensityGridLowPass; - - GridDensityParams mGridDensityParams; - // Particle Density Origin - PxVec3 mDensityOrigin; - PxMat44 mDensityDebugMatInv; - - // If true we are - bool mTrackGravityChanges; - - // Only for use by the IOS Asset, the actor is unaware of this - bool mIsMesh; - - FieldSamplerQueryIntl* mFieldSamplerQuery; - ApexMirroredArray<PxVec4> mField; - - PxFilterData mCollisionFilterData; - Array<physx::PxOverlapHit> mOverlapHits; - - InplaceStorageGroup mSimulationStorageGroup; - InplaceHandle<SimulationParams> mSimulationParamsHandle; - - PxTask* mInjectTask; - - FieldSamplerCallbackIntl* mOnStartCallback; - IofxManagerCallbackIntl* mOnFinishCallback; - - friend class BasicIosInjectTask; - - friend class BasicIosAssetImpl; - friend class BasicParticleInjector; -}; - -} -} // namespace nvidia - -#endif // __BASIC_IOS_ACTOR_IMPL_H__ diff --git a/APEX_1.4/module/basicios/include/BasicIosAssetImpl.h b/APEX_1.4/module/basicios/include/BasicIosAssetImpl.h deleted file mode 100644 index 766858c1..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosAssetImpl.h +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef BASIC_IOS_ASSET_IMPL_H -#define BASIC_IOS_ASSET_IMPL_H - -#include "ApexUsingNamespace.h" -#include "Apex.h" -#include "IofxAsset.h" -#include "BasicIosAsset.h" -#include "InstancedObjectSimulationIntl.h" -#include "ApexSDKHelpers.h" -#include "ApexAssetAuthoring.h" -#include "ApexString.h" -#include "ResourceProviderIntl.h" -#include "ApexAuthorableObject.h" -#include "BasicIOSAssetParam.h" -#include "ApexAssetTracker.h" -#include "ApexRand.h" -#include "ApexRWLockable.h" - -#include "ReadCheck.h" -#include "ApexAuthorableObject.h" - -namespace nvidia -{ -namespace IOFX -{ -class IofxAsset; -} - -namespace basicios -{ - -class ModuleBasicIosImpl; -class BasicIosActorImpl; - -/** -\brief Descriptor needed to create a BasicIOS Actor -*/ -class BasicIosActorDesc : public ApexDesc -{ -public: - ///Radius of a particle (overrides authered value) - float radius; - ///Density of a particle (overrides authered value) - float density; - - /** - \brief constructor sets to default. - */ - PX_INLINE BasicIosActorDesc() : ApexDesc() - { - init(); - } - - /** - \brief sets members to default values. - */ - PX_INLINE void setToDefault() - { - ApexDesc::setToDefault(); - init(); - } - - /** - \brief checks if this is a valid descriptor. - */ - PX_INLINE bool isValid() const - { - if (!ApexDesc::isValid()) - { - return false; - } - - return true; - } - -private: - - PX_INLINE void init() - { - // authored values will be used where these default values remain - radius = 0.0f; - density = 0.0f; - } -}; - -class BasicIosAssetImpl : public BasicIosAsset, - public ApexResourceInterface, - public ApexResource, - public ApexRWLockable -{ - friend class BasicIosAssetDummyAuthoring; -public: - APEX_RW_LOCKABLE_BOILERPLATE - - BasicIosAssetImpl(ModuleBasicIosImpl*, ResourceList&, const char*); - BasicIosAssetImpl(ModuleBasicIosImpl* module, ResourceList&, NvParameterized::Interface*, const char*); - ~BasicIosAssetImpl(); - - // Asset - void release(); - const char* getName(void) const - { - return mName.c_str(); - } - AuthObjTypeID getObjTypeID() const - { - return mAssetTypeID; - } - const char* getObjTypeName() const - { - return getClassName(); - } - // TODO: implement forceLoadAssets - uint32_t forceLoadAssets(); - - Actor* createIosActor(Scene& scene, IofxAsset* iofxAsset); - void releaseIosActor(Actor&); - bool getSupportsDensity() const; - - // Private API for this module only - BasicIosActorImpl* getIosActorInScene(Scene& scene, bool mesh) const; - - // ApexResourceInterface methods - void setListIndex(ResourceList& list, uint32_t index) - { - m_listIndex = index; - m_list = &list; - } - uint32_t getListIndex() const - { - return m_listIndex; - } - - float getParticleRadius() const - { - READ_ZONE(); - return mParams->particleRadius; - } - float getRestDensity() const - { - READ_ZONE(); - return mParams->restDensity; - } - float getMaxInjectedParticleCount() const - { - READ_ZONE(); - return mParams->maxInjectedParticleCount; - } - uint32_t getMaxParticleCount() const - { - READ_ZONE(); - return mParams->maxParticleCount; - } - float getSceneGravityScale() const - { - return mParams->sceneGravityScale; - } - PxVec3& getExternalAcceleration() const - { - return mParams->externalAcceleration; - } - float getParticleMass() const; - - const NvParameterized::Interface* getAssetNvParameterized() const - { - return mParams; - } - /** - * \brief Releases the ApexAsset but returns the NvParameterized::Interface and *ownership* to the caller. - */ - virtual NvParameterized::Interface* releaseAndReturnNvParameterizedInterface(void) - { - NvParameterized::Interface* ret = mParams; - mParams = NULL; - release(); - return ret; - } - - NvParameterized::Interface* getDefaultActorDesc() - { - APEX_INVALID_OPERATION("Not yet implemented!"); - return NULL; - } - - NvParameterized::Interface* getDefaultAssetPreviewDesc() - { - APEX_INVALID_OPERATION("Not yet implemented!"); - return NULL; - } - - virtual Actor* createApexActor(const NvParameterized::Interface& /*parms*/, Scene& /*apexScene*/) - { - APEX_INVALID_OPERATION("Not yet implemented!"); - return NULL; - } - - virtual AssetPreview* createApexAssetPreview(const NvParameterized::Interface& /*params*/, AssetPreviewScene* /*previewScene*/) - { - APEX_INVALID_OPERATION("Not yet implemented!"); - return NULL; - } - - virtual bool isValidForActorCreation(const ::NvParameterized::Interface& /*parms*/, Scene& /*apexScene*/) const - { - return true; // TODO implement this method - } - - virtual bool isDirty() const - { - return false; - } - -protected: - virtual void destroy(); - - static AuthObjTypeID mAssetTypeID; - static const char* getClassName() - { - return BASIC_IOS_AUTHORING_TYPE_NAME; - } - - ResourceList mIosActorList; - - ModuleBasicIosImpl* mModule; - ApexSimpleString mName; - - BasicIOSAssetParam* mParams; - - mutable QDSRand mSRand; - mutable QDNormRand mNormRand; - - enum - { - UNIFORM, - NORMAL - } mMassDistribType; - - void processParams(); - - friend class ModuleBasicIosImpl; - friend class BasicIosActorImpl; - friend class BasicIosActorCPU; - friend class BasicIosActorGPU; - template <class T_Module, class T_Asset, class T_AssetAuthoring> friend class nvidia::apex::ApexAuthorableObject; - friend class BasicIosAuthorableObject; -}; - -#ifndef WITHOUT_APEX_AUTHORING -class BasicIosAssetAuthoringImpl : public BasicIosAssetAuthoring, public ApexAssetAuthoring, public BasicIosAssetImpl -{ -public: - APEX_RW_LOCKABLE_BOILERPLATE - - BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list); - BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list, const char* name); - BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name); - - virtual void release(); - - const char* getName(void) const - { - return BasicIosAssetImpl::getName(); - } - const char* getObjTypeName() const - { - return BasicIosAssetImpl::getClassName(); - } - virtual bool prepareForPlatform(nvidia::apex::PlatformTag) - { - APEX_INVALID_OPERATION("Not Implemented."); - return false; - } - void setToolString(const char* toolName, const char* toolVersion, uint32_t toolChangelist) - { - ApexAssetAuthoring::setToolString(toolName, toolVersion, toolChangelist); - } - - void setParticleRadius(float radius) - { - mParams->particleRadius = radius; - } - void setRestDensity(float density) - { - mParams->restDensity = density; - } - void setMaxInjectedParticleCount(float count) - { - mParams->maxInjectedParticleCount = count; - } - void setMaxParticleCount(uint32_t count) - { - mParams->maxParticleCount = count; - } - void setParticleMass(float mass) - { - mParams->particleMass.center = mass; - } - - void setCollisionGroupName(const char* collisionGroupName); - void setCollisionGroupMaskName(const char* collisionGroupMaskName); - - NvParameterized::Interface* getNvParameterized() const - { - return (NvParameterized::Interface*)getAssetNvParameterized(); - } - /** - * \brief Releases the ApexAsset but returns the NvParameterized::Interface and *ownership* to the caller. - */ - virtual NvParameterized::Interface* releaseAndReturnNvParameterizedInterface(void) - { - NvParameterized::Interface* ret = mParams; - mParams = NULL; - release(); - return ret; - } -}; -#endif - -} -} // namespace nvidia - -#endif // BASIC_IOS_ASSET_IMPL_H diff --git a/APEX_1.4/module/basicios/include/BasicIosCommon.h b/APEX_1.4/module/basicios/include/BasicIosCommon.h deleted file mode 100644 index 8b038518..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosCommon.h +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_COMMON_H__ -#define __BASIC_IOS_COMMON_H__ - -#include "PxMat44.h" -#include "PxBounds3.h" -#include "PxVec3.h" -#include "InplaceTypes.h" - -namespace nvidia -{ - namespace apex - { - class ApexCpuInplaceStorage; - } - namespace basicios - { - -//struct InjectorParams -#define INPLACE_TYPE_STRUCT_NAME InjectorParams -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(float, mLODMaxDistance) \ - INPLACE_TYPE_FIELD(float, mLODDistanceWeight) \ - INPLACE_TYPE_FIELD(float, mLODSpeedWeight) \ - INPLACE_TYPE_FIELD(float, mLODLifeWeight) \ - INPLACE_TYPE_FIELD(float, mLODBias) \ - INPLACE_TYPE_FIELD(uint32_t, mLocalIndex) -#include INPLACE_TYPE_BUILD() - - typedef InplaceArray<InjectorParams> InjectorParamsArray; - -//struct CollisionData -#define INPLACE_TYPE_STRUCT_NAME CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxVec3, bodyCMassPosition) \ - INPLACE_TYPE_FIELD(PxVec3, bodyLinearVelocity) \ - INPLACE_TYPE_FIELD(PxVec3, bodyAngluarVelocity) \ - INPLACE_TYPE_FIELD(float, materialRestitution) -#include INPLACE_TYPE_BUILD() - -//struct CollisionSphereData -#define INPLACE_TYPE_STRUCT_NAME CollisionSphereData -#define INPLACE_TYPE_STRUCT_BASE CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxBounds3, aabb) \ - INPLACE_TYPE_FIELD(PxTransform, pose) \ - INPLACE_TYPE_FIELD(PxTransform, inversePose) \ - INPLACE_TYPE_FIELD(float, radius) -#include INPLACE_TYPE_BUILD() - -//struct CollisionCapsuleData -#define INPLACE_TYPE_STRUCT_NAME CollisionCapsuleData -#define INPLACE_TYPE_STRUCT_BASE CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxBounds3, aabb) \ - INPLACE_TYPE_FIELD(PxTransform, pose) \ - INPLACE_TYPE_FIELD(PxTransform, inversePose) \ - INPLACE_TYPE_FIELD(float, halfHeight) \ - INPLACE_TYPE_FIELD(float, radius) -#include INPLACE_TYPE_BUILD() - -//struct CollisionBoxData -#define INPLACE_TYPE_STRUCT_NAME CollisionBoxData -#define INPLACE_TYPE_STRUCT_BASE CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxBounds3, aabb) \ - INPLACE_TYPE_FIELD(PxTransform, pose) \ - INPLACE_TYPE_FIELD(PxTransform, inversePose) \ - INPLACE_TYPE_FIELD(PxVec3, halfSize) -#include INPLACE_TYPE_BUILD() - -//struct CollisionHalfSpaceData -#define INPLACE_TYPE_STRUCT_NAME CollisionHalfSpaceData -#define INPLACE_TYPE_STRUCT_BASE CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxVec3, normal) \ - INPLACE_TYPE_FIELD(PxVec3, origin) -#include INPLACE_TYPE_BUILD() - -//struct CollisionConvexMeshData -#define INPLACE_TYPE_STRUCT_NAME CollisionConvexMeshData -#define INPLACE_TYPE_STRUCT_BASE CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxBounds3, aabb) \ - INPLACE_TYPE_FIELD(PxTransform, pose) \ - INPLACE_TYPE_FIELD(PxTransform, inversePose) \ - INPLACE_TYPE_FIELD(uint32_t, numPolygons) \ - INPLACE_TYPE_FIELD(uint32_t, firstPlane) \ - INPLACE_TYPE_FIELD(uint32_t, firstVertex) \ - INPLACE_TYPE_FIELD(uint32_t, polygonsDataOffset) -#include INPLACE_TYPE_BUILD() - -//struct CollisionTriMeshData -#define INPLACE_TYPE_STRUCT_NAME CollisionTriMeshData -#define INPLACE_TYPE_STRUCT_BASE CollisionData -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(PxBounds3, aabb) \ - INPLACE_TYPE_FIELD(PxTransform, pose) \ - INPLACE_TYPE_FIELD(PxTransform, inversePose) \ - INPLACE_TYPE_FIELD(uint32_t, numTriangles) \ - INPLACE_TYPE_FIELD(uint32_t, firstIndex) \ - INPLACE_TYPE_FIELD(uint32_t, firstVertex) -#include INPLACE_TYPE_BUILD() - -//struct SimulationParams -#define INPLACE_TYPE_STRUCT_NAME SimulationParams -#define INPLACE_TYPE_STRUCT_FIELDS \ - INPLACE_TYPE_FIELD(float, collisionThreshold) \ - INPLACE_TYPE_FIELD(float, collisionDistance) \ - INPLACE_TYPE_FIELD(InplaceArray<CollisionBoxData>, boxes) \ - INPLACE_TYPE_FIELD(InplaceArray<CollisionSphereData>, spheres) \ - INPLACE_TYPE_FIELD(InplaceArray<CollisionCapsuleData>, capsules) \ - INPLACE_TYPE_FIELD(InplaceArray<CollisionHalfSpaceData>, halfSpaces) \ - INPLACE_TYPE_FIELD(InplaceArray<CollisionConvexMeshData>, convexMeshes) \ - INPLACE_TYPE_FIELD(InplaceArray<CollisionTriMeshData>, trimeshes) \ - INPLACE_TYPE_FIELD(PxPlane*, convexPlanes) \ - INPLACE_TYPE_FIELD(PxVec4*, convexVerts) \ - INPLACE_TYPE_FIELD(uint32_t*, convexPolygonsData) \ - INPLACE_TYPE_FIELD(PxVec4*, trimeshVerts) \ - INPLACE_TYPE_FIELD(uint32_t*, trimeshIndices) -#define INPLACE_TYPE_STRUCT_LEAVE_OPEN 1 -#include INPLACE_TYPE_BUILD() - - APEX_CUDA_CALLABLE PX_INLINE SimulationParams() : convexPlanes(NULL), convexVerts(NULL), convexPolygonsData(NULL) {} - }; - - - struct GridDensityParams - { - bool Enabled; - float GridSize; - uint32_t GridMaxCellCount; - uint32_t GridResolution; - PxVec3 DensityOrigin; - GridDensityParams(): Enabled(false) {} - }; - - struct GridDensityFrustumParams - { - float nearDimX; - float farDimX; - float nearDimY; - float farDimY; - float dimZ; - }; - -#ifdef __CUDACC__ - -#define SIM_FETCH_PLANE(plane, name, idx) { float4 f4 = tex1Dfetch(KERNEL_TEX_REF(name), idx); plane = PxPlane(f4.x, f4.y, f4.z, f4.w); } -#define SIM_FETCH(name, idx) tex1Dfetch(KERNEL_TEX_REF(name), idx) -#define SIM_FLOAT4 float4 -#define SIM_INT_AS_FLOAT(x) __int_as_float(x) -#define SIM_INJECTOR_ARRAY const InjectorParamsArray& -#define SIM_FETCH_INJECTOR(injectorArray, injParams, injector) injectorArray.fetchElem(INPLACE_STORAGE_ARGS_VAL, injParams, injector) - - __device__ PX_INLINE float splitFloat4(PxVec3& v3, const SIM_FLOAT4& f4) - { - v3.x = f4.x; - v3.y = f4.y; - v3.z = f4.z; - return f4.w; - } - __device__ PX_INLINE SIM_FLOAT4 combineFloat4(const PxVec3& v3, float w) - { - return make_float4(v3.x, v3.y, v3.z, w); - } -#else - -#define SIM_FETCH_PLANE(plane, name, idx) plane = mem##name[idx]; -#define SIM_FETCH(name, idx) mem##name[idx] -#define SIM_FLOAT4 PxVec4 -#define SIM_INT_AS_FLOAT(x) *(const float*)(&x) -#define SIM_INJECTOR_ARRAY const InjectorParams* -#define SIM_FETCH_INJECTOR(injectorArray, injParams, injector) injParams = injectorArray[injector]; - - PX_INLINE float splitFloat4(PxVec3& v3, const SIM_FLOAT4& f4) - { - v3 = f4.getXYZ(); - return f4.w; - } - PX_INLINE SIM_FLOAT4 combineFloat4(const PxVec3& v3, float w) - { - return PxVec4(v3.x, v3.y, v3.z, w); - } - -#endif - - } -} // namespace nvidia - -#endif diff --git a/APEX_1.4/module/basicios/include/BasicIosCommonSrc.h b/APEX_1.4/module/basicios/include/BasicIosCommonSrc.h deleted file mode 100644 index 2d1458ce..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosCommonSrc.h +++ /dev/null @@ -1,598 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_COMMON_SRC_H__ -#define __BASIC_IOS_COMMON_SRC_H__ - -namespace nvidia -{ - namespace basicios - { - - PX_CUDA_CALLABLE PX_INLINE void updateCollisionVelocity(const CollisionData& data, const PxVec3& normal, const PxVec3& position, PxVec3& velocity) - { - PxVec3 bodyVelocity = data.bodyLinearVelocity + data.bodyAngluarVelocity.cross(position - data.bodyCMassPosition); - - velocity -= bodyVelocity; - float normalVelocity = normal.dot(velocity); - if (normalVelocity < 0.0f) - { - velocity -= normal * ((1.0f + data.materialRestitution) * normalVelocity); - } - velocity += bodyVelocity; - } - - - PX_CUDA_CALLABLE PX_INLINE void calculatePointSegmentSquaredDist(const PxVec3& a, const PxVec3& b, const PxVec3& point, float& distanceSquared, PxVec3& nearestPoint) // a, b - segment points - { - PxVec3 v, w, temp; //vectors - float c1, c2, ratio; //constants - v = a - b; - w = point - b; - float distSquared = 0; - - c1 = w.dot(v); - if(c1 <= 0) - { - distSquared = (point.x - b.x) * (point.x - b.x) + (point.y - b.y) * (point.y - b.y) + (point.z - b.z) * (point.z - b.z); - nearestPoint = b; - } - else - { - c2 = v.dot(v); - if(c2 <= c1) - { - distSquared = (point.x - a.x) * (point.x - a.x) + (point.y - a.y) * (point.y - a.y) + (point.z - a.z) * (point.z - a.z); - nearestPoint = a; - } - else - { - ratio = c1 / c2; - temp = b + ratio * v; - distSquared = (point.x - temp.x) * (point.x - temp.x) + (point.y - temp.y) * (point.y - temp.y) + (point.z - temp.z) * (point.z - temp.z); - nearestPoint = temp; - } - } - - distanceSquared = distSquared; - } - -#ifdef __CUDACC__ - __device__ -#endif - PX_INLINE float checkTriangleCollision(const PxVec4* memTrimeshVerts, const uint32_t* memTrimeshIndices, const CollisionTriMeshData& data, float radius, PxVec3 localPosition, PxVec3 &normal) - { - float minDistSquared = PX_MAX_F32; - PxVec3 localNormal(0); - - for(uint32_t j = 0 ; j < data.numTriangles; j++) - { - PxVec3 p0, p1, p2; - uint32_t i0, i1, i2; - i0 = SIM_FETCH(TrimeshIndices, data.firstIndex + 3 * j); - i1 = SIM_FETCH(TrimeshIndices, data.firstIndex + 3 * j + 1); - i2 = SIM_FETCH(TrimeshIndices, data.firstIndex + 3 * j + 2); - splitFloat4(p0, SIM_FETCH(TrimeshVerts, data.firstVertex + i0)); - splitFloat4(p1, SIM_FETCH(TrimeshVerts, data.firstVertex + i1)); - splitFloat4(p2, SIM_FETCH(TrimeshVerts, data.firstVertex + i2)); - - //localNormal = (p1 - p0).cross(p2 - p0); - //if(radius > 0) localNormal += localPosition; - - PxBounds3 aabb( (p0.minimum(p1.minimum(p2))), (p0.maximum(p1.maximum(p2))) ); - aabb.fattenFast( radius ); - if( !aabb.contains(localPosition) ) continue; - - p0 = p0 - localPosition; - p1 = p1 - localPosition; - p2 = p2 - localPosition; - - PxVec3 a(p1 - p0); - PxVec3 b(p2 - p0); - PxVec3 n = a.cross(b); - n.normalize(); - - //check if point far away from the triangle's plane, then give up - if(n.x * p0.x + n.y * p0.y + n.z * p0.z > radius) continue; - - //check if the nearest point is one of the triangle's vertices - PxVec3 closestPoint; // closest point - - float det1p0p1, det2p0p2, det2p1p2, det0p0p1, det0p0p2, det1p1p2; - //i = 0 - det1p0p1 = p0.dot(-(p1 - p0)); - det2p0p2 = p0.dot(-(p2 - p0)); - //i = 1 - det0p0p1 = p1.dot(p1 - p0); - det2p1p2 = p1.dot(-(p2 - p1)); - //i = 2 - det0p0p2 = p2.dot(p2 - p0); - det1p1p2 = p2.dot(p2 - p1); - - if(det1p0p1 <= 0 && det2p0p2 <= 0) closestPoint = p0; - else if(det0p0p1 <= 0 && det2p1p2 <= 0) closestPoint = p1; - else if(det0p0p2 <= 0 && det1p1p2 <= 0) closestPoint = p2; - else - { - //check if the nearest point is internal point of one of the triangle's edges - float det0p0p1p2, det1p0p1p2, det2p0p1p2; - det0p0p1p2 = det0p0p1 * det1p1p2 + det2p1p2 * p2.dot(p1 - p0); - det1p0p1p2 = det1p0p1 * det0p0p2 - det2p0p2 * p2.dot(p1 - p0); - det2p0p1p2 = det2p0p2 * det0p0p1 - det1p0p1 * p1.dot(p2 - p0); - - if(det0p0p1p2 <= 0) closestPoint = (p1 * det1p1p2 + p2 * det2p1p2) / (det1p1p2 + det2p1p2); - else if(det1p0p1p2 <= 0) closestPoint = (p0 * det0p0p2 + p2 * det2p0p2) / (det0p0p2 + det2p0p2); - else if(det2p0p1p2 <= 0) closestPoint = (p0 * det0p0p1 + p1 * det1p0p1) / (det0p0p1 + det1p0p1); - //point is inside the triangle - else closestPoint = (p0 * det0p0p1p2 + p1 * det1p0p1p2 + p2 * det2p0p1p2) / (det0p0p1p2 + det1p0p1p2 + det2p0p1p2); - } - - float distSquared = closestPoint.x * closestPoint.x + closestPoint.y * closestPoint.y + closestPoint.z * closestPoint.z; - if(distSquared > radius * radius) - { - continue; - } - - if(distSquared < minDistSquared) - { - minDistSquared = distSquared; - localNormal = n; - } - } - normal = localNormal; - - return minDistSquared; - } - - INPLACE_TEMPL_ARGS_DEF -#ifdef __CUDACC__ - __device__ -#endif - PX_INLINE uint32_t handleCollisions(const SimulationParams* params, INPLACE_STORAGE_ARGS_DEF, PxVec3& position, PxVec3& velocity, PxVec3& normal) - { - const PxPlane* memConvexPlanes = params->convexPlanes; - const PxVec4* memConvexVerts = params->convexVerts; - const uint32_t* memConvexPolygonsData = params->convexPolygonsData; - - // Algorithms are similar to CPU version - const PxVec4* memTrimeshVerts = params->trimeshVerts; - const uint32_t* memTrimeshIndices = params->trimeshIndices; - - float collisionRadius = params->collisionDistance + params->collisionThreshold; - - uint32_t numTriMeshes = params->trimeshes.getSize(); - for (uint32_t i = 0; i < numTriMeshes; ++i) - { - CollisionTriMeshData data; - params->trimeshes.fetchElem(INPLACE_STORAGE_ARGS_VAL, data, i); - - if (!data.aabb.contains(position)) //check coarse bounds - { - continue; - } - - PxVec3 localPosition = data.inversePose.transform(position); - - PxVec3 localNormal; - float minDistSquared = checkTriangleCollision(memTrimeshVerts, memTrimeshIndices, data, collisionRadius, localPosition, localNormal); - if (minDistSquared == PX_MAX_F32) - { - continue; - } - - float penDepth = params->collisionDistance - PxSqrt(minDistSquared); - - if( penDepth > 0 ) - { - localPosition += localNormal * penDepth; - normal = data.pose.rotate(localNormal); - position = data.pose.transform(localPosition); - updateCollisionVelocity(data, normal, position, velocity); - } - return 1; - } - - uint32_t numConvexMeshes = params->convexMeshes.getSize(); - for (uint32_t i = 0; i < numConvexMeshes; ++i) - { - CollisionConvexMeshData data; - params->convexMeshes.fetchElem(INPLACE_STORAGE_ARGS_VAL, data, i); - - if (!data.aabb.contains(position)) //check coarse bounds - { - continue; - } - - PxVec3 localPosition = data.inversePose.transform(position); - - float penDepth = UINT32_MAX; - PxVec3 localNormal(0); - - bool insideConvex = true; - bool insidePolygon = true; - float distSquaredMin = UINT32_MAX; - PxVec3 nearestPointMin; - - uint32_t polygonsDataOffset = data.polygonsDataOffset; - for (uint32_t polyId = 0; polyId < data.numPolygons; polyId++) // for each polygon - { - PxPlane plane; - SIM_FETCH_PLANE(plane, ConvexPlanes, data.firstPlane + polyId); - - uint32_t vertCount = SIM_FETCH(ConvexPolygonsData, polygonsDataOffset); - - float dist = (localPosition.dot(plane.n) + plane.d); - if (dist > 0) //outside convex - { - insideConvex = false; - - if (dist > collisionRadius) - { - insidePolygon = false; - distSquaredMin = dist * dist; - break; - } - - insidePolygon = true; - PxVec3 polygonNormal = plane.n; - - uint32_t begVertId = SIM_FETCH(ConvexPolygonsData, polygonsDataOffset + vertCount); - PxVec3 begVert; splitFloat4(begVert, SIM_FETCH(ConvexVerts, data.firstVertex + begVertId)); - for (uint32_t vertId = 1; vertId <= vertCount; ++vertId) //for each vertex - { - uint32_t endVertId = SIM_FETCH(ConvexPolygonsData, polygonsDataOffset + vertId); - PxVec3 endVert; splitFloat4(endVert, SIM_FETCH(ConvexVerts, data.firstVertex + endVertId)); - - PxVec3 segment = endVert - begVert; - PxVec3 segmentNormal = polygonNormal.cross(segment); - float sign = segmentNormal.dot(localPosition - begVert); - if (sign < 0) - { - insidePolygon = false; - - float distSquared; - PxVec3 nearestPoint; - calculatePointSegmentSquaredDist(begVert, endVert, localPosition, distSquared, nearestPoint); - if (distSquared < distSquaredMin) - { - distSquaredMin = distSquared; - nearestPointMin = nearestPoint; - } - } - - begVert = endVert; - } - if (insidePolygon) - { - penDepth = params->collisionDistance - dist; - localNormal = polygonNormal; - break; - } - } - - if (insideConvex) - { - float penDepthPlane = params->collisionDistance - dist; //dist is negative inside - if (penDepthPlane < penDepth) //inside convex - { - penDepth = penDepthPlane; - localNormal = plane.n; - } - } - polygonsDataOffset += (vertCount + 1); - } - - if (!insideConvex && !insidePolygon) - { - if (distSquaredMin > collisionRadius * collisionRadius) - { - continue; //no intersection, too far away - } - float dist = PxSqrt(distSquaredMin); - - localNormal = localPosition - nearestPointMin; - localNormal *= (1 / dist); //normalize - - penDepth = params->collisionDistance - dist; - } - - if (penDepth > 0) - { - localPosition += localNormal * penDepth; - normal = data.pose.rotate(localNormal); - position = data.pose.transform(localPosition); - updateCollisionVelocity(data, normal, position, velocity); - } - return 1; - } - - uint32_t numBoxes = params->boxes.getSize(); - for (uint32_t i = 0; i < numBoxes; ++i) - { - CollisionBoxData data; - params->boxes.fetchElem(INPLACE_STORAGE_ARGS_VAL, data, i); - - if (!data.aabb.contains(position)) - { - continue; - } - - PxVec3 localPosition = data.inversePose.transform(position); - - - PxVec3 closestPoint = PxVec3(PxClamp(localPosition.x, -data.halfSize.x, data.halfSize.x), PxClamp(localPosition.y, -data.halfSize.y, data.halfSize.y), PxClamp(localPosition.z, -data.halfSize.z, data.halfSize.z)); - PxVec3 v = localPosition - closestPoint; - float vMagnitudeSquared = v.magnitudeSquared(); - if(vMagnitudeSquared > collisionRadius * collisionRadius) continue; //no intersection - - PxBounds3 bounds = PxBounds3(-data.halfSize, data.halfSize); - float penDepth; - - PxVec3 localNormal(0); - if(vMagnitudeSquared > 0) - { - float vMagnitude = PxSqrt(vMagnitudeSquared); - localNormal = v * (1 / vMagnitude); - - penDepth = params->collisionDistance - vMagnitude; - } - else - { - PxVec3 penDepth3D = PxVec3( - data.halfSize.x - PxAbs(localPosition.x), - data.halfSize.y - PxAbs(localPosition.y), - data.halfSize.z - PxAbs(localPosition.z) - ); - float penDepth3Dmin = penDepth3D.minElement(); - - if (penDepth3Dmin == penDepth3D.x) - { - localNormal.x = localPosition.x < 0 ? -1.0f : 1.0f; - } - else if (penDepth3Dmin == penDepth3D.y) - { - localNormal.y = localPosition.y < 0 ? -1.0f : 1.0f; - } - else if (penDepth3Dmin == penDepth3D.z) - { - localNormal.z = localPosition.z < 0 ? -1.0f : 1.0f; - } - - penDepth = params->collisionDistance + penDepth3Dmin; - } - - normal = data.pose.rotate(localNormal); - - if (penDepth > 0) - { - localPosition += localNormal * penDepth; - position = data.pose.transform(localPosition); - - updateCollisionVelocity(data, normal, position, velocity); - } - return 1; - } - - uint32_t numCapsules = params->capsules.getSize(); - for (uint32_t i = 0; i < numCapsules; ++i) - { - CollisionCapsuleData data; - params->capsules.fetchElem(INPLACE_STORAGE_ARGS_VAL, data, i); - - if (!data.aabb.contains(position)) - { - continue; - } - - PxVec3 localPosition = data.inversePose.transform(position); - - // Capsule is Minkowski sum of sphere with segment - const float closestX = PxClamp(localPosition.x, -data.halfHeight, data.halfHeight); - PxVec3 localNormal(localPosition.x - closestX, localPosition.y, localPosition.z); - - float distance = localNormal.magnitude(); - float penDepth = (data.radius - distance); - // No intersection? - if (-penDepth > params->collisionThreshold) - { - continue; - } - if (distance > 0) // avoid division by zero - { - localNormal /= distance; - } - normal = data.pose.rotate(localNormal); - - if (penDepth > 0) - { - localPosition = data.radius * localNormal; - localPosition.x += closestX; - - position = data.pose.transform(localPosition); - - updateCollisionVelocity(data, normal, position, velocity); - } - return 1; - } - - uint32_t numSpheres = params->spheres.getSize(); - for (uint32_t i = 0; i < numSpheres; ++i) - { - CollisionSphereData data; - params->spheres.fetchElem(INPLACE_STORAGE_ARGS_VAL, data, i); - - if (!data.aabb.contains(position)) - { - continue; - } - - PxVec3 localNormal = data.inversePose.transform(position); - float distance = localNormal.magnitude(); - - float penDepth = (data.radius - distance); - // No intersection? - if (-penDepth > params->collisionThreshold) - { - continue; - } - localNormal /= distance; - normal = data.pose.rotate(localNormal); - - if (penDepth > 0) - { - position = data.pose.transform(data.radius * localNormal); - - updateCollisionVelocity(data, normal, position, velocity); - } - return 1; - } - - uint32_t numHalfSpaces = params->halfSpaces.getSize(); - for (uint32_t i = 0; i < numHalfSpaces; ++i) - { - CollisionHalfSpaceData data; - params->halfSpaces.fetchElem(INPLACE_STORAGE_ARGS_VAL, data, i); - - float penDepth = (data.origin - position).dot(data.normal); - - // No intersection? - if (-penDepth > params->collisionThreshold) - { - continue; - } - - normal = data.normal; - if (penDepth > 0) - { - position += penDepth * data.normal; - - updateCollisionVelocity(data, normal, position, velocity); - } - return 1; - } - - return 0; - } - - - -#ifdef __CUDACC__ - __device__ -#endif - PX_INLINE float calcParticleBenefit( - const InjectorParams& inj, const PxVec3& eyePos, - const PxVec3& pos, const PxVec3& vel, float life) - { - float benefit = inj.mLODBias; - //distance term - float distance = (eyePos - pos).magnitude(); - benefit += inj.mLODDistanceWeight * (1.0f - PxMin(1.0f, distance / inj.mLODMaxDistance)); - //velocity term, TODO: clamp velocity - float velMag = vel.magnitude(); - benefit += inj.mLODSpeedWeight * velMag; - //life term - benefit += inj.mLODLifeWeight * life; - - return PxClamp(benefit, 0.0f, 1.0f); - } - - INPLACE_TEMPL_VA_ARGS_DEF(typename FieldAccessor) -#ifdef __CUDACC__ - __device__ -#endif - PX_INLINE float simulateParticle( - const SimulationParams* params, INPLACE_STORAGE_ARGS_DEF, SIM_INJECTOR_ARRAY injectorArray, - float deltaTime, PxVec3 gravity, PxVec3 eyePos, - bool isNewParticle, unsigned int srcIdx, unsigned int dstIdx, - SIM_FLOAT4* memPositionMass, SIM_FLOAT4* memVelocityLife, IofxActorIDIntl* memIofxActorIDs, - float* memLifeSpan, float* memLifeTime, unsigned int* memInjector, SIM_FLOAT4* memCollisionNormalFlags, uint32_t* memUserData, - FieldAccessor& fieldAccessor, unsigned int &injIndex - ) - { - //read - PxVec3 position; - PxVec3 velocity; - float mass = splitFloat4(position, SIM_FETCH(PositionMass, srcIdx)); - splitFloat4(velocity, SIM_FETCH(VelocityLife, srcIdx)); - float lifeSpan = SIM_FETCH(LifeSpan, srcIdx); - unsigned int injector = SIM_FETCH(Injector, srcIdx); - IofxActorIDIntl iofxActorID = IofxActorIDIntl(SIM_FETCH(IofxActorIDs, srcIdx)); - - PxVec3 collisionNormal(0.0f); - uint32_t collisionFlags = 0; - - float lifeTime = lifeSpan; - if (!isNewParticle) - { - using namespace nvidia::apex; - - lifeTime = SIM_FETCH(LifeTime, srcIdx); - - //collide using the old state - collisionFlags = handleCollisions INPLACE_TEMPL_ARGS_VAL (params, INPLACE_STORAGE_ARGS_VAL, position, velocity, collisionNormal); - - //advance to a new state - PxVec3 velocityDelta = deltaTime * gravity; - fieldAccessor(srcIdx, velocityDelta); - - velocity += velocityDelta; - position += deltaTime * velocity; - - lifeTime = PxMax(lifeTime - deltaTime, 0.0f); - } - - InjectorParams injParams; - SIM_FETCH_INJECTOR(injectorArray, injParams, injector); - injIndex = injParams.mLocalIndex; - // injParams.mLODBias == FLT_MAX if injector was released! - // and IOFX returns IofxActorIDIntl::NO_VOLUME for homeless/dead particles - bool validActorID = (injParams.mLODBias < FLT_MAX) - && (isNewParticle || (iofxActorID.getVolumeID() != IofxActorIDIntl::NO_VOLUME)) - && position.isFinite() && velocity.isFinite(); - if (!validActorID) - { - iofxActorID.setActorClassID(IofxActorIDIntl::IPX_ACTOR); - injIndex = UINT32_MAX; - } - - //write - memLifeTime[dstIdx] = lifeTime; - - if (!isNewParticle || dstIdx != srcIdx) - { - memPositionMass[dstIdx] = combineFloat4(position, mass); - memVelocityLife[dstIdx] = combineFloat4(velocity, lifeTime / lifeSpan); - } - if (!validActorID || dstIdx != srcIdx) - { - memIofxActorIDs[dstIdx] = iofxActorID; - } - if (dstIdx != srcIdx) - { - memLifeSpan[dstIdx] = lifeSpan; - memInjector[dstIdx] = injector; - - memUserData[dstIdx] = SIM_FETCH(UserData, srcIdx); - } - memCollisionNormalFlags[dstIdx] = combineFloat4(collisionNormal, SIM_INT_AS_FLOAT(collisionFlags)); - - float benefit = -FLT_MAX; - if (validActorID && lifeTime > 0.0f) - { - benefit = calcParticleBenefit(injParams, eyePos, position, velocity, lifeTime / lifeSpan); - } - return benefit; - } - } - -} // namespace nvidia - -#endif diff --git a/APEX_1.4/module/basicios/include/BasicIosScene.h b/APEX_1.4/module/basicios/include/BasicIosScene.h deleted file mode 100644 index 32691b3f..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosScene.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_SCENE_H__ -#define __BASIC_IOS_SCENE_H__ - -#include "Apex.h" -#include "ModuleBasicIos.h" -#include "ApexSDKIntl.h" -#include "ModuleIntl.h" -#include "ModuleBasicIosImpl.h" -#include "ApexSharedUtils.h" -#include "ApexSDKHelpers.h" -#include "ApexContext.h" -#include "ApexActor.h" -#include "ModulePerfScope.h" - -#include "PsTime.h" - -#include "DebugRenderParams.h" -#include "BasicIosDebugRenderParams.h" - -#include "BasicIosCommon.h" -#include "BasicIosCommonSrc.h" - -#include "FieldSamplerQueryIntl.h" - -#if APEX_CUDA_SUPPORT -#include "../cuda/include/common.h" - -#include "ApexCudaWrapper.h" -#include "CudaModuleScene.h" - -#define SCENE_CUDA_OBJ(scene, name) static_cast<BasicIosSceneGPU&>(scene).APEX_CUDA_OBJ_NAME(name) - -#endif - -namespace nvidia -{ -namespace apex -{ -class RenderDebugInterface; -class FieldSamplerManagerIntl; -} -namespace basicios -{ - -class BasicIosInjectorStorage -{ -public: - virtual bool growInjectorStorage(uint32_t newSize) = 0; -}; -class BasicIosInjectorAllocator -{ -public: - BasicIosInjectorAllocator(BasicIosInjectorStorage* storage) : mStorage(storage) - { - mFreeInjectorListStart = NULL_INJECTOR_INDEX; - mReleasedInjectorListStart = NULL_INJECTOR_INDEX; - } - - uint32_t allocateInjectorID(); - void releaseInjectorID(uint32_t); - void flushReleased(); - - static const uint32_t NULL_INJECTOR_INDEX = 0xFFFFFFFFu; - static const uint32_t USED_INJECTOR_INDEX = 0xFFFFFFFEu; - -private: - BasicIosInjectorStorage* mStorage; - - physx::Array<uint32_t> mInjectorList; - uint32_t mFreeInjectorListStart; - uint32_t mReleasedInjectorListStart; -}; - - -class BasicIosScene : public ModuleSceneIntl, public ApexContext, public ApexResourceInterface, public ApexResource, protected BasicIosInjectorStorage -{ -public: - BasicIosScene(ModuleBasicIosImpl& module, SceneIntl& scene, RenderDebugInterface* renderDebug, ResourceList& list); - ~BasicIosScene(); - - /* ModuleSceneIntl */ - void release() - { - mModule->releaseModuleSceneIntl(*this); - } - - PxScene* getModulePhysXScene() const - { - return mPhysXScene; - } - void setModulePhysXScene(PxScene*); - PxScene* mPhysXScene; - - void visualize(); - - virtual Module* getModule() - { - return mModule; - } - - virtual SceneStats* getStats() - { - return 0; - } - - bool lockRenderResources() - { - renderLockAllActors(); // Lock options not implemented yet - return true; - } - - bool unlockRenderResources() - { - renderUnLockAllActors(); // Lock options not implemented yet - return true; - } - - /* ApexResourceInterface */ - uint32_t getListIndex() const - { - return m_listIndex; - } - void setListIndex(ResourceList& list, uint32_t index) - { - m_listIndex = index; - m_list = &list; - } - - virtual BasicIosActorImpl* createIosActor(ResourceList& list, BasicIosAssetImpl& asset, nvidia::apex::IofxAsset& iofxAsset) = 0; - - virtual void submitTasks(float elapsedTime, float substepSize, uint32_t numSubSteps); - virtual void setTaskDependencies(); - virtual void fetchResults(); - - FieldSamplerManagerIntl* getInternalFieldSamplerManager(); - - SceneIntl& getApexScene() const - { - return *mApexScene; - } - - PX_INLINE BasicIosInjectorAllocator& getInjectorAllocator() - { - return mInjectorAllocator; - } - virtual void fetchInjectorParams(uint32_t injectorID, InjectorParams& injParams) = 0; - virtual void updateInjectorParams(uint32_t injectorID, const InjectorParams& injParams) = 0; - -protected: - virtual void onSimulationStart() {} - virtual void onSimulationFinish() - { - mInjectorAllocator.flushReleased(); - } - - - ModuleBasicIosImpl* mModule; - SceneIntl* mApexScene; - - void destroy(); - - float computeAABBDistanceSquared(const PxBounds3& aabb); - - RenderDebugInterface* mDebugRender; - float mSumBenefit; - - DebugRenderParams* mDebugRenderParams; - BasicIosDebugRenderParams* mBasicIosDebugRenderParams; - - FieldSamplerManagerIntl* mFieldSamplerManager; - - BasicIosInjectorAllocator mInjectorAllocator; - - friend class BasicIosActorImpl; - friend class BasicIosAssetImpl; - friend class ModuleBasicIosImpl; -}; - - -} -} // namespace nvidia - -#endif // __BASIC_IOS_SCENE_H__ diff --git a/APEX_1.4/module/basicios/include/BasicIosSceneCPU.h b/APEX_1.4/module/basicios/include/BasicIosSceneCPU.h deleted file mode 100644 index d0c5913f..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosSceneCPU.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_SCENE_CPU_H__ -#define __BASIC_IOS_SCENE_CPU_H__ - -#if ENABLE_TEST -#include "BasicIosTestScene.h" -#endif -#include "BasicIosScene.h" - -namespace nvidia -{ -namespace basicios -{ - -#if ENABLE_TEST -#define BASIC_IOS_SCENE BasicIosTestScene -#else -#define BASIC_IOS_SCENE BasicIosScene -#endif - -class BasicIosSceneCPU : public BASIC_IOS_SCENE -{ - class TimerCallback : public FieldSamplerCallbackIntl, public IofxManagerCallbackIntl, public UserAllocated - { - shdfnd::Time mTimer; - float mMinTime, mMaxTime; - public: - TimerCallback() {} - void operator()(void* stream = NULL); - void reset(); - float getElapsedTime() const; - }; -public: - BasicIosSceneCPU(ModuleBasicIosImpl& module, SceneIntl& scene, RenderDebugInterface* debugRender, ResourceList& list); - ~BasicIosSceneCPU(); - - virtual BasicIosActorImpl* createIosActor(ResourceList& list, BasicIosAssetImpl& asset, nvidia::apex::IofxAsset& iofxAsset); - - virtual void fetchInjectorParams(uint32_t injectorID, InjectorParams& injParams) - { - PX_ASSERT(injectorID < mInjectorParamsArray.size()); - injParams = mInjectorParamsArray[ injectorID ]; - } - virtual void updateInjectorParams(uint32_t injectorID, const InjectorParams& injParams) - { - PX_ASSERT(injectorID < mInjectorParamsArray.size()); - mInjectorParamsArray[ injectorID ] = injParams; - } - - void fetchResults(); - -protected: - virtual void setCallbacks(BasicIosActorCPU* actor); - virtual bool growInjectorStorage(uint32_t newSize) - { - mInjectorParamsArray.resize(newSize); - return true; - } - -private: - physx::Array<InjectorParams> mInjectorParamsArray; - TimerCallback mTimerCallback; - - friend class BasicIosActorCPU; -}; - -} -} // namespace nvidia - -#endif // __BASIC_IOS_SCENE_H__ diff --git a/APEX_1.4/module/basicios/include/BasicIosSceneGPU.h b/APEX_1.4/module/basicios/include/BasicIosSceneGPU.h deleted file mode 100644 index 26fa5f51..00000000 --- a/APEX_1.4/module/basicios/include/BasicIosSceneGPU.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __BASIC_IOS_SCENE_GPU_H__ -#define __BASIC_IOS_SCENE_GPU_H__ - -#if ENABLE_TEST -#include "BasicIosTestScene.h" -#endif -#include "BasicIosScene.h" - -#include "../cuda/include/common.h" - -#include "ApexCudaWrapper.h" -#include "CudaModuleScene.h" - -#define SCENE_CUDA_OBJ(scene, name) static_cast<BasicIosSceneGPU&>(scene).APEX_CUDA_OBJ_NAME(name) - -namespace nvidia -{ -namespace basicios -{ - -#if ENABLE_TEST -#define BASIC_IOS_SCENE BasicIosTestScene -#else -#define BASIC_IOS_SCENE BasicIosScene -#endif - -class BasicIosSceneGPU : public BASIC_IOS_SCENE, public CudaModuleScene -{ - class EventCallback : public FieldSamplerCallbackIntl, public IofxManagerCallbackIntl, public UserAllocated - { - void* mEvent; - public: - EventCallback(); - void init(); - virtual ~EventCallback(); - void operator()(void* stream); - PX_INLINE void* getEvent() - { - return mEvent; - } - bool mIsCalled; - }; -public: - BasicIosSceneGPU(ModuleBasicIosImpl& module, SceneIntl& scene, RenderDebugInterface* debugRender, ResourceList& list); - ~BasicIosSceneGPU(); - - virtual BasicIosActorImpl* createIosActor(ResourceList& list, BasicIosAssetImpl& asset, nvidia::apex::IofxAsset& iofxAsset); - - virtual void fetchInjectorParams(uint32_t injectorID, InjectorParams& injParams); - virtual void updateInjectorParams(uint32_t injectorID, const InjectorParams& injParams); - - virtual void fetchResults(); - - void* getHeadCudaObj() - { - return CudaModuleScene::getHeadCudaObj(); - } - -//CUDA module objects -#include "../cuda/include/moduleList.h" - -protected: - virtual void setCallbacks(BasicIosActorGPU* actor); - virtual bool growInjectorStorage(uint32_t newSize); - - void onSimulationStart(); - -private: - ApexCudaConstMemGroup mInjectorConstMemGroup; - InplaceHandle<InjectorParamsArray> mInjectorParamsArrayHandle; - - EventCallback mOnSimulationStart; - physx::Array<EventCallback*> mOnStartCallbacks; - physx::Array<EventCallback*> mOnFinishCallbacks; - - friend class BasicIosActorGPU; -}; - -} -} // namespace nvidia - -#endif // __BASIC_IOS_SCENE_H__ diff --git a/APEX_1.4/module/basicios/include/ModuleBasicIosImpl.h b/APEX_1.4/module/basicios/include/ModuleBasicIosImpl.h deleted file mode 100644 index c0543e77..00000000 --- a/APEX_1.4/module/basicios/include/ModuleBasicIosImpl.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __MODULE_BASIC_IOS_IMPL_H__ -#define __MODULE_BASIC_IOS_IMPL_H__ - -#include "Apex.h" -#include "ModuleBasicIos.h" -#include "ApexSDKIntl.h" -#include "ModuleBase.h" -#include "ModuleIntl.h" -#include "ResourceProviderIntl.h" -#include "ApexSharedUtils.h" -#include "ApexSDKHelpers.h" -#include "ModulePerfScope.h" -#include "ApexAuthorableObject.h" -#include "BasicIosAssetImpl.h" -#include "ModuleBasicIosRegistration.h" -#include "ApexRWLockable.h" - -namespace nvidia -{ -namespace apex -{ -class ModuleIofxIntl; -class ModuleFieldSamplerIntl; -} -namespace basicios -{ - -class BasicIosScene; - -/** -\brief ModuleBase descriptor for BasicIOS module -*/ -class ModuleBasicIosDesc : public ApexDesc -{ -public: - - /** - \brief constructor sets to default. - */ - PX_INLINE ModuleBasicIosDesc() : ApexDesc() - { - init(); - } - - /** - \brief sets members to default values. - */ - PX_INLINE void setToDefault() - { - ApexDesc::setToDefault(); - init(); - } - - /** - \brief checks if this is a valid descriptor. - */ - PX_INLINE bool isValid() const - { - bool retVal = ApexDesc::isValid(); - return retVal; - } - -private: - - PX_INLINE void init() - { - } -}; - -class ModuleBasicIosImpl : public ModuleBasicIos, public ModuleIntl, public ModuleBase, public ApexRWLockable -{ -public: - APEX_RW_LOCKABLE_BOILERPLATE - - ModuleBasicIosImpl(ApexSDKIntl* sdk); - ~ModuleBasicIosImpl(); - - void init(const ModuleBasicIosDesc& desc); - - // base class methods - void init(NvParameterized::Interface&); - NvParameterized::Interface* getDefaultModuleDesc(); - void release() - { - ModuleBase::release(); - } - void destroy(); - const char* getName() const - { - return ModuleBase::getName(); - } - - //BasicIosActor * getApexActor( Scene* scene, AuthObjTypeID type ) const; - ApexActor* getApexActor(Actor* nxactor, AuthObjTypeID type) const; - - ModuleSceneIntl* createInternalModuleScene(SceneIntl&, RenderDebugInterface*); - void releaseModuleSceneIntl(ModuleSceneIntl&); - uint32_t forceLoadAssets(); - AuthObjTypeID getModuleID() const; - RenderableIterator* createRenderableIterator(const Scene&); - - virtual const char* getBasicIosTypeName(); - - BasicIosScene* getBasicIosScene(const Scene& scene); - const BasicIosScene* getBasicIosScene(const Scene& scene) const; - - ModuleIofxIntl* getInternalModuleIofx(); - ModuleFieldSamplerIntl* getInternalModuleFieldSampler(); - - const TestBase* getTestBase(Scene* apexScene) const; - -protected: - - ResourceList mBasicIosSceneList; - ResourceList mAuthorableObjects; - - friend class BasicIosScene; -private: - BasicIosModuleParameters* mModuleParams; - - ModuleIofxIntl* mIofxModule; - ModuleFieldSamplerIntl* mFieldSamplerModule; -}; - -} -} // namespace nvidia - -#endif // __MODULE_BASIC_IOS_IMPL_H__ diff --git a/APEX_1.4/module/basicios/include/ModuleEventDefs.h b/APEX_1.4/module/basicios/include/ModuleEventDefs.h deleted file mode 100644 index cf9f4171..00000000 --- a/APEX_1.4/module/basicios/include/ModuleEventDefs.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -// This file is used to define a list of AgPerfMon events. -// -// This file is included exclusively by AgPerfMonEventSrcAPI.h -// and by AgPerfMonEventSrcAPI.cpp, for the purpose of building -// an enumeration (enum xx) and an array of strings () -// that contain the list of events. -// -// This file should only contain event definitions, using the -// DEFINE_EVENT macro. E.g.: -// -// DEFINE_EVENT(sample_name_1) -// DEFINE_EVENT(sample_name_2) -// DEFINE_EVENT(sample_name_3) - -DEFINE_EVENT(BasicIosSceneFetchResults) -DEFINE_EVENT(BasicIosCreateObjects) -DEFINE_EVENT(BasicIosFetchResults) - - diff --git a/APEX_1.4/module/basicios/include/ModuleName.h b/APEX_1.4/module/basicios/include/ModuleName.h deleted file mode 100644 index 6620ac06..00000000 --- a/APEX_1.4/module/basicios/include/ModuleName.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __MODULE_NAME_H___ -#define __MODULE_NAME_H___ - -#define MODULE_NAMESPACE basicios - -#endif
\ No newline at end of file diff --git a/APEX_1.4/module/basicios/include/ModulePerfScope.h b/APEX_1.4/module/basicios/include/ModulePerfScope.h deleted file mode 100644 index fe58f327..00000000 --- a/APEX_1.4/module/basicios/include/ModulePerfScope.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#ifndef __MODULE_PERF_SCOPE_H___ -#define __MODULE_PERF_SCOPE_H___ - -#define MODULE_NAMESPACE basicios -#include "ModuleProfileCommon.h" - -#endif
\ No newline at end of file diff --git a/APEX_1.4/module/basicios/include/autogen/BasicIOSAssetParam.h b/APEX_1.4/module/basicios/include/autogen/BasicIOSAssetParam.h deleted file mode 100644 index 4e66e462..00000000 --- a/APEX_1.4/module/basicios/include/autogen/BasicIOSAssetParam.h +++ /dev/null @@ -1,282 +0,0 @@ -// 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) 2008-2015 NVIDIA Corporation. All rights reserved. - -// This file was generated by NvParameterized/scripts/GenParameterized.pl - - -#ifndef HEADER_BasicIOSAssetParam_h -#define HEADER_BasicIOSAssetParam_h - -#include "NvParametersTypes.h" - -#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS -#include "nvparameterized/NvParameterized.h" -#include "nvparameterized/NvParameterizedTraits.h" -#include "NvParameters.h" -#include "NvTraitsInternal.h" -#endif - -namespace nvidia -{ -namespace basicios -{ - -#if PX_VC -#pragma warning(push) -#pragma warning(disable: 4324) // structure was padded due to __declspec(align()) -#endif - -namespace BasicIOSAssetParamNS -{ - -struct RandomF32_Type; -struct GridDensityParams_Type; -struct ParticleToGridCouplingParams_Type; -struct GridToParticleCouplingParams_Type; - -struct ParticleToGridCouplingParams_Type -{ - float accelTimeConstant; - float decelTimeConstant; - float thresholdMultiplier; -}; -struct GridDensityParams_Type -{ - bool Enabled; - const char* Resolution; - float GridSize; - uint32_t MaxCellCount; -}; -struct GridToParticleCouplingParams_Type -{ - float accelTimeConstant; - float decelTimeConstant; - float thresholdMultiplier; -}; -struct RandomF32_Type -{ - float center; - float spread; - const char* type; -}; - -struct ParametersStruct -{ - - float restDensity; - float particleRadius; - uint32_t maxParticleCount; - float maxInjectedParticleCount; - uint32_t maxCollidingObjects; - float sceneGravityScale; - physx::PxVec3 externalAcceleration; - RandomF32_Type particleMass; - NvParameterized::DummyStringStruct collisionFilterDataName; - NvParameterized::DummyStringStruct fieldSamplerFilterDataName; - bool staticCollision; - float restitutionForStaticShapes; - bool dynamicCollision; - float restitutionForDynamicShapes; - float collisionDistanceMultiplier; - float collisionThreshold; - bool collisionWithConvex; - bool collisionWithTriangleMesh; - GridDensityParams_Type GridDensity; - bool enableTemperatureBuffer; - bool enableDensityBuffer; - bool enableCouplingOverride; - ParticleToGridCouplingParams_Type particleToGridCoupling; - GridToParticleCouplingParams_Type gridToParticleCoupling; - -}; - -static const uint32_t checksum[] = { 0xd1ae20ca, 0xe79f585e, 0x9ab86d65, 0x9964607a, }; - -} // namespace BasicIOSAssetParamNS - -#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS -class BasicIOSAssetParam : public NvParameterized::NvParameters, public BasicIOSAssetParamNS::ParametersStruct -{ -public: - BasicIOSAssetParam(NvParameterized::Traits* traits, void* buf = 0, int32_t* refCount = 0); - - virtual ~BasicIOSAssetParam(); - - virtual void destroy(); - - static const char* staticClassName(void) - { - return("BasicIOSAssetParam"); - } - - const char* className(void) const - { - return(staticClassName()); - } - - static const uint32_t ClassVersion = ((uint32_t)1 << 16) + (uint32_t)4; - - static uint32_t staticVersion(void) - { - return ClassVersion; - } - - uint32_t version(void) const - { - return(staticVersion()); - } - - static const uint32_t ClassAlignment = 8; - - static const uint32_t* staticChecksum(uint32_t& bits) - { - bits = 8 * sizeof(BasicIOSAssetParamNS::checksum); - return BasicIOSAssetParamNS::checksum; - } - - static void freeParameterDefinitionTable(NvParameterized::Traits* traits); - - const uint32_t* checksum(uint32_t& bits) const - { - return staticChecksum(bits); - } - - const BasicIOSAssetParamNS::ParametersStruct& parameters(void) const - { - BasicIOSAssetParam* tmpThis = const_cast<BasicIOSAssetParam*>(this); - return *(static_cast<BasicIOSAssetParamNS::ParametersStruct*>(tmpThis)); - } - - BasicIOSAssetParamNS::ParametersStruct& parameters(void) - { - return *(static_cast<BasicIOSAssetParamNS::ParametersStruct*>(this)); - } - - virtual NvParameterized::ErrorType getParameterHandle(const char* long_name, NvParameterized::Handle& handle) const; - virtual NvParameterized::ErrorType getParameterHandle(const char* long_name, NvParameterized::Handle& handle); - - void initDefaults(void); - -protected: - - virtual const NvParameterized::DefinitionImpl* getParameterDefinitionTree(void); - virtual const NvParameterized::DefinitionImpl* getParameterDefinitionTree(void) const; - - - virtual void getVarPtr(const NvParameterized::Handle& handle, void*& ptr, size_t& offset) const; - -private: - - void buildTree(void); - void initDynamicArrays(void); - void initStrings(void); - void initReferences(void); - void freeDynamicArrays(void); - void freeStrings(void); - void freeReferences(void); - - static bool mBuiltFlag; - static NvParameterized::MutexType mBuiltFlagMutex; -}; - -class BasicIOSAssetParamFactory : public NvParameterized::Factory -{ - static const char* const vptr; - -public: - - virtual void freeParameterDefinitionTable(NvParameterized::Traits* traits) - { - BasicIOSAssetParam::freeParameterDefinitionTable(traits); - } - - virtual NvParameterized::Interface* create(NvParameterized::Traits* paramTraits) - { - // placement new on this class using mParameterizedTraits - - void* newPtr = paramTraits->alloc(sizeof(BasicIOSAssetParam), BasicIOSAssetParam::ClassAlignment); - if (!NvParameterized::IsAligned(newPtr, BasicIOSAssetParam::ClassAlignment)) - { - NV_PARAM_TRAITS_WARNING(paramTraits, "Unaligned memory allocation for class BasicIOSAssetParam"); - paramTraits->free(newPtr); - return 0; - } - - memset(newPtr, 0, sizeof(BasicIOSAssetParam)); // always initialize memory allocated to zero for default values - return NV_PARAM_PLACEMENT_NEW(newPtr, BasicIOSAssetParam)(paramTraits); - } - - virtual NvParameterized::Interface* finish(NvParameterized::Traits* paramTraits, void* bufObj, void* bufStart, int32_t* refCount) - { - if (!NvParameterized::IsAligned(bufObj, BasicIOSAssetParam::ClassAlignment) - || !NvParameterized::IsAligned(bufStart, BasicIOSAssetParam::ClassAlignment)) - { - NV_PARAM_TRAITS_WARNING(paramTraits, "Unaligned memory allocation for class BasicIOSAssetParam"); - return 0; - } - - // Init NvParameters-part - // We used to call empty constructor of BasicIOSAssetParam here - // but it may call default constructors of members and spoil the data - NV_PARAM_PLACEMENT_NEW(bufObj, NvParameterized::NvParameters)(paramTraits, bufStart, refCount); - - // Init vtable (everything else is already initialized) - *(const char**)bufObj = vptr; - - return (BasicIOSAssetParam*)bufObj; - } - - virtual const char* getClassName() - { - return (BasicIOSAssetParam::staticClassName()); - } - - virtual uint32_t getVersion() - { - return (BasicIOSAssetParam::staticVersion()); - } - - virtual uint32_t getAlignment() - { - return (BasicIOSAssetParam::ClassAlignment); - } - - virtual const uint32_t* getChecksum(uint32_t& bits) - { - return (BasicIOSAssetParam::staticChecksum(bits)); - } -}; -#endif // NV_PARAMETERIZED_ONLY_LAYOUTS - -} // namespace basicios -} // namespace nvidia - -#if PX_VC -#pragma warning(pop) -#endif - -#endif diff --git a/APEX_1.4/module/basicios/include/autogen/BasicIosDebugRenderParams.h b/APEX_1.4/module/basicios/include/autogen/BasicIosDebugRenderParams.h deleted file mode 100644 index caca5349..00000000 --- a/APEX_1.4/module/basicios/include/autogen/BasicIosDebugRenderParams.h +++ /dev/null @@ -1,232 +0,0 @@ -// 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) 2008-2015 NVIDIA Corporation. All rights reserved. - -// This file was generated by NvParameterized/scripts/GenParameterized.pl - - -#ifndef HEADER_BasicIosDebugRenderParams_h -#define HEADER_BasicIosDebugRenderParams_h - -#include "NvParametersTypes.h" - -#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS -#include "nvparameterized/NvParameterized.h" -#include "nvparameterized/NvParameterizedTraits.h" -#include "NvParameters.h" -#include "NvTraitsInternal.h" -#endif - -namespace nvidia -{ -namespace basicios -{ - -#if PX_VC -#pragma warning(push) -#pragma warning(disable: 4324) // structure was padded due to __declspec(align()) -#endif - -namespace BasicIosDebugRenderParamsNS -{ - - - -struct ParametersStruct -{ - - bool VISUALIZE_BASIC_IOS_ACTOR; - bool VISUALIZE_BASIC_IOS_COLLIDE_SHAPES; - bool VISUALIZE_BASIC_IOS_GRID_DENSITY; - -}; - -static const uint32_t checksum[] = { 0xfdf6893d, 0xf8944ef9, 0x2d74bc9a, 0x7fb067bf, }; - -} // namespace BasicIosDebugRenderParamsNS - -#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS -class BasicIosDebugRenderParams : public NvParameterized::NvParameters, public BasicIosDebugRenderParamsNS::ParametersStruct -{ -public: - BasicIosDebugRenderParams(NvParameterized::Traits* traits, void* buf = 0, int32_t* refCount = 0); - - virtual ~BasicIosDebugRenderParams(); - - virtual void destroy(); - - static const char* staticClassName(void) - { - return("BasicIosDebugRenderParams"); - } - - const char* className(void) const - { - return(staticClassName()); - } - - static const uint32_t ClassVersion = ((uint32_t)0 << 16) + (uint32_t)0; - - static uint32_t staticVersion(void) - { - return ClassVersion; - } - - uint32_t version(void) const - { - return(staticVersion()); - } - - static const uint32_t ClassAlignment = 8; - - static const uint32_t* staticChecksum(uint32_t& bits) - { - bits = 8 * sizeof(BasicIosDebugRenderParamsNS::checksum); - return BasicIosDebugRenderParamsNS::checksum; - } - - static void freeParameterDefinitionTable(NvParameterized::Traits* traits); - - const uint32_t* checksum(uint32_t& bits) const - { - return staticChecksum(bits); - } - - const BasicIosDebugRenderParamsNS::ParametersStruct& parameters(void) const - { - BasicIosDebugRenderParams* tmpThis = const_cast<BasicIosDebugRenderParams*>(this); - return *(static_cast<BasicIosDebugRenderParamsNS::ParametersStruct*>(tmpThis)); - } - - BasicIosDebugRenderParamsNS::ParametersStruct& parameters(void) - { - return *(static_cast<BasicIosDebugRenderParamsNS::ParametersStruct*>(this)); - } - - virtual NvParameterized::ErrorType getParameterHandle(const char* long_name, NvParameterized::Handle& handle) const; - virtual NvParameterized::ErrorType getParameterHandle(const char* long_name, NvParameterized::Handle& handle); - - void initDefaults(void); - -protected: - - virtual const NvParameterized::DefinitionImpl* getParameterDefinitionTree(void); - virtual const NvParameterized::DefinitionImpl* getParameterDefinitionTree(void) const; - - - virtual void getVarPtr(const NvParameterized::Handle& handle, void*& ptr, size_t& offset) const; - -private: - - void buildTree(void); - void initDynamicArrays(void); - void initStrings(void); - void initReferences(void); - void freeDynamicArrays(void); - void freeStrings(void); - void freeReferences(void); - - static bool mBuiltFlag; - static NvParameterized::MutexType mBuiltFlagMutex; -}; - -class BasicIosDebugRenderParamsFactory : public NvParameterized::Factory -{ - static const char* const vptr; - -public: - - virtual void freeParameterDefinitionTable(NvParameterized::Traits* traits) - { - BasicIosDebugRenderParams::freeParameterDefinitionTable(traits); - } - - virtual NvParameterized::Interface* create(NvParameterized::Traits* paramTraits) - { - // placement new on this class using mParameterizedTraits - - void* newPtr = paramTraits->alloc(sizeof(BasicIosDebugRenderParams), BasicIosDebugRenderParams::ClassAlignment); - if (!NvParameterized::IsAligned(newPtr, BasicIosDebugRenderParams::ClassAlignment)) - { - NV_PARAM_TRAITS_WARNING(paramTraits, "Unaligned memory allocation for class BasicIosDebugRenderParams"); - paramTraits->free(newPtr); - return 0; - } - - memset(newPtr, 0, sizeof(BasicIosDebugRenderParams)); // always initialize memory allocated to zero for default values - return NV_PARAM_PLACEMENT_NEW(newPtr, BasicIosDebugRenderParams)(paramTraits); - } - - virtual NvParameterized::Interface* finish(NvParameterized::Traits* paramTraits, void* bufObj, void* bufStart, int32_t* refCount) - { - if (!NvParameterized::IsAligned(bufObj, BasicIosDebugRenderParams::ClassAlignment) - || !NvParameterized::IsAligned(bufStart, BasicIosDebugRenderParams::ClassAlignment)) - { - NV_PARAM_TRAITS_WARNING(paramTraits, "Unaligned memory allocation for class BasicIosDebugRenderParams"); - return 0; - } - - // Init NvParameters-part - // We used to call empty constructor of BasicIosDebugRenderParams here - // but it may call default constructors of members and spoil the data - NV_PARAM_PLACEMENT_NEW(bufObj, NvParameterized::NvParameters)(paramTraits, bufStart, refCount); - - // Init vtable (everything else is already initialized) - *(const char**)bufObj = vptr; - - return (BasicIosDebugRenderParams*)bufObj; - } - - virtual const char* getClassName() - { - return (BasicIosDebugRenderParams::staticClassName()); - } - - virtual uint32_t getVersion() - { - return (BasicIosDebugRenderParams::staticVersion()); - } - - virtual uint32_t getAlignment() - { - return (BasicIosDebugRenderParams::ClassAlignment); - } - - virtual const uint32_t* getChecksum(uint32_t& bits) - { - return (BasicIosDebugRenderParams::staticChecksum(bits)); - } -}; -#endif // NV_PARAMETERIZED_ONLY_LAYOUTS - -} // namespace basicios -} // namespace nvidia - -#if PX_VC -#pragma warning(pop) -#endif - -#endif diff --git a/APEX_1.4/module/basicios/include/autogen/BasicIosModuleParameters.h b/APEX_1.4/module/basicios/include/autogen/BasicIosModuleParameters.h deleted file mode 100644 index 6a382a80..00000000 --- a/APEX_1.4/module/basicios/include/autogen/BasicIosModuleParameters.h +++ /dev/null @@ -1,230 +0,0 @@ -// 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) 2008-2015 NVIDIA Corporation. All rights reserved. - -// This file was generated by NvParameterized/scripts/GenParameterized.pl - - -#ifndef HEADER_BasicIosModuleParameters_h -#define HEADER_BasicIosModuleParameters_h - -#include "NvParametersTypes.h" - -#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS -#include "nvparameterized/NvParameterized.h" -#include "nvparameterized/NvParameterizedTraits.h" -#include "NvParameters.h" -#include "NvTraitsInternal.h" -#endif - -namespace nvidia -{ -namespace basicios -{ - -#if PX_VC -#pragma warning(push) -#pragma warning(disable: 4324) // structure was padded due to __declspec(align()) -#endif - -namespace BasicIosModuleParametersNS -{ - - - -struct ParametersStruct -{ - - uint32_t unused; - -}; - -static const uint32_t checksum[] = { 0x3fbae874, 0x2a648c69, 0x7ac9c757, 0x46be4dcd, }; - -} // namespace BasicIosModuleParametersNS - -#ifndef NV_PARAMETERIZED_ONLY_LAYOUTS -class BasicIosModuleParameters : public NvParameterized::NvParameters, public BasicIosModuleParametersNS::ParametersStruct -{ -public: - BasicIosModuleParameters(NvParameterized::Traits* traits, void* buf = 0, int32_t* refCount = 0); - - virtual ~BasicIosModuleParameters(); - - virtual void destroy(); - - static const char* staticClassName(void) - { - return("BasicIosModuleParameters"); - } - - const char* className(void) const - { - return(staticClassName()); - } - - static const uint32_t ClassVersion = ((uint32_t)0 << 16) + (uint32_t)0; - - static uint32_t staticVersion(void) - { - return ClassVersion; - } - - uint32_t version(void) const - { - return(staticVersion()); - } - - static const uint32_t ClassAlignment = 8; - - static const uint32_t* staticChecksum(uint32_t& bits) - { - bits = 8 * sizeof(BasicIosModuleParametersNS::checksum); - return BasicIosModuleParametersNS::checksum; - } - - static void freeParameterDefinitionTable(NvParameterized::Traits* traits); - - const uint32_t* checksum(uint32_t& bits) const - { - return staticChecksum(bits); - } - - const BasicIosModuleParametersNS::ParametersStruct& parameters(void) const - { - BasicIosModuleParameters* tmpThis = const_cast<BasicIosModuleParameters*>(this); - return *(static_cast<BasicIosModuleParametersNS::ParametersStruct*>(tmpThis)); - } - - BasicIosModuleParametersNS::ParametersStruct& parameters(void) - { - return *(static_cast<BasicIosModuleParametersNS::ParametersStruct*>(this)); - } - - virtual NvParameterized::ErrorType getParameterHandle(const char* long_name, NvParameterized::Handle& handle) const; - virtual NvParameterized::ErrorType getParameterHandle(const char* long_name, NvParameterized::Handle& handle); - - void initDefaults(void); - -protected: - - virtual const NvParameterized::DefinitionImpl* getParameterDefinitionTree(void); - virtual const NvParameterized::DefinitionImpl* getParameterDefinitionTree(void) const; - - - virtual void getVarPtr(const NvParameterized::Handle& handle, void*& ptr, size_t& offset) const; - -private: - - void buildTree(void); - void initDynamicArrays(void); - void initStrings(void); - void initReferences(void); - void freeDynamicArrays(void); - void freeStrings(void); - void freeReferences(void); - - static bool mBuiltFlag; - static NvParameterized::MutexType mBuiltFlagMutex; -}; - -class BasicIosModuleParametersFactory : public NvParameterized::Factory -{ - static const char* const vptr; - -public: - - virtual void freeParameterDefinitionTable(NvParameterized::Traits* traits) - { - BasicIosModuleParameters::freeParameterDefinitionTable(traits); - } - - virtual NvParameterized::Interface* create(NvParameterized::Traits* paramTraits) - { - // placement new on this class using mParameterizedTraits - - void* newPtr = paramTraits->alloc(sizeof(BasicIosModuleParameters), BasicIosModuleParameters::ClassAlignment); - if (!NvParameterized::IsAligned(newPtr, BasicIosModuleParameters::ClassAlignment)) - { - NV_PARAM_TRAITS_WARNING(paramTraits, "Unaligned memory allocation for class BasicIosModuleParameters"); - paramTraits->free(newPtr); - return 0; - } - - memset(newPtr, 0, sizeof(BasicIosModuleParameters)); // always initialize memory allocated to zero for default values - return NV_PARAM_PLACEMENT_NEW(newPtr, BasicIosModuleParameters)(paramTraits); - } - - virtual NvParameterized::Interface* finish(NvParameterized::Traits* paramTraits, void* bufObj, void* bufStart, int32_t* refCount) - { - if (!NvParameterized::IsAligned(bufObj, BasicIosModuleParameters::ClassAlignment) - || !NvParameterized::IsAligned(bufStart, BasicIosModuleParameters::ClassAlignment)) - { - NV_PARAM_TRAITS_WARNING(paramTraits, "Unaligned memory allocation for class BasicIosModuleParameters"); - return 0; - } - - // Init NvParameters-part - // We used to call empty constructor of BasicIosModuleParameters here - // but it may call default constructors of members and spoil the data - NV_PARAM_PLACEMENT_NEW(bufObj, NvParameterized::NvParameters)(paramTraits, bufStart, refCount); - - // Init vtable (everything else is already initialized) - *(const char**)bufObj = vptr; - - return (BasicIosModuleParameters*)bufObj; - } - - virtual const char* getClassName() - { - return (BasicIosModuleParameters::staticClassName()); - } - - virtual uint32_t getVersion() - { - return (BasicIosModuleParameters::staticVersion()); - } - - virtual uint32_t getAlignment() - { - return (BasicIosModuleParameters::ClassAlignment); - } - - virtual const uint32_t* getChecksum(uint32_t& bits) - { - return (BasicIosModuleParameters::staticChecksum(bits)); - } -}; -#endif // NV_PARAMETERIZED_ONLY_LAYOUTS - -} // namespace basicios -} // namespace nvidia - -#if PX_VC -#pragma warning(pop) -#endif - -#endif diff --git a/APEX_1.4/module/basicios/include/autogen/ModuleBasicIosRegistration.h b/APEX_1.4/module/basicios/include/autogen/ModuleBasicIosRegistration.h deleted file mode 100644 index e5324edf..00000000 --- a/APEX_1.4/module/basicios/include/autogen/ModuleBasicIosRegistration.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - -#ifndef MODULE_MODULEBASICIOSREGISTRATIONH_H -#define MODULE_MODULEBASICIOSREGISTRATIONH_H - -#include "PsAllocator.h" -#include "NvRegistrationsForTraitsBase.h" -#include "nvparameterized/NvParameterizedTraits.h" -#include "PxAssert.h" -#include <stdint.h> - -// INCLUDE GENERATED FACTORIES -#include "BasicIOSAssetParam.h" -#include "BasicIosDebugRenderParams.h" -#include "BasicIosModuleParameters.h" - - -// INCLUDE GENERATED CONVERSION - - -namespace nvidia { -namespace basicios { - - -class ModuleBasicIosRegistration : public NvParameterized::RegistrationsForTraitsBase -{ -public: - static void invokeRegistration(NvParameterized::Traits* parameterizedTraits) - { - if (parameterizedTraits) - { - ModuleBasicIosRegistration().registerAll(*parameterizedTraits); - } - } - - static void invokeUnregistration(NvParameterized::Traits* parameterizedTraits) - { - if (parameterizedTraits) - { - ModuleBasicIosRegistration().unregisterAll(*parameterizedTraits); - } - } - - void registerAvailableFactories(NvParameterized::Traits& parameterizedTraits) - { - ::NvParameterized::Factory* factoriesToRegister[] = { -// REGISTER GENERATED FACTORIES - new nvidia::basicios::BasicIOSAssetParamFactory(), - new nvidia::basicios::BasicIosDebugRenderParamsFactory(), - new nvidia::basicios::BasicIosModuleParametersFactory(), - - }; - - for (size_t i = 0; i < sizeof(factoriesToRegister)/sizeof(factoriesToRegister[0]); ++i) - { - parameterizedTraits.registerFactory(*factoriesToRegister[i]); - } - } - - virtual void registerAvailableConverters(NvParameterized::Traits& parameterizedTraits) - { -// REGISTER GENERATED CONVERSION -PX_UNUSED(parameterizedTraits); - - } - - void unregisterAvailableFactories(NvParameterized::Traits& parameterizedTraits) - { - struct FactoryDesc - { - const char* name; - uint32_t version; - }; - - ::NvParameterized::Factory* factoriesToUnregister[] = { -// UNREGISTER GENERATED FACTORIES - new nvidia::basicios::BasicIOSAssetParamFactory(), - new nvidia::basicios::BasicIosDebugRenderParamsFactory(), - new nvidia::basicios::BasicIosModuleParametersFactory(), - - }; - - for (size_t i = 0; i < sizeof(factoriesToUnregister)/sizeof(factoriesToUnregister[0]); ++i) - { - ::NvParameterized::Factory* removedFactory = parameterizedTraits.removeFactory(factoriesToUnregister[i]->getClassName(), factoriesToUnregister[i]->getVersion()); - if (!removedFactory) - { - PX_ASSERT_WITH_MESSAGE(0, "Factory can not be removed!"); - } - else - { - removedFactory->freeParameterDefinitionTable(¶meterizedTraits); - delete removedFactory; - delete factoriesToUnregister[i]; - } - } - } - - virtual void unregisterAvailableConverters(NvParameterized::Traits& parameterizedTraits) - { -// UNREGISTER GENERATED CONVERSION -PX_UNUSED(parameterizedTraits); - - } - -}; - - -} -} //nvidia::basicios - -#endif diff --git a/APEX_1.4/module/basicios/src/BasicIosActorCPU.cpp b/APEX_1.4/module/basicios/src/BasicIosActorCPU.cpp deleted file mode 100644 index aec76a88..00000000 --- a/APEX_1.4/module/basicios/src/BasicIosActorCPU.cpp +++ /dev/null @@ -1,318 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "Apex.h" -#include "SceneIntl.h" -#include "ApexSDKIntl.h" - -#include "BasicIosActor.h" -#include "BasicIosActorCPU.h" -#include "BasicIosAssetImpl.h" -#include "IofxAsset.h" -#include "IofxActor.h" -#include "ModuleBasicIosImpl.h" -#include "BasicIosSceneCPU.h" -#include "RenderDebugInterface.h" -#include "AuthorableObjectIntl.h" -#include "FieldSamplerQueryIntl.h" -#include "PxMath.h" -#include "ApexMirroredArray.h" - -namespace nvidia -{ -namespace basicios -{ - -#pragma warning(disable: 4355) // 'this' : used in base member initializer list - -BasicIosActorCPU::BasicIosActorCPU( - ResourceList& list, - BasicIosAssetImpl& asset, - BasicIosScene& scene, - nvidia::apex::IofxAsset& iofxAsset) - : BASIC_IOS_ACTOR(list, asset, scene, iofxAsset, false) - , mSimulateTask(*this) -{ - initStorageGroups(mSimulationStorage); - - mLifeTime.setSize(mMaxParticleCount); - mLifeSpan.setSize(mMaxTotalParticleCount); - mInjector.setSize(mMaxTotalParticleCount); - mBenefit.setSize(mMaxTotalParticleCount); - - if (mAsset->mParams->collisionWithConvex) - { - mConvexPlanes.reserve(MAX_CONVEX_PLANES_COUNT); - mConvexVerts.reserve(MAX_CONVEX_VERTS_COUNT); - mConvexPolygonsData.reserve(MAX_CONVEX_POLYGONS_DATA_SIZE); - } - if (mAsset->mParams->collisionWithTriangleMesh) - { - mTrimeshVerts.reserve(MAX_TRIMESH_VERTS_COUNT); - mTrimeshIndices.reserve(MAX_TRIMESH_INDICES_COUNT); - } - - mNewIndices.resize(mMaxParticleCount); -} -BasicIosActorCPU::~BasicIosActorCPU() -{ -} - -void BasicIosActorCPU::submitTasks() -{ - BasicIosActorImpl::submitTasks(); - - mInjectorsCounters.setSize(mInjectorList.getSize(), ApexMirroredPlace::CPU); - PxTaskManager* tm = mBasicIosScene->getApexScene().getTaskManager(); - tm->submitUnnamedTask(mSimulateTask); -} - -void BasicIosActorCPU::setTaskDependencies() -{ - BasicIosActorImpl::setTaskDependencies(&mSimulateTask, false); -} - -void BasicIosActorCPU::fetchResults() -{ - BASIC_IOS_ACTOR::fetchResults(); -} - -namespace -{ -class FieldAccessor -{ - const PxVec4* mField; -public: - explicit FieldAccessor(const PxVec4* field) - { - mField = field; - } - - PX_INLINE void operator()(unsigned int srcIdx, PxVec3& velocityDelta) - { - if (mField != NULL) - { - velocityDelta += mField[srcIdx].getXYZ(); - } - } -}; -} - -void BasicIosActorCPU::simulateParticles() -{ - float deltaTime = mBasicIosScene->getApexScene().getPhysXSimulateTime(); - const PxVec3& eyePos = mBasicIosScene->getApexScene().getEyePosition(); - - mTotalElapsedTime += deltaTime; - - PxVec3 gravity = -mUp; - - uint32_t totalCount = mParticleCount + mInjectedCount; - uint32_t activeCount = mLastActiveCount + mInjectedCount; - - mParticleBudget = mMaxParticleCount; - if (mParticleBudget > activeCount) - { - mParticleBudget = activeCount; - } - uint32_t targetCount = mParticleBudget; - - uint32_t maxStateID = 0; //we could drop state in case targetCount = 0 - - for(uint32_t i = 0; i < mInjectorList.getSize(); ++i) - { - mInjectorsCounters[i] = 0; - } - - if (targetCount > 0) - { - maxStateID = mParticleCount; - for (uint32_t i = 0; i < maxStateID; ++i) - { - mNewIndices[i] = IosBufferDescIntl::NOT_A_PARTICLE; - } - - uint32_t boundCount = 0; - if (activeCount > targetCount) - { - boundCount = activeCount - targetCount; - } - - float benefitMin = PxMin(mLastBenefitMin, mInjectedBenefitMin); - float benefitMax = PxMax(mLastBenefitMax, mInjectedBenefitMax); - PX_ASSERT(benefitMin <= benefitMax); - benefitMax *= 1.00001f; - - uint32_t boundBin = computeHistogram(totalCount, benefitMin, benefitMax, boundCount); - for (uint32_t i = 0, boundIndex = 0; i < totalCount; ++i) - { - float benefit = mBenefit[i]; - if (benefit > -FLT_MAX) - { - PX_ASSERT(benefit >= benefitMin && benefit < benefitMax); - - uint32_t bin = uint32_t((benefit - benefitMin) * HISTOGRAM_BIN_COUNT / (benefitMax - benefitMin)); - if (bin < boundBin) - { - mBenefit[i] = -FLT_MAX; - continue; - } - if (bin == boundBin && boundIndex < boundCount) - { - mBenefit[i] = -FLT_MAX; - ++boundIndex; - } - } - } - - checkBenefit(totalCount); - checkHoles(totalCount); - } - mLastActiveCount = 0; - mLastBenefitSum = 0.0f; - mLastBenefitMin = +FLT_MAX; - mLastBenefitMax = -FLT_MAX; - - if (targetCount > 0) - { - const InjectorParams* injectorParamsList = DYNAMIC_CAST(BasicIosSceneCPU*)(mBasicIosScene)->mInjectorParamsArray.begin(); - - FieldAccessor fieldAccessor(mFieldSamplerQuery ? mField.getPtr() : 0); - - SimulationParams simParams; - mSimulationParamsHandle.fetch(mSimulationStorage, simParams); - - for (uint32_t dest = 0, srcHole = targetCount; dest < targetCount; ++dest) - { - uint32_t src = dest; - //do we have a hole in dest region? - if (!(mBenefit[dest] > -FLT_MAX)) - { - //skip holes in src region - while (!(mBenefit[srcHole] > -FLT_MAX)) - { - ++srcHole; - } - PX_ASSERT(srcHole < totalCount); - src = srcHole++; - } - //do we have a new particle? - bool isNewParticle = (src >= mParticleCount); - - unsigned int injIndex; - float benefit = simulateParticle( - &simParams, mSimulationStorage, injectorParamsList, - deltaTime, gravity, eyePos, - isNewParticle, src, dest, - mBufDesc.pmaPositionMass->getPtr(), mBufDesc.pmaVelocityLife->getPtr(), mBufDesc.pmaActorIdentifiers->getPtr(), - mLifeSpan.getPtr(), mLifeTime.getPtr(), mInjector.getPtr(), mBufDesc.pmaCollisionNormalFlags->getPtr(), mBufDesc.pmaUserData->getPtr(), - fieldAccessor, injIndex - ); - - if (injIndex < mInjectorsCounters.getSize()) - { - ++mInjectorsCounters[injIndex]; - } - - if (!isNewParticle) - { - mNewIndices[src] = dest; - } - else - { - mBufDesc.pmaInStateToInput->get(maxStateID) = dest | IosBufferDescIntl::NEW_PARTICLE_FLAG; - ++maxStateID; - } - - mBenefit[dest] = benefit; - if (benefit > -FLT_MAX) - { - mLastBenefitSum += benefit; - mLastBenefitMin = PxMin(mLastBenefitMin, benefit); - mLastBenefitMax = PxMax(mLastBenefitMax, benefit); - ++mLastActiveCount; - } - } - - //update stateToInput - for (uint32_t i = 0; i < mParticleCount; ++i) - { - uint32_t src = mBufDesc.pmaOutStateToInput->get(i); - PX_ASSERT( src < mParticleCount ); - mBufDesc.pmaInStateToInput->get(i) = mNewIndices[src]; - } - } - checkInState(totalCount); - - mParticleCount = targetCount; - - /* Oh! Manager of the IOFX! do your thing */ - mIofxMgr->updateEffectsData(deltaTime, mParticleCount, mParticleCount, maxStateID); -} - -uint32_t BasicIosActorCPU::computeHistogram(uint32_t dataCount, float dataMin, float dataMax, uint32_t& bound) -{ - const float* dataArray = mBenefit.getPtr(); - - uint32_t histogram[HISTOGRAM_BIN_COUNT]; - - //clear Histogram - for (uint32_t i = 0; i < HISTOGRAM_BIN_COUNT; ++i) - { - histogram[i] = 0; - } - //accum Histogram - for (uint32_t i = 0; i < dataCount; ++i) - { - float data = dataArray[i]; - if (data >= dataMin && data < dataMax) - { - uint32_t bin = uint32_t((data - dataMin) * HISTOGRAM_BIN_COUNT / (dataMax - dataMin)); - ++histogram[bin]; - } - } - //compute CDF from Histogram - uint32_t countSum = 0; - for (uint32_t i = 0; i < HISTOGRAM_BIN_COUNT; ++i) - { - uint32_t count = histogram[i]; - countSum += count; - histogram[i] = countSum; - } - - //binary search in CDF - uint32_t beg = 0; - uint32_t end = HISTOGRAM_BIN_COUNT; - while (beg < end) - { - uint32_t mid = beg + ((end - beg) >> 1); - if (bound > histogram[mid]) - { - beg = mid + 1; - } - else - { - end = mid; - } - } - - checkHistogram(bound, histogram[beg], histogram[HISTOGRAM_BIN_COUNT - 1]); - - if (beg > 0) - { - bound -= histogram[beg - 1]; - } - - return beg; -} - -} -} // namespace nvidia diff --git a/APEX_1.4/module/basicios/src/BasicIosActorGPU.cpp b/APEX_1.4/module/basicios/src/BasicIosActorGPU.cpp deleted file mode 100644 index 0a4ef4ca..00000000 --- a/APEX_1.4/module/basicios/src/BasicIosActorGPU.cpp +++ /dev/null @@ -1,802 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "ApexDefs.h" -#if APEX_CUDA_SUPPORT - -#include "Apex.h" -#include "SceneIntl.h" -#include "ApexSDKIntl.h" - -#include "BasicIosActor.h" -#include "BasicIosActorGPU.h" -#include "BasicIosAssetImpl.h" -#include "IofxAsset.h" -#include "IofxActor.h" -#include "ModuleBasicIosImpl.h" -#include "BasicIosSceneGPU.h" -#include "RenderDebugInterface.h" -#include "AuthorableObjectIntl.h" - -#include "PxMath.h" - -//CUDA -#include "PxGpuTask.h" -#include "ApexCutil.h" - -#define CUDA_OBJ(name) SCENE_CUDA_OBJ(*mBasicIosScene, name) - -namespace nvidia -{ -namespace basicios -{ - -#pragma warning(disable: 4355) // 'this' : used in base member initializer list - -BasicIosActorGPU::BasicIosActorGPU( - ResourceList& list, - BasicIosAssetImpl& asset, - BasicIosScene& scene, - nvidia::apex::IofxAsset& iofxAsset, - const ApexMirroredPlace::Enum defaultPlace) - : BASIC_IOS_ACTOR(list, asset, scene, iofxAsset, true) - , mCopyQueue(*scene.getApexScene().getTaskManager()->getGpuDispatcher()) - , mHoleScanSum(scene.getApexScene()) - , mMoveIndices(scene.getApexScene()) - , mTmpReduce(scene.getApexScene()) - , mTmpHistogram(scene.getApexScene()) - , mTmpScan(scene.getApexScene()) - , mTmpScan1(scene.getApexScene()) - , mTmpOutput(scene.getApexScene()) - , mTmpOutput1(scene.getApexScene()) - , mLaunchTask(*this) -{ - initStorageGroups(CUDA_OBJ(simulateStorage)); - - //CUDA - mTmpOutput.setSize(4, ApexMirroredPlace::CPU_GPU); - mTmpOutput1.setSize(2, ApexMirroredPlace::CPU_GPU); - - const unsigned int ScanWarpsPerBlock = MAX_WARPS_PER_BLOCK; //CUDA_OBJ(scanKernel).getBlockDim().x / WARP_SIZE; - mTmpReduce.reserve(MAX_BOUND_BLOCKS * 4, defaultPlace); - mTmpHistogram.reserve(MAX_BOUND_BLOCKS * HISTOGRAM_SIMULATE_BIN_COUNT, defaultPlace); - mTmpScan.reserve(MAX_BOUND_BLOCKS * ScanWarpsPerBlock, defaultPlace); - mTmpScan1.reserve(MAX_BOUND_BLOCKS * ScanWarpsPerBlock, defaultPlace); - - mLifeTime.reserve(mMaxParticleCount, defaultPlace); - - mLifeSpan.reserve(mMaxTotalParticleCount, ApexMirroredPlace::CPU_GPU); - mInjector.reserve(mMaxTotalParticleCount, ApexMirroredPlace::CPU_GPU); - mBenefit.reserve(mMaxTotalParticleCount, ApexMirroredPlace::CPU_GPU); - - { - uint32_t size = mGridDensityParams.GridResolution; - if(size > 0) - { - mGridDensityGrid.setSize(size*size*size,ApexMirroredPlace::GPU); - mGridDensityGridLowPass.setSize(size*size*size,ApexMirroredPlace::GPU); - } - } - - if (mAsset->mParams->collisionWithConvex) - { - mConvexPlanes.reserve(MAX_CONVEX_PLANES_COUNT, ApexMirroredPlace::CPU_GPU); - mConvexVerts.reserve(MAX_CONVEX_VERTS_COUNT, ApexMirroredPlace::CPU_GPU); - mConvexPolygonsData.reserve(MAX_CONVEX_POLYGONS_DATA_SIZE, ApexMirroredPlace::CPU_GPU); - } - if (mAsset->mParams->collisionWithTriangleMesh) - { - mTrimeshVerts.reserve(MAX_TRIMESH_VERTS_COUNT, ApexMirroredPlace::CPU_GPU); - mTrimeshIndices.reserve(MAX_TRIMESH_INDICES_COUNT, ApexMirroredPlace::CPU_GPU); - } - - mHoleScanSum.reserve(mMaxTotalParticleCount, defaultPlace); - mMoveIndices.reserve(mMaxTotalParticleCount, defaultPlace); -} - -BasicIosActorGPU::~BasicIosActorGPU() -{ -} - -void BasicIosActorGPU::submitTasks() -{ - BasicIosActorImpl::submitTasks(); - - mInjectorsCounters.setSize(mInjectorList.getSize(), ApexMirroredPlace::CPU_GPU); - PxTaskManager* tm = mBasicIosScene->getApexScene().getTaskManager(); - tm->submitUnnamedTask(mLaunchTask, PxTaskType::TT_GPU); -} - -void BasicIosActorGPU::setTaskDependencies() -{ - BasicIosActorImpl::setTaskDependencies(&mLaunchTask, true); - - PxTaskManager* tm = mBasicIosScene->getApexScene().getTaskManager(); - if (tm->getGpuDispatcher()->getCudaContextManager()->supportsArchSM20()) - { - /* For Fermi devices, it pays to launch all IOS together. This also forces - * The IOFX managers to step at the same time. - */ - PxTaskID interlock = tm->getNamedTask("IOS::StepInterlock"); - mLaunchTask.startAfter(interlock); - } -} - -bool BasicIosActorGPU::launch(CUstream stream, int kernelIndex) -{ - float deltaTime = mBasicIosScene->getApexScene().getPhysXSimulateTime(); - - uint32_t activeCount = mLastActiveCount + mInjectedCount; - mParticleBudget = mMaxParticleCount; - if (mParticleBudget > activeCount) - { - mParticleBudget = activeCount; - } - uint32_t targetCount = mParticleBudget; - - if (targetCount == 0) - { - //reset output - float* pTmpOutput = (float*)mTmpOutput.getPtr(); - mTmpOutput[STATUS_LAST_ACTIVE_COUNT] = 0; - pTmpOutput[STATUS_LAST_BENEFIT_SUM] = 0.0f; - pTmpOutput[STATUS_LAST_BENEFIT_MIN] = +FLT_MAX; - pTmpOutput[STATUS_LAST_BENEFIT_MAX] = -FLT_MAX; - - for(uint32_t i = 0; i < mInjectorsCounters.getSize(); ++i) - { - mInjectorsCounters[i] = 0; - } - - //skip simulation & just call IofxManager - mIofxMgr->updateEffectsData(deltaTime, 0, 0, 0, stream); - return false; - } - - uint32_t lastCount = mParticleCount; - uint32_t injectCount = mInjectedCount; - uint32_t totalCount = lastCount + injectCount; - PX_ASSERT(targetCount <= totalCount); - uint32_t boundCount = 0; - if (activeCount > targetCount) - { - boundCount = activeCount - targetCount; - } - - BasicIosSceneGPU* sceneGPU = static_cast<BasicIosSceneGPU*>(mBasicIosScene); - bool useSyncKernels = !sceneGPU->getGpuDispatcher()->getCudaContextManager()->supportsArchSM20(); - - switch (kernelIndex) - { - case 0: - if (!mFieldSamplerQuery && mOnStartCallback) - { - (*mOnStartCallback)(stream); - } - - mCopyQueue.reset(stream, 24); - mIofxMgr->outputHostToDevice(mCopyQueue); - if (mInjectedCount > 0) - { - mBufDesc.pmaPositionMass->copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - mBufDesc.pmaVelocityLife->copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - mBufDesc.pmaActorIdentifiers->copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - mLifeSpan.copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - mInjector.copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - mBenefit.copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - mBufDesc.pmaUserData->copyHostToDeviceQ(mCopyQueue, mInjectedCount, mParticleCount); - } - if (mAsset->mParams->collisionWithConvex) - { - mConvexPlanes.copyHostToDeviceQ(mCopyQueue); - mConvexVerts.copyHostToDeviceQ(mCopyQueue); - mConvexPolygonsData.copyHostToDeviceQ(mCopyQueue); - } - if (mAsset->mParams->collisionWithTriangleMesh) - { - mTrimeshVerts.copyHostToDeviceQ(mCopyQueue); - mTrimeshIndices.copyHostToDeviceQ(mCopyQueue); - } - mCopyQueue.flushEnqueued(); - return true; - - case 1: - if (totalCount > 0) - { - float benefitMin = PxMin(mLastBenefitMin, mInjectedBenefitMin); - float benefitMax = PxMax(mLastBenefitMax, mInjectedBenefitMax); - PX_ASSERT(benefitMin <= benefitMax); - benefitMax *= 1.00001f; - - if (useSyncKernels) - { - CUDA_OBJ(histogramSyncKernel)( - stream, totalCount, - mBenefit.getGpuPtr(), boundCount, - benefitMin, benefitMax, - mTmpOutput1.getGpuPtr(), - mTmpHistogram.getGpuPtr() - ); - } - else - { - uint32_t histogramGridSize = - CUDA_OBJ(histogramKernel)( - stream, totalCount, - createApexCudaMemRef(mBenefit, totalCount, ApexCudaMemFlags::IN), - boundCount, benefitMin, benefitMax, - createApexCudaMemRef(mTmpOutput1, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpHistogram, ApexCudaMemFlags::OUT), - 1, 0 - ); - - //launch just 1 block - CUDA_OBJ(histogramKernel)( - stream, APEX_CUDA_SINGLE_BLOCK_LAUNCH, - createApexCudaMemRef(mBenefit, totalCount, ApexCudaMemFlags::IN), - boundCount, benefitMin, benefitMax, - createApexCudaMemRef(mTmpOutput1, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mTmpHistogram, ApexCudaMemFlags::IN_OUT), - 2, histogramGridSize - ); - } - } - return true; - - case 2: - if (totalCount > 0) - { - float benefitMin = PxMin(mLastBenefitMin, mInjectedBenefitMin); - float benefitMax = PxMax(mLastBenefitMax, mInjectedBenefitMax); - PX_ASSERT(benefitMin <= benefitMax); - benefitMax *= 1.00001f; - - if (useSyncKernels) - { - CUDA_OBJ(scanSyncKernel)( - stream, totalCount, - benefitMin, benefitMax, - mHoleScanSum.getGpuPtr(), mBenefit.getGpuPtr(), - mTmpOutput1.getGpuPtr(), - mTmpScan.getGpuPtr(), mTmpScan1.getGpuPtr() - ); - } - else - { - uint32_t scanGridSize = - CUDA_OBJ(scanKernel)( - stream, totalCount, - benefitMin, benefitMax, - createApexCudaMemRef(mHoleScanSum, totalCount, ApexCudaMemFlags::IN), - createApexCudaMemRef(mBenefit, totalCount, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpOutput1, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpScan, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mTmpScan1, ApexCudaMemFlags::OUT), - 1, 0 - ); - - //launch just 1 block - CUDA_OBJ(scanKernel)( - stream, APEX_CUDA_SINGLE_BLOCK_LAUNCH, - benefitMin, benefitMax, - createApexCudaMemRef(mHoleScanSum, totalCount, ApexCudaMemFlags::IN), - createApexCudaMemRef(mBenefit, totalCount, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpOutput1, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpScan, ApexCudaMemFlags::IN_OUT), - createApexCudaMemRef(mTmpScan1, ApexCudaMemFlags::IN_OUT), - 2, scanGridSize - ); - - CUDA_OBJ(scanKernel)( - stream, totalCount, - benefitMin, benefitMax, - createApexCudaMemRef(mHoleScanSum, totalCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mBenefit, totalCount, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpOutput1, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpScan, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpScan1, ApexCudaMemFlags::IN), - 3, 0 - ); - } - } - return true; - - case 3: - { - if (totalCount > 0) - { - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefCompactScanSum, mHoleScanSum); - const uint32_t injectorCount = mInjectorList.getSize(); - - CUDA_OBJ(compactKernel)( - stream, - PxMax(totalCount, injectorCount), - targetCount, - totalCount, - injectorCount, - createApexCudaMemRef(mMoveIndices, totalCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mTmpScan, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mInjectorsCounters, ApexCudaMemFlags::OUT) - ); - - } - return true; - } - - - case 4: - if (targetCount > 0) - { - uint32_t histogramGridSize = 0; - { - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefMoveIndices, mMoveIndices); - - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefPositionMass, *mBufDesc.pmaPositionMass); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefVelocityLife, *mBufDesc.pmaVelocityLife); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefIofxActorIDs, *mBufDesc.pmaActorIdentifiers); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefLifeSpan, mLifeSpan); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefLifeTime, mLifeTime); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefInjector, mInjector); - - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefUserData, *mBufDesc.pmaUserData); - - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefConvexPlanes, mConvexPlanes); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefConvexVerts, mConvexVerts); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefConvexPolygonsData, mConvexPolygonsData); - - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefTrimeshVerts, mTrimeshVerts); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefTrimeshIndices, mTrimeshIndices); - - PxVec3 gravity = -mUp; - const PxVec3& eyePos = mBasicIosScene->getApexScene().getEyePosition(); - - if (mFieldSamplerQuery != NULL) - { - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefField, mField); - - histogramGridSize = CUDA_OBJ(simulateApplyFieldKernel)(stream, - targetCount, - lastCount, - deltaTime, - gravity, - eyePos, - sceneGPU->mInjectorConstMemGroup.getStorage().mappedHandle(sceneGPU->mInjectorParamsArrayHandle), mInjectorsCounters.getSize(), - createApexCudaMemRef(mHoleScanSum, targetCount, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpScan, 1, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpHistogram, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mInjectorsCounters, mInjectorsCounters.getSize(), ApexCudaMemFlags::OUT), - createApexCudaMemRef((float4*)mBufDesc.pmaPositionMass->getGpuPtr(), targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef((float4*)mBufDesc.pmaVelocityLife->getGpuPtr(), targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef((float4*)mBufDesc.pmaCollisionNormalFlags->getGpuPtr(), targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mBufDesc.pmaUserData->getGpuPtr(), targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mLifeSpan, targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mLifeTime, targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mInjector, targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(*(mBufDesc.pmaActorIdentifiers), targetCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mBenefit, targetCount, ApexCudaMemFlags::OUT), - mSimulationStorageGroup.getStorage().mappedHandle(mSimulationParamsHandle) - ); - } - else - { - histogramGridSize = CUDA_OBJ(simulateKernel)(stream, targetCount, - lastCount, deltaTime, gravity, eyePos, - sceneGPU->mInjectorConstMemGroup.getStorage().mappedHandle(sceneGPU->mInjectorParamsArrayHandle), mInjectorsCounters.getSize(), - mHoleScanSum.getGpuPtr(), mTmpScan.getGpuPtr(), mTmpHistogram.getGpuPtr(), mInjectorsCounters.getGpuPtr(), - (float4*)mBufDesc.pmaPositionMass->getGpuPtr(), - (float4*)mBufDesc.pmaVelocityLife->getGpuPtr(), - (float4*)mBufDesc.pmaCollisionNormalFlags->getGpuPtr(), - mBufDesc.pmaUserData->getGpuPtr(), - mLifeSpan.getGpuPtr(), mLifeTime.getGpuPtr(), mInjector.getGpuPtr(), mBufDesc.pmaActorIdentifiers->getGpuPtr(), - mBenefit.getGpuPtr(), mSimulationStorageGroup.getStorage().mappedHandle(mSimulationParamsHandle) - ); - } - } - //new kernel invocation - to merge temp histograms - { - if(mInjectorsCounters.getSize() <= HISTOGRAM_SIMULATE_BIN_COUNT) - { - CUDA_OBJ(mergeHistogramKernel)(stream, APEX_CUDA_SINGLE_BLOCK_LAUNCH, - createApexCudaMemRef(mInjectorsCounters, mInjectorsCounters.getSize(), ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpHistogram, ApexCudaMemFlags::IN), - histogramGridSize, - mInjectorsCounters.getSize() - ); - } - - } - // calculate grid grid density - if (mGridDensityParams.Enabled) - { - mGridDensityParams.DensityOrigin = mDensityOrigin; - const unsigned int dim = mGridDensityParams.GridResolution; - // refreshed non-shared params - { - BasicIOSAssetParam* gridParams = (BasicIOSAssetParam*)(mAsset->getAssetNvParameterized()); - mGridDensityParams.GridSize = gridParams->GridDensity.GridSize; - mGridDensityParams.GridMaxCellCount = gridParams->GridDensity.MaxCellCount; - } - // extract frustum - if (mBasicIosScene->getApexScene().getNumProjMatrices() > 0) - { - PxMat44 matDen = PxMat44(PxIdentity); - GridDensityFrustumParams frustum; - PxMat44 matModel = mBasicIosScene->getApexScene().getViewMatrix(); - PxMat44 matProj = mBasicIosScene->getApexScene().getProjMatrix(); - PxMat44 mat = matProj*matModel; - PxMat44 matInv = inverse(mat); - const float targetDepth = mGridDensityParams.GridSize; - // for debug vis - mDensityDebugMatInv = matInv; - // to calculate w transform - float nearDimX = distance(matInv.transform(PxVec4(-1.f,0.f,0.f,1.f)),matInv.transform(PxVec4(1.f,0.f,0.f,1.f))); - float farDimX = distance(matInv.transform(PxVec4(-1.f,0.f,1.f,1.f)),matInv.transform(PxVec4(1.f,0.f,1.f,1.f))); - float nearDimY = distance(matInv.transform(PxVec4(0.f,-1.f,0.f,1.f)),matInv.transform(PxVec4(0.f,1.f,0.f,1.f))); - float farDimY = distance(matInv.transform(PxVec4(0.f,-1.f,1.f,1.f)),matInv.transform(PxVec4(0.f,1.f,1.f,1.f))); - float dimZ = distance(matInv.transform(PxVec4(0.f, 0.f,0.f,1.f)),matInv.transform(PxVec4(0.f,0.f,1.f,1.f))); - float myFarDimX = nearDimX*(1.f-targetDepth/dimZ) + farDimX*(targetDepth/dimZ); - float myFarDimY = nearDimY*(1.f-targetDepth/dimZ) + farDimY*(targetDepth/dimZ); - // grab necessary frustum coordinates - PxVec4 origin4 = matInv.transform(PxVec4(-1.f, 1.f,0.f,1.f)); - PxVec4 basisX4 = matInv.transform(PxVec4( 1.f, 1.f,0.f,1.f)); - PxVec4 basisY4 = matInv.transform(PxVec4(-1.f,-1.f,0.f,1.f)); - PxVec4 zDepth4 = matInv.transform(PxVec4(-1.f, 1.f,1.f,1.f)); - // create vec3 versions - PxVec3 origin3(origin4.x/origin4.w,origin4.y/origin4.w,origin4.z/origin4.w); - PxVec3 basisX3(basisX4.x/basisX4.w,basisX4.y/basisX4.w,basisX4.z/basisX4.w); - PxVec3 basisY3(basisY4.x/basisY4.w,basisY4.y/basisY4.w,basisY4.z/basisY4.w); - PxVec3 zDepth3(zDepth4.x/zDepth4.w,zDepth4.y/zDepth4.w,zDepth4.z/zDepth4.w); - // make everthing relative to origin - basisX3 -= origin3; - basisY3 -= origin3; - zDepth3 -= origin3; - // find third basis - PxVec3 basisZ3(basisX3.cross(basisY3)); - basisZ3.normalize(); - basisZ3*= targetDepth; - // see how skewed the eye point is - PxVec3 eye; - { - // find the eye point - PxVec4 a4 = matInv.transform(PxVec4(1.f,1.f,0.00f,1.f)); - PxVec4 b4 = matInv.transform(PxVec4(1.f,1.f,0.01f,1.f)); - PxVec4 c4 = matInv.transform(PxVec4(-1.f,-1.f,0.00f,1.f)); - PxVec4 d4 = matInv.transform(PxVec4(-1.f,-1.f,0.01f,1.f)); - PxVec3 a3 = a4.getXYZ()/a4.w; - PxVec3 b3 = b4.getXYZ()/b4.w; - PxVec3 c3 = c4.getXYZ()/c4.w; - PxVec3 d3 = d4.getXYZ()/d4.w; - PxVec3 a = b3-a3; - PxVec3 b = d3-c3; - PxVec3 c = a.cross(b); - PxVec3 d = a3-c3; - PxMat33 m(a,b,c); - PxMat33 mInv = m.getInverse(); - PxVec3 coord = mInv.transform(d); - eye = c3 + (d3-c3)*coord.y; - } - // build scale,rotation,translation matrix - PxMat44 mat1Inv = PxMat44(PxIdentity); - mat1Inv.column0 = PxVec4(basisX3,0.f); - mat1Inv.column1 = PxVec4(basisY3,0.f); - mat1Inv.column2 = PxVec4(basisZ3,0.f); - mat1Inv.column3 = PxVec4(origin3,1.f); - PxMat44 mat1 = inverse(mat1Inv); - PxVec3 eyeOffset = mat1.transform(eye); - // do perspective transform - PxMat44 mat2 = PxMat44(PxIdentity); - { - float xshift = -2.f*(eyeOffset.x-0.5f); - float yshift = -2.f*(eyeOffset.y-0.5f); - float left = -3.0f + xshift; - float right = 1.0f + xshift; - float top = 1.0f + yshift; - float bottom = -3.0f + yshift; - float nearVal = nearDimX/(0.5f*(myFarDimX-nearDimX)); - //float farVal = nearVal + 1.f; - // build matrix - mat2.column0.x = -2.f*nearVal/(right-left); - mat2.column1.y = -2.f*nearVal/(top-bottom); - mat2.column2.x = (right+left)/(right-left); - mat2.column2.y = (top+bottom)/(top-bottom); - //mat2.column2.z = -(farVal+nearVal)/(farVal-nearVal); - mat2.column2.w = -1.f; - //mat2.column3.z = -(2.f*farVal*nearVal)/(farVal-nearVal); - mat2.column3.w = 0.f; - } - // shrink to calculate density just outside of frustum - PxMat44 mat3 = PxMat44(PxIdentity); - float factor = PxMin((float)(mGridDensityParams.GridResolution-4) / (mGridDensityParams.GridResolution),0.75f); - { - mat3.column0.x = factor; - mat3.column1.y = factor; - mat3.column2.z = factor; - mat3.column3.x = (1.0f-factor)/2.0f; - mat3.column3.y = (1.0f-factor)/2.0f; - mat3.column3.z = (1.0f-factor)/2.0f; - } - // create final matrix - matDen = mat3*mat2*mat1; - // create frustum info - frustum.nearDimX = factor*nearDimX; - frustum.farDimX = factor*myFarDimX; - frustum.nearDimY = factor*nearDimY; - frustum.farDimY = factor*myFarDimY; - frustum.dimZ = factor*targetDepth; - // launch frustum kernels - CUDA_OBJ(gridDensityGridClearKernel)(stream, dim*dim*dim, - mGridDensityGrid.getGpuPtr(), - mGridDensityParams - ); - CUDA_OBJ(gridDensityGridFillFrustumKernel)(stream, targetCount, - (float4*)mBufDesc.pmaPositionMass->getGpuPtr(), - mGridDensityGrid.getGpuPtr(), - mGridDensityParams, - matDen, - frustum - ); - CUDA_OBJ(gridDensityGridLowPassKernel)(stream, dim*dim*dim, - mGridDensityGrid.getGpuPtr(), - mGridDensityGridLowPass.getGpuPtr(), - mGridDensityParams - ); - CUDA_OBJ(gridDensityGridApplyFrustumKernel)(stream, targetCount, - mBufDesc.pmaDensity != NULL ? (float*)mBufDesc.pmaDensity->getGpuPtr() : NULL, - (float4*)mBufDesc.pmaPositionMass->getGpuPtr(), - mGridDensityGridLowPass.getGpuPtr(), - mGridDensityParams, - matDen, - frustum - ); - } - } - } - return true; - - case 5: - if (targetCount > 0) - { - if (useSyncKernels) - { - CUDA_OBJ(reduceSyncKernel)( - stream, targetCount, - mBenefit.getGpuPtr(), (float4*)mTmpOutput.getGpuPtr(), mTmpReduce.getGpuPtr() - ); - } - else - { - uint32_t reduceGridSize = - CUDA_OBJ(reduceKernel)( - stream, targetCount, - createApexCudaMemRef(mBenefit, targetCount, ApexCudaMemFlags::IN), - createApexCudaMemRef((float4*)mTmpOutput.getGpuPtr(), 1, ApexCudaMemFlags::IN), - createApexCudaMemRef(mTmpReduce, ApexCudaMemFlags::OUT), - 1, 0 - ); - - //launch just 1 block - CUDA_OBJ(reduceKernel)( - stream, APEX_CUDA_SINGLE_BLOCK_LAUNCH, - createApexCudaMemRef(mBenefit, targetCount, ApexCudaMemFlags::IN), - createApexCudaMemRef((float4*)mTmpOutput.getGpuPtr(), 1, ApexCudaMemFlags::OUT), - createApexCudaMemRef(mTmpReduce, ApexCudaMemFlags::IN), - 2, reduceGridSize - ); - } - } - return true; - - case 6: - if (totalCount > 0) - { - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefHoleScanSum, mHoleScanSum); - APEX_CUDA_TEXTURE_SCOPE_BIND(texRefMoveIndices, mMoveIndices); - - CUDA_OBJ(stateKernel)(stream, totalCount, - lastCount, targetCount, - createApexCudaMemRef(mTmpScan, 1, ApexCudaMemFlags::IN), - createApexCudaMemRef(*mBufDesc.pmaInStateToInput, totalCount, ApexCudaMemFlags::OUT), - createApexCudaMemRef(*mBufDesc.pmaOutStateToInput, lastCount, ApexCudaMemFlags::IN) - ); - - } - return true; - - case 7: - mTmpOutput.copyDeviceToHostQ(mCopyQueue); - mInjectorsCounters.copyDeviceToHostQ(mCopyQueue); - - if (mTmpScan.cpuPtrIsValid()) - { - mTmpOutput1.copyDeviceToHostQ(mCopyQueue); - mTmpScan.copyDeviceToHostQ(mCopyQueue, 1); - mHoleScanSum.copyDeviceToHostQ(mCopyQueue, totalCount); - mMoveIndices.copyDeviceToHostQ(mCopyQueue, totalCount); - mTmpHistogram.copyDeviceToHostQ(mCopyQueue, HISTOGRAM_BIN_COUNT); - mBenefit.copyDeviceToHostQ(mCopyQueue, totalCount); - mBufDesc.pmaInStateToInput->copyDeviceToHostQ(mCopyQueue, totalCount); - mBufDesc.pmaPositionMass->copyDeviceToHostQ(mCopyQueue, targetCount); - } - mCopyQueue.flushEnqueued(); - - /* Oh! Manager of the IOFX! do your thing */ - mIofxMgr->updateEffectsData(deltaTime, targetCount, targetCount, totalCount, stream); - return false; - } - return false; -} - -void BasicIosActorGPU::fetchResults() -{ - BASIC_IOS_ACTOR::fetchResults(); - - uint32_t totalCount = mParticleCount + mInjectedCount; - checkBenefit(totalCount); - checkHoles(totalCount); - checkInState(totalCount); - /*checkHistogram(PxMax<int32_t>(mLastActiveCount + mInjectedCount - mParticleBudget, 0), mTmpHistogram[ mTmpOutput1[1] ], mTmpHistogram[ HISTOGRAM_BIN_COUNT - 1 ]);*/ - //this can be done only after TaskLaunchAfterLod is finished!!! - - mParticleCount = mParticleBudget; - - float* pTmpOutput = (float*)mTmpOutput.getPtr(); - mLastActiveCount = mTmpOutput[STATUS_LAST_ACTIVE_COUNT]; - mLastBenefitSum = pTmpOutput[STATUS_LAST_BENEFIT_SUM]; - mLastBenefitMin = pTmpOutput[STATUS_LAST_BENEFIT_MIN]; - mLastBenefitMax = pTmpOutput[STATUS_LAST_BENEFIT_MAX]; -} - - -PxMat44 BasicIosActorGPU::inverse(const PxMat44& in) -{ - PxMat44 ret; - float inv[16]; - float* invOut = &ret.column0.x; - const float* m = &in.column0.x; - int i; - - inv[0] = m[5] * m[10] * m[15] - - m[5] * m[11] * m[14] - - m[9] * m[6] * m[15] + - m[9] * m[7] * m[14] + - m[13] * m[6] * m[11] - - m[13] * m[7] * m[10]; - - inv[4] = -m[4] * m[10] * m[15] + - m[4] * m[11] * m[14] + - m[8] * m[6] * m[15] - - m[8] * m[7] * m[14] - - m[12] * m[6] * m[11] + - m[12] * m[7] * m[10]; - - inv[8] = m[4] * m[9] * m[15] - - m[4] * m[11] * m[13] - - m[8] * m[5] * m[15] + - m[8] * m[7] * m[13] + - m[12] * m[5] * m[11] - - m[12] * m[7] * m[9]; - - inv[12] = -m[4] * m[9] * m[14] + - m[4] * m[10] * m[13] + - m[8] * m[5] * m[14] - - m[8] * m[6] * m[13] - - m[12] * m[5] * m[10] + - m[12] * m[6] * m[9]; - - inv[1] = -m[1] * m[10] * m[15] + - m[1] * m[11] * m[14] + - m[9] * m[2] * m[15] - - m[9] * m[3] * m[14] - - m[13] * m[2] * m[11] + - m[13] * m[3] * m[10]; - - inv[5] = m[0] * m[10] * m[15] - - m[0] * m[11] * m[14] - - m[8] * m[2] * m[15] + - m[8] * m[3] * m[14] + - m[12] * m[2] * m[11] - - m[12] * m[3] * m[10]; - - inv[9] = -m[0] * m[9] * m[15] + - m[0] * m[11] * m[13] + - m[8] * m[1] * m[15] - - m[8] * m[3] * m[13] - - m[12] * m[1] * m[11] + - m[12] * m[3] * m[9]; - - inv[13] = m[0] * m[9] * m[14] - - m[0] * m[10] * m[13] - - m[8] * m[1] * m[14] + - m[8] * m[2] * m[13] + - m[12] * m[1] * m[10] - - m[12] * m[2] * m[9]; - - inv[2] = m[1] * m[6] * m[15] - - m[1] * m[7] * m[14] - - m[5] * m[2] * m[15] + - m[5] * m[3] * m[14] + - m[13] * m[2] * m[7] - - m[13] * m[3] * m[6]; - - inv[6] = -m[0] * m[6] * m[15] + - m[0] * m[7] * m[14] + - m[4] * m[2] * m[15] - - m[4] * m[3] * m[14] - - m[12] * m[2] * m[7] + - m[12] * m[3] * m[6]; - - inv[10] = m[0] * m[5] * m[15] - - m[0] * m[7] * m[13] - - m[4] * m[1] * m[15] + - m[4] * m[3] * m[13] + - m[12] * m[1] * m[7] - - m[12] * m[3] * m[5]; - - inv[14] = -m[0] * m[5] * m[14] + - m[0] * m[6] * m[13] + - m[4] * m[1] * m[14] - - m[4] * m[2] * m[13] - - m[12] * m[1] * m[6] + - m[12] * m[2] * m[5]; - - inv[3] = -m[1] * m[6] * m[11] + - m[1] * m[7] * m[10] + - m[5] * m[2] * m[11] - - m[5] * m[3] * m[10] - - m[9] * m[2] * m[7] + - m[9] * m[3] * m[6]; - - inv[7] = m[0] * m[6] * m[11] - - m[0] * m[7] * m[10] - - m[4] * m[2] * m[11] + - m[4] * m[3] * m[10] + - m[8] * m[2] * m[7] - - m[8] * m[3] * m[6]; - - inv[11] = -m[0] * m[5] * m[11] + - m[0] * m[7] * m[9] + - m[4] * m[1] * m[11] - - m[4] * m[3] * m[9] - - m[8] * m[1] * m[7] + - m[8] * m[3] * m[5]; - - inv[15] = m[0] * m[5] * m[10] - - m[0] * m[6] * m[9] - - m[4] * m[1] * m[10] + - m[4] * m[2] * m[9] + - m[8] * m[1] * m[6] - - m[8] * m[2] * m[5]; - - float det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12]; - - if (det == 0) - return PxMat44(PxIdentity); - - det = 1.0f / det; - - for (i = 0; i < 16; i++) - invOut[i] = inv[i] * det; - - return ret; -} - -float BasicIosActorGPU::distance(PxVec4 a, PxVec4 b) -{ - PxVec3 a3(a.x/a.w,a.y/a.w,a.z/a.w); - PxVec3 b3(b.x/b.w,b.y/b.w,b.z/b.w); - PxVec3 diff(b3-a3); - return diff.magnitude(); -} - -} -} // namespace nvidia - -#endif //APEX_CUDA_SUPPORT diff --git a/APEX_1.4/module/basicios/src/BasicIosActorImpl.cpp b/APEX_1.4/module/basicios/src/BasicIosActorImpl.cpp deleted file mode 100644 index 5bb6ecd4..00000000 --- a/APEX_1.4/module/basicios/src/BasicIosActorImpl.cpp +++ /dev/null @@ -1,1221 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "Apex.h" -#include "SceneIntl.h" -#include "ApexSDKIntl.h" -#include "ScopedPhysXLock.h" - -#include "BasicIosActor.h" -#include "BasicIosActorImpl.h" -#include "BasicIosAssetImpl.h" -#include "IofxAsset.h" -#include "IofxActor.h" -#include "ModuleBasicIosImpl.h" -#include "BasicIosScene.h" -#include "RenderDebugInterface.h" -#include "AuthorableObjectIntl.h" -#include "ModuleIofxIntl.h" -#include "FieldSamplerManagerIntl.h" -#include "FieldSamplerQueryIntl.h" -#include "ApexMirroredArray.h" -#include "ApexResourceHelper.h" -#include "PsAsciiConversion.h" - -#include "PxTask.h" - -#include <PxScene.h> -#include <PxConvexMesh.h> - -#include <PxShape.h> -#include <geometry/PxBoxGeometry.h> -#include <geometry/PxSphereGeometry.h> -#include <geometry/PxCapsuleGeometry.h> -#include <geometry/PxPlaneGeometry.h> -#include <geometry/PxTriangleMeshGeometry.h> -#include <geometry/PxTriangleMesh.h> - -#include <PxMaterial.h> - -#include <PxRigidActor.h> -#include <PxRigidBody.h> -#include <extensions/PxShapeExt.h> - -#include <PsAsciiConversion.h> - -#include "Lock.h" - -namespace nvidia -{ - namespace basicios - { - using namespace physx; - - class BasicIosInjectTask : public PxTask, public UserAllocated - { - public: - BasicIosInjectTask(BasicIosActorImpl* actor) : mActor(actor) {} - - const char* getName() const - { - return "BasicIosActorImpl::InjectTask"; - } - void run() - { - mActor->injectNewParticles(); - } - - protected: - BasicIosActorImpl* mActor; - }; - - void BasicIosActorImpl::initStorageGroups(InplaceStorage& storage) - { - mSimulationStorageGroup.init(storage); - } - - BasicIosActorImpl::BasicIosActorImpl( - ResourceList& list, - BasicIosAssetImpl& asset, - BasicIosScene& scene, - nvidia::apex::IofxAsset& iofxAsset, - bool isDataOnDevice) - : mAsset(&asset) - , mBasicIosScene(&scene) - , mIofxMgr(NULL) - , mTotalElapsedTime(0.0f) - , mParticleCount(0) - , mParticleBudget(UINT_MAX) - , mInjectedCount(0) - , mLastActiveCount(0) - , mLastBenefitSum(0) - , mLastBenefitMin(+FLT_MAX) - , mLastBenefitMax(-FLT_MAX) - , mLifeSpan(scene.getApexScene(), PX_ALLOC_INFO("mLifeSpan", PARTICLES)) - , mLifeTime(scene.getApexScene(), PX_ALLOC_INFO("mLifeTime", PARTICLES)) - , mInjector(scene.getApexScene(), PX_ALLOC_INFO("mInjector", PARTICLES)) - , mBenefit(scene.getApexScene(), PX_ALLOC_INFO("mBenefit", PARTICLES)) - , mConvexPlanes(scene.getApexScene(), PX_ALLOC_INFO("mConvexPlanes", PARTICLES)) - , mConvexVerts(scene.getApexScene(), PX_ALLOC_INFO("mConvexVerts", PARTICLES)) - , mConvexPolygonsData(scene.getApexScene(), PX_ALLOC_INFO("mConvexPolygonsData", PARTICLES)) - , mTrimeshVerts(scene.getApexScene(), PX_ALLOC_INFO("mTrimeshVerts", PARTICLES)) - , mTrimeshIndices(scene.getApexScene(), PX_ALLOC_INFO("mTrimeshIndices", PARTICLES)) - , mInjectorsCounters(scene.getApexScene(), PX_ALLOC_INFO("mInjectorsCounters", PARTICLES)) - , mGridDensityGrid(scene.getApexScene(), PX_ALLOC_INFO("mGridDensityGrid", PARTICLES)) - , mGridDensityGridLowPass(scene.getApexScene(), PX_ALLOC_INFO("mGridDensityGridLowPass", PARTICLES)) - , mFieldSamplerQuery(NULL) - , mField(scene.getApexScene(), PX_ALLOC_INFO("mField", PARTICLES)) - , mDensityOrigin(0.f,0.f,0.f) - , mOnStartCallback(NULL) - , mOnFinishCallback(NULL) - { - list.add(*this); - - mMaxParticleCount = mAsset->mParams->maxParticleCount; - mParticleBudget = mMaxParticleCount; - float maxInjectCount = mAsset->mParams->maxInjectedParticleCount; - mMaxTotalParticleCount = mMaxParticleCount + uint32_t(maxInjectCount <= 1.0f ? mMaxParticleCount * maxInjectCount : maxInjectCount); - - - IofxManagerDescIntl desc; - desc.iosAssetName = mAsset->getName(); - desc.iosSupportsDensity = mAsset->getSupportsDensity(); - desc.iosSupportsCollision = true; - desc.iosSupportsUserData = true; - desc.iosOutputsOnDevice = isDataOnDevice; - desc.maxObjectCount = mMaxParticleCount; - desc.maxInputCount = mMaxTotalParticleCount; - desc.maxInStateCount = mMaxTotalParticleCount; - - ModuleIofxIntl* moduleIofx = mAsset->mModule->getInternalModuleIofx(); - if (moduleIofx) - { - mIofxMgr = moduleIofx->createActorManager(*mBasicIosScene->mApexScene, iofxAsset, desc); - mIofxMgr->createSimulationBuffers(mBufDesc); - } - - mCollisionFilterData = ApexResourceHelper::resolveCollisionGroup128(mAsset->mParams->fieldSamplerFilterDataName); - - FieldSamplerManagerIntl* fieldSamplerManager = mBasicIosScene->getInternalFieldSamplerManager(); - if (fieldSamplerManager) - { - FieldSamplerQueryDescIntl queryDesc; - queryDesc.maxCount = mMaxParticleCount; - queryDesc.samplerFilterData = ApexResourceHelper::resolveCollisionGroup128(mAsset->mParams->fieldSamplerFilterDataName); - - mFieldSamplerQuery = fieldSamplerManager->createFieldSamplerQuery(queryDesc); - - if (isDataOnDevice) - { -#if APEX_CUDA_SUPPORT - mField.reserve(mMaxParticleCount, ApexMirroredPlace::GPU); -#endif - } - else - { - mField.reserve(mMaxParticleCount, ApexMirroredPlace::CPU); - } - } - - mInjectTask = PX_NEW(BasicIosInjectTask)(this); - - // Pull Grid Density Parameters - { - if(mBufDesc.pmaDensity) - { - BasicIOSAssetParam* gridParams = (BasicIOSAssetParam*)(mAsset->getAssetNvParameterized()); - mGridDensityParams.Enabled = gridParams->GridDensity.Enabled; - mGridDensityParams.GridSize = gridParams->GridDensity.GridSize; - mGridDensityParams.GridMaxCellCount = gridParams->GridDensity.MaxCellCount; - mGridDensityParams.GridResolution = general_string_parsing2::PxAsc::strToU32(&gridParams->GridDensity.Resolution[4],NULL); - mGridDensityParams.DensityOrigin = mDensityOrigin; - } - else - { - mGridDensityParams.Enabled = false; - mGridDensityParams.GridSize = 1.f; - mGridDensityParams.GridMaxCellCount = 1u; - mGridDensityParams.GridResolution = 8; - mGridDensityParams.DensityOrigin = mDensityOrigin; - } - } - - addSelfToContext(*scene.mApexScene->getApexContext()); // add self to Scene - addSelfToContext(*DYNAMIC_CAST(ApexContext*)(&scene)); // add self to BasicIosScene - } - - BasicIosActorImpl::~BasicIosActorImpl() - { - PX_DELETE(mInjectTask); - } - - void BasicIosActorImpl::release() - { - if (mInRelease) - { - return; - } - mInRelease = true; - mAsset->releaseIosActor(*this); - } - - void BasicIosActorImpl::destroy() - { - ApexActor::destroy(); - - setPhysXScene(NULL); - - // remove ourself from our asset's resource list, in case releasing our emitters - // causes our asset's resource count to reach zero and for it to be released. - ApexResource::removeSelf(); - - // Release all injectors, releasing all emitters and their IOFX asset references - while (mInjectorList.getSize()) - { - BasicParticleInjector* inj = DYNAMIC_CAST(BasicParticleInjector*)(mInjectorList.getResource(mInjectorList.getSize() - 1)); - inj->release(); - } - - if (mIofxMgr) - { - mIofxMgr->release(); - } - if (mFieldSamplerQuery) - { - mFieldSamplerQuery->release(); - } - - delete this; - } - - void BasicIosActorImpl::setPhysXScene(PxScene* scene) - { - if (scene) - { - putInScene(scene); - } - else - { - removeFromScene(); - } - } - PxScene* BasicIosActorImpl::getPhysXScene() const - { - return NULL; - } - void BasicIosActorImpl::putInScene(PxScene* scene) - { - SCOPED_PHYSX_LOCK_READ(scene); - PxVec3 gravity = scene->getGravity(); - setGravity(gravity); - } - - void BasicIosActorImpl::getLodRange(float& min, float& max, bool& intOnly) const - { - PX_UNUSED(min); - PX_UNUSED(max); - PX_UNUSED(intOnly); - APEX_INVALID_OPERATION("not implemented"); - } - - - float BasicIosActorImpl::getActiveLod() const - { - APEX_INVALID_OPERATION("BasicIosActor does not support this operation"); - return -1.0f; - } - - - void BasicIosActorImpl::forceLod(float lod) - { - PX_UNUSED(lod); - APEX_INVALID_OPERATION("not implemented"); - } - - - void BasicIosActorImpl::removeFromScene() - { - mParticleCount = 0; - } - - - const PxVec3* BasicIosActorImpl::getRecentPositions(uint32_t& count, uint32_t& stride) const - { - APEX_INVALID_OPERATION("not implemented"); - - count = 0; - stride = 0; - return NULL; - } - - PxVec3 BasicIosActorImpl::getGravity() const - { - return mGravityVec; - } - - void BasicIosActorImpl::setGravity(PxVec3& gravity) - { - mGravityVec = gravity; - mUp = mGravityVec; - - // apply asset's scene gravity scale and external acceleration - mUp *= mAsset->getSceneGravityScale(); - mUp += mAsset->getExternalAcceleration(); - - mGravity = mUp.magnitude(); - if (!PxIsFinite(mGravity)) - { - // and they could set both to 0,0,0 - mUp = PxVec3(0.0f, -1.0f, 0.0f); - mGravity = 1.0f; - } - mUp *= -1.0f; - - mIofxMgr->setSimulationParameters(getObjectRadius(), mUp, mGravity, getObjectDensity()); - } - - IosInjectorIntl* BasicIosActorImpl::allocateInjector(IofxAsset* iofxAsset) - { - BasicParticleInjector* inj = 0; - //createInjector - { - uint32_t injectorID = mBasicIosScene->getInjectorAllocator().allocateInjectorID(); - if (injectorID != BasicIosInjectorAllocator::NULL_INJECTOR_INDEX) - { - inj = PX_NEW(BasicParticleInjector)(mInjectorList, *this, injectorID); - } - } - if (inj == 0) - { - APEX_INTERNAL_ERROR("Failed to create new BasicIos injector."); - return NULL; - } - - inj->init(iofxAsset); - return inj; - } - - void BasicIosActorImpl::releaseInjector(IosInjectorIntl& injector) - { - BasicParticleInjector* inj = DYNAMIC_CAST(BasicParticleInjector*)(&injector); - - //destroyInjector - { - //set mLODBias to FLT_MAX to mark released injector - //all particles from released injectors will be removed in simulation - InjectorParams injParams; - mBasicIosScene->fetchInjectorParams(inj->mInjectorID, injParams); - injParams.mLODBias = FLT_MAX; - mBasicIosScene->updateInjectorParams(inj->mInjectorID, injParams); - - mBasicIosScene->getInjectorAllocator().releaseInjectorID(inj->mInjectorID); - inj->destroy(); - } - - if (mInjectorList.getSize() == 0) - { - //if we have no injectors - release self - release(); - } - } - - - void BasicIosActorImpl::visualize() - { - if ( !mEnableDebugVisualization ) return; -#ifndef WITHOUT_DEBUG_VISUALIZE - RenderDebugInterface* renderer = mBasicIosScene->mDebugRender; - const physx::PxMat44& savedPose = *RENDER_DEBUG_IFACE(renderer)->getPoseTyped(); - RENDER_DEBUG_IFACE(renderer)->setIdentityPose(); - if(mBasicIosScene->mBasicIosDebugRenderParams->VISUALIZE_BASIC_IOS_GRID_DENSITY) - { - if(mGridDensityParams.Enabled) - { - RENDER_DEBUG_IFACE(renderer)->setCurrentColor(0x0000ff); - float factor = PxMin((float)(mGridDensityParams.GridResolution-4) / (mGridDensityParams.GridResolution),0.75f); - uint32_t onScreenRes = (uint32_t)(factor*mGridDensityParams.GridResolution); - for (uint32_t i = 0 ; i <= onScreenRes; i++) - { - float u = 2.f*((float)i/(onScreenRes))-1.f; - PxVec4 a = mDensityDebugMatInv.transform(PxVec4(u,-1.f,0.1f,1.f)); - PxVec4 b = mDensityDebugMatInv.transform(PxVec4(u, 1.f,0.1f,1.f)); - PxVec4 c = mDensityDebugMatInv.transform(PxVec4(-1.f,u,0.1f,1.f)); - PxVec4 d = mDensityDebugMatInv.transform(PxVec4( 1.f,u,0.1f,1.f)); - RENDER_DEBUG_IFACE(renderer)->debugLine(PxVec3(a.getXYZ()/a.w), PxVec3(b.getXYZ()/b.w)); - RENDER_DEBUG_IFACE(renderer)->debugLine(PxVec3(c.getXYZ()/c.w), PxVec3(d.getXYZ()/d.w)); - } - } - } - if(mBasicIosScene->mBasicIosDebugRenderParams->VISUALIZE_BASIC_IOS_COLLIDE_SHAPES) - { - INPLACE_STORAGE_GROUP_SCOPE(mSimulationStorageGroup); - SimulationParams simParams; - mSimulationParamsHandle.fetch(_storage_, simParams); - - RenderDebugInterface* renderer = mBasicIosScene->mDebugRender; - RENDER_DEBUG_IFACE(renderer)->setCurrentColor(RENDER_DEBUG_IFACE(renderer)->getDebugColor(RENDER_DEBUG::DebugColors::Blue)); - - for(uint32_t i = 0; i < (uint32_t)simParams.boxes.getSize(); ++i) - { - CollisionBoxData boxData; - simParams.boxes.fetchElem(_storage_, boxData, i); - - const PxTransform& pose = boxData.pose; - PxVec3 position = pose.p; - PxVec3 halfSize = boxData.halfSize; - RENDER_DEBUG_IFACE(renderer)->setPose(pose); - RENDER_DEBUG_IFACE(renderer)->debugBound(PxBounds3(-halfSize, halfSize)); - } - - for(uint32_t i = 0; i < (uint32_t)simParams.spheres.getSize(); ++i) - { - CollisionSphereData sphereData; - simParams.spheres.fetchElem(_storage_, sphereData, i); - - float r = sphereData.radius; - PxVec3 pos = sphereData.pose.p; - RENDER_DEBUG_IFACE(renderer)->debugSphere(pos, r); - } - - for(uint32_t i = 0; i < (uint32_t)simParams.capsules.getSize(); ++i) - { - CollisionCapsuleData capsuleData; - simParams.capsules.fetchElem(_storage_, capsuleData, i); - - float r = capsuleData.radius, h = capsuleData.halfHeight; - const PxTransform& pose = capsuleData.pose; - RENDER_DEBUG_IFACE(renderer)->setPose(pose); - RENDER_DEBUG_IFACE(renderer)->debugCapsule(r, 2 * h); - } - } - RENDER_DEBUG_IFACE(renderer)->setPose(savedPose); -#endif - } - - void BasicIosActorImpl::FillCollisionData(CollisionData& baseData, PxShape* shape) - { - PxTransform actorGlobalPose = shape->getActor()->getGlobalPose(); - - if (PxRigidBody* pxBody = shape->getActor()->is<physx::PxRigidBody>()) - { - baseData.bodyCMassPosition = actorGlobalPose.transform(pxBody->getCMassLocalPose().p); - baseData.bodyLinearVelocity = pxBody->getLinearVelocity(); - baseData.bodyAngluarVelocity = pxBody->getAngularVelocity(); - - baseData.materialRestitution = mAsset->mParams->restitutionForDynamicShapes; - } - else - { - baseData.bodyCMassPosition = actorGlobalPose.p; - baseData.bodyLinearVelocity = PxVec3(0, 0, 0); - baseData.bodyAngluarVelocity = PxVec3(0, 0, 0); - - baseData.materialRestitution = mAsset->mParams->restitutionForStaticShapes; - } - //PxMaterial* PxMaterial = shape->getMaterialFromInternalFaceIndex(0); - //PX_ASSERT(PxMaterial); - //baseData->materialRestitution = PxMaterial->getRestitution(); - } - - void BasicIosActorImpl::submitTasks() - { - PxTaskManager* tm = mBasicIosScene->getApexScene().getTaskManager(); - tm->submitUnnamedTask(*mInjectTask); - - //compile a list of actually colliding objects and process them to be used by the simulation - INPLACE_STORAGE_GROUP_SCOPE(mSimulationStorageGroup); - - SimulationParams simParams; - if (mSimulationParamsHandle.allocOrFetch(_storage_, simParams)) - { - //one time initialization on alloc - simParams.collisionThreshold = mAsset->mParams->collisionThreshold; - simParams.collisionDistance = mAsset->mParams->particleRadius * mAsset->mParams->collisionDistanceMultiplier; -#if APEX_CUDA_SUPPORT -#define GET_PTR(x) x.getGpuPtr() ? x.getGpuPtr() : x.getPtr() -#else -#define GET_PTR(x) x.getPtr() -#endif - simParams.convexPlanes = GET_PTR(mConvexPlanes); - simParams.convexVerts = GET_PTR(mConvexVerts); - simParams.convexPolygonsData = GET_PTR(mConvexPolygonsData); - - simParams.trimeshVerts = GET_PTR(mTrimeshVerts); - simParams.trimeshIndices = GET_PTR(mTrimeshIndices); - } - - uint32_t numBoxes = 0; - uint32_t numSpheres = 0; - uint32_t numCapsules = 0; - uint32_t numHalfSpaces = 0; - uint32_t numConvexMeshes = 0; - uint32_t numTriMeshes = 0; - - mConvexPlanes.setSize(0); - mConvexVerts.setSize(0); - mConvexPolygonsData.setSize(0); - - mTrimeshVerts.setSize(0); - mTrimeshIndices.setSize(0); - - const float collisionRadius = simParams.collisionThreshold + simParams.collisionDistance; - uint32_t numCollidingObjects = 0; - PxBounds3 bounds = mIofxMgr->getBounds(); - if ((mAsset->mParams->staticCollision || mAsset->mParams->dynamicCollision) && !bounds.isEmpty()) - { - PX_ASSERT(!bounds.isEmpty()); - bounds.fattenFast(collisionRadius); - - const uint32_t maxCollidingObjects = mAsset->mParams->maxCollidingObjects; - - mOverlapHits.resize(maxCollidingObjects); - PxBoxGeometry overlapGeom(bounds.getExtents()); - PxTransform overlapPose(bounds.getCenter()); - - PxQueryFilterData overlapFilterData; - overlapFilterData.data = mCollisionFilterData; - - overlapFilterData.flags = PxQueryFlag::eNO_BLOCK | PxQueryFlag::ePREFILTER; - if (mAsset->mParams->staticCollision) overlapFilterData.flags |= PxQueryFlag::eSTATIC; - if (mAsset->mParams->dynamicCollision) overlapFilterData.flags |= PxQueryFlag::eDYNAMIC; - - SCOPED_PHYSX_LOCK_READ(mBasicIosScene->getModulePhysXScene()); - - class OverlapFilter : public physx::PxQueryFilterCallback - { - public: - virtual PxQueryHitType::Enum preFilter( - const PxFilterData& filterData, const PxShape* shape, const PxRigidActor* actor, physx::PxHitFlags& queryFlags) - { - PX_UNUSED(queryFlags); - - const PxFilterData shapeFilterData = shape->getQueryFilterData(); - const physx::PxFilterObjectAttributes iosAttributes = PxFilterObjectType::ePARTICLE_SYSTEM; - physx::PxFilterObjectAttributes actorAttributes = actor->getType(); - if (const PxRigidBody* rigidBody = actor->is<physx::PxRigidBody>()) - { - if (rigidBody->getRigidBodyFlags() & PxRigidBodyFlag::eKINEMATIC) - { - actorAttributes |= PxFilterObjectFlag::eKINEMATIC; - } - } - - physx::PxPairFlags pairFlags; - physx::PxFilterFlags filterFlags = mFilterShader(iosAttributes, filterData, actorAttributes, shapeFilterData, pairFlags, mFilterShaderData, mFilterShaderDataSize); - return (filterFlags & (PxFilterFlag::eKILL | PxFilterFlag::eSUPPRESS)) ? PxQueryHitType::eNONE : PxQueryHitType::eTOUCH; - } - - virtual PxQueryHitType::Enum postFilter(const PxFilterData& filterData, const PxQueryHit& hit) - { - PX_UNUSED(filterData); - PX_UNUSED(hit); - return PxQueryHitType::eNONE; - } - - OverlapFilter(PxScene* scene) - { - mFilterShader = scene->getFilterShader(); - mFilterShaderData = scene->getFilterShaderData(); - mFilterShaderDataSize = scene->getFilterShaderDataSize(); - } - - private: - physx::PxSimulationFilterShader mFilterShader; - const void* mFilterShaderData; - uint32_t mFilterShaderDataSize; - - } overlapFilter(mBasicIosScene->getModulePhysXScene()); - - physx::PxOverlapBuffer ovBuffer(&mOverlapHits[0], mOverlapHits.size()); - mBasicIosScene->getModulePhysXScene()->overlap(overlapGeom, overlapPose, ovBuffer, overlapFilterData, &overlapFilter); - numCollidingObjects = ovBuffer.getNbTouches(); - - for (uint32_t iShape = 0; iShape < numCollidingObjects; iShape++) - { - PxShape* shape = mOverlapHits[iShape].shape; - - switch (shape->getGeometryType()) - { - case PxGeometryType::eBOX: - { - ++numBoxes; - } - break; - case PxGeometryType::eSPHERE: - { - ++numSpheres; - } - break; - case PxGeometryType::eCAPSULE: - { - ++numCapsules; - } - break; - case PxGeometryType::ePLANE: - { - ++numHalfSpaces; - } - break; - case PxGeometryType::eCONVEXMESH: - { - if (mAsset->mParams->collisionWithConvex) - { - ++numConvexMeshes; - } - } - break; - case PxGeometryType::eTRIANGLEMESH: - { - if (mAsset->mParams->collisionWithTriangleMesh) - { - ++numTriMeshes; - } - } - break; - default: - break; - } - } - } - - simParams.boxes.resize(_storage_ , numBoxes); - simParams.spheres.resize(_storage_ , numSpheres); - simParams.capsules.resize(_storage_ , numCapsules); - simParams.halfSpaces.resize(_storage_ , numHalfSpaces); - simParams.convexMeshes.resize(_storage_ , numConvexMeshes); - simParams.trimeshes.resize(_storage_ , numTriMeshes); - - numBoxes = 0; - numSpheres = 0; - numCapsules = 0; - numHalfSpaces = 0; - numConvexMeshes = 0; - numTriMeshes = 0; - - if (numCollidingObjects > 0) - { - SCOPED_PHYSX_LOCK_READ(mBasicIosScene->getModulePhysXScene()); - for (uint32_t iShape = 0; iShape < numCollidingObjects; iShape++) - { - PxShape* shape = mOverlapHits[iShape].shape; - PxRigidActor* actor = mOverlapHits[iShape].actor; - - PxBounds3 shapeWorldBounds = PxShapeExt::getWorldBounds(*shape, *actor); - PxTransform actorGlobalPose = shape->getActor()->getGlobalPose(); - PxTransform shapeGlobalPose = actorGlobalPose.transform(shape->getLocalPose()); - - PX_ASSERT(!shapeWorldBounds.isEmpty()); - shapeWorldBounds.fattenFast(collisionRadius); - - switch (shape->getGeometryType()) - { - case PxGeometryType::eBOX: - { - PxBoxGeometry boxGeom; - shape->getBoxGeometry(boxGeom); - - CollisionBoxData data; - - data.aabb = shapeWorldBounds; - data.pose = shapeGlobalPose; - data.inversePose = data.pose.getInverse(); - - data.halfSize = boxGeom.halfExtents; - - FillCollisionData(data, shape); - simParams.boxes.updateElem(_storage_, data, numBoxes++); - } - break; - case PxGeometryType::eSPHERE: - { - PxSphereGeometry sphereGeom; - shape->getSphereGeometry(sphereGeom); - - CollisionSphereData data; - - data.aabb = shapeWorldBounds; - data.pose = shapeGlobalPose; - data.inversePose = data.pose.getInverse(); - - data.radius = sphereGeom.radius; - //extend - data.radius += simParams.collisionDistance; - - FillCollisionData(data, shape); - simParams.spheres.updateElem(_storage_, data, numSpheres++); - } - break; - case PxGeometryType::eCAPSULE: - { - PxCapsuleGeometry capsuleGeom; - shape->getCapsuleGeometry(capsuleGeom); - - CollisionCapsuleData data; - - data.aabb = shapeWorldBounds; - data.pose = shapeGlobalPose; - data.inversePose = data.pose.getInverse(); - - data.halfHeight = capsuleGeom.halfHeight; - data.radius = capsuleGeom.radius; - //extend - data.radius += simParams.collisionDistance; - - FillCollisionData(data, shape); - simParams.capsules.updateElem(_storage_, data, numCapsules++); - } - break; - case PxGeometryType::ePLANE: - { - CollisionHalfSpaceData data; - - data.origin = shapeGlobalPose.p; - data.normal = shapeGlobalPose.rotate(PxVec3(1, 0, 0)); - //extend - data.origin += data.normal * simParams.collisionDistance; - - FillCollisionData(data, shape); - simParams.halfSpaces.updateElem(_storage_, data, numHalfSpaces++); - } - break; - case PxGeometryType::eCONVEXMESH: - { - if (mAsset->mParams->collisionWithConvex) - { - PxConvexMeshGeometry convexGeom; - shape->getConvexMeshGeometry(convexGeom); - - CollisionConvexMeshData data; - - data.aabb = shapeWorldBounds; - data.pose = shapeGlobalPose; - data.inversePose = data.pose.getInverse(); - - //get ConvexMesh - const PxConvexMesh* convexMesh = convexGeom.convexMesh; - - uint32_t numPolygons = convexMesh->getNbPolygons(); - uint32_t numVertices = convexMesh->getNbVertices(); - uint32_t polygonsDataSize = 0; - for (uint32_t i = 0; i < numPolygons; i++) - { - physx::PxHullPolygon polygon; - bool polygonDataTest = convexMesh->getPolygonData(i, polygon); - PX_UNUSED( polygonDataTest ); - PX_ASSERT( polygonDataTest ); - - polygonsDataSize += (1 + polygon.mNbVerts); - } - - if (mConvexPlanes.getSize() + numPolygons <= mConvexPlanes.getCapacity() && - mConvexVerts.getSize() + numVertices <= mConvexVerts.getCapacity() && - mConvexPolygonsData.getSize() + polygonsDataSize <= mConvexPolygonsData.getCapacity()) - { - data.numPolygons = numPolygons; - data.firstPlane = mConvexPlanes.getSize(); - data.firstVertex = mConvexVerts.getSize(); - data.polygonsDataOffset = mConvexPolygonsData.getSize(); - - PxPlane* convexPlanes = mConvexPlanes.getPtr() + data.firstPlane; - PxVec4* convexVerts = mConvexVerts.getPtr() + data.firstVertex; - uint32_t* convexPolygonsData = mConvexPolygonsData.getPtr() + data.polygonsDataOffset; - - mConvexPlanes.setSize(data.firstPlane + numPolygons); - mConvexVerts.setSize(data.firstVertex + numVertices); - mConvexPolygonsData.setSize(data.polygonsDataOffset + polygonsDataSize); - - const PxMeshScale convexScaleInv( convexGeom.scale.getInverse() ); - //copy Convex Planes & Polygon Data - const uint8_t* srcIndices = convexMesh->getIndexBuffer(); - for (uint32_t i = 0; i < numPolygons; i++) - { - physx::PxHullPolygon polygon; - bool polygonDataTest = convexMesh->getPolygonData(i, polygon); - PX_UNUSED( polygonDataTest ); - PX_ASSERT( polygonDataTest ); - PxPlane plane(polygon.mPlane[0], polygon.mPlane[1], polygon.mPlane[2], polygon.mPlane[3]); - plane.n = convexScaleInv.transform(plane.n); - plane.normalize(); - *convexPlanes++ = plane; - - const uint32_t polygonVertCount = polygon.mNbVerts; - const uint8_t* polygonIndices = srcIndices + polygon.mIndexBase; - - *convexPolygonsData++ = polygonVertCount; - for (uint32_t j = 0; j < polygonVertCount; ++j) - { - *convexPolygonsData++ = *polygonIndices++; - } - } - - //copy Convex Vertices - const PxVec3* srcVertices = convexMesh->getVertices(); - for (uint32_t i = 0; i < numVertices; i++) - { - *convexVerts++ = PxVec4(convexGeom.scale.transform(*srcVertices++), 0); - } - } - else - { - APEX_DEBUG_WARNING("BasicIosActorImpl: out of memory to store Convex data"); - - data.numPolygons = 0; - data.firstPlane = 0; - data.firstVertex = 0; - data.polygonsDataOffset = 0; - } - - FillCollisionData(data, shape); - simParams.convexMeshes.updateElem(_storage_, data, numConvexMeshes++); - } - break; - } - case PxGeometryType::eTRIANGLEMESH: - { - if (mAsset->mParams->collisionWithTriangleMesh) - { - PxTriangleMeshGeometry trimeshGeom; - shape->getTriangleMeshGeometry(trimeshGeom); - - CollisionTriMeshData data; - - data.aabb = shapeWorldBounds; - PX_ASSERT(!data.aabb.isEmpty()); - data.aabb.fattenFast( simParams.collisionDistance + simParams.collisionThreshold ); - data.pose = shapeGlobalPose; - data.inversePose = data.pose.getInverse(); - - //triangle mesh data - const PxTriangleMesh* trimesh = trimeshGeom.triangleMesh; - - const uint32_t numTrimeshIndices = trimesh->getNbTriangles() * 3; - const uint32_t numTrimeshVerts = trimesh->getNbVertices(); - - if (mTrimeshIndices.getSize() + numTrimeshIndices <= mTrimeshIndices.getCapacity() && - mTrimeshVerts.getSize() + numTrimeshVerts <= mTrimeshVerts.getCapacity()) - { - data.numTriangles = trimesh->getNbTriangles(); - data.firstIndex = mTrimeshIndices.getSize(); - data.firstVertex = mTrimeshVerts.getSize(); - - mTrimeshIndices.setSize(data.firstIndex + numTrimeshIndices); - //copy TriangleMesh indices - uint32_t* trimeshIndices = mTrimeshIndices.getPtr() + data.firstIndex; - - const bool has16BitIndices = (trimesh->getTriangleMeshFlags() & PxTriangleMeshFlag::e16_BIT_INDICES); - if (has16BitIndices) - { - const uint16_t* srcIndices = static_cast<const uint16_t*>(trimesh->getTriangles()); - for( uint32_t i = 0; i < numTrimeshIndices; i++) - { - trimeshIndices[i] = srcIndices[i]; - } - } - else - { - const uint32_t* srcIndices = static_cast<const uint32_t*>(trimesh->getTriangles()); - for( uint32_t i = 0; i < numTrimeshIndices; i++) - { - trimeshIndices[i] = srcIndices[i]; - } - } - - mTrimeshVerts.setSize(data.firstVertex + numTrimeshVerts); - //copy TriangleMesh vertices - PxVec4* trimeshVerts = mTrimeshVerts.getPtr() + data.firstVertex; - const PxVec3* srcVertices = trimesh->getVertices(); - for( uint32_t i = 0; i < numTrimeshVerts; i++) - { - trimeshVerts[i] = PxVec4(trimeshGeom.scale.transform(srcVertices[i]), 0); - } - } - else - { - APEX_DEBUG_WARNING("BasicIosActorImpl: out of memory to store TriangleMesh data"); - - data.numTriangles = 0; - data.firstIndex = 0; - data.firstVertex = 0; - } - - FillCollisionData(data, shape); - simParams.trimeshes.updateElem(_storage_, data, numTriMeshes++); - } - break; - } - default: - break; - } - - } - - } - mSimulationParamsHandle.update(_storage_, simParams); - } - - void BasicIosActorImpl::setTaskDependencies(PxTask* iosTask, bool isDataOnDevice) - { - PxTaskManager* tm = mBasicIosScene->getApexScene().getTaskManager(); - - iosTask->startAfter(mInjectTask->getTaskID()); - - if (mFieldSamplerQuery != NULL) - { - float deltaTime = mBasicIosScene->getApexScene().getPhysXSimulateTime(); - - FieldSamplerQueryDataIntl queryData; - queryData.timeStep = deltaTime; - queryData.count = mParticleCount; - queryData.isDataOnDevice = isDataOnDevice; - queryData.positionStrideBytes = sizeof(PxVec4); - queryData.velocityStrideBytes = sizeof(PxVec4); - queryData.massStrideBytes = sizeof(PxVec4); - queryData.pmaInIndices = 0; - if (isDataOnDevice) - { -#if APEX_CUDA_SUPPORT - queryData.pmaInPosition = (float*)mBufDesc.pmaPositionMass->getGpuPtr(); - queryData.pmaInVelocity = (float*)mBufDesc.pmaVelocityLife->getGpuPtr(); - queryData.pmaInMass = &mBufDesc.pmaPositionMass->getGpuPtr()->w; - queryData.pmaOutField = mField.getGpuPtr(); -#endif - } - else - { - queryData.pmaInPosition = (float*)mBufDesc.pmaPositionMass->getPtr(); - queryData.pmaInVelocity = (float*)mBufDesc.pmaVelocityLife->getPtr(); - queryData.pmaInMass = &mBufDesc.pmaPositionMass->getPtr()->w; - queryData.pmaOutField = mField.getPtr(); - } - mFieldSamplerQuery->submitFieldSamplerQuery(queryData, iosTask->getTaskID()); - } - - PxTaskID postIofxTaskID = tm->getNamedTask(AST_PHYSX_FETCH_RESULTS); - PxTaskID iofxTaskID = mIofxMgr->getUpdateEffectsTaskID(postIofxTaskID); - if (iofxTaskID == (PxTaskID)0xFFFFFFFF) - { - iofxTaskID = postIofxTaskID; - } - iosTask->finishBefore(iofxTaskID); - } - - void BasicIosActorImpl::fetchResults() - { - for(uint32_t i = 0; i < mInjectorList.getSize(); ++i) - { - BasicParticleInjector* inj = DYNAMIC_CAST(BasicParticleInjector*)(mInjectorList.getResource(i)); - inj->assignSimParticlesCount(mInjectorsCounters.get(i)); - } - } - - void BasicIosActorImpl::injectNewParticles() - { - mInjectedBenefitSum = 0; - mInjectedBenefitMin = +FLT_MAX; - mInjectedBenefitMax = -FLT_MAX; - - uint32_t maxInjectCount = (mMaxTotalParticleCount - mParticleCount); - - uint32_t injectCount = 0; - uint32_t lastInjectCount = 0; - do - { - lastInjectCount = injectCount; - for (uint32_t i = 0; i < mInjectorList.getSize(); i++) - { - BasicParticleInjector* inj = DYNAMIC_CAST(BasicParticleInjector*)(mInjectorList.getResource(i)); - if (inj->mInjectedParticles.size() == 0) - { - continue; - } - - if (injectCount < maxInjectCount) - { - IosNewObject obj; - if (inj->mInjectedParticles.popFront(obj)) - { - uint32_t injectIndex = mParticleCount + injectCount; - - float particleMass = mAsset->getParticleMass(); - mBufDesc.pmaPositionMass->get(injectIndex) = PxVec4(obj.initialPosition.x, obj.initialPosition.y, obj.initialPosition.z, particleMass); - mBufDesc.pmaVelocityLife->get(injectIndex) = PxVec4(obj.initialVelocity.x, obj.initialVelocity.y, obj.initialVelocity.z, 1.0f); - mBufDesc.pmaActorIdentifiers->get(injectIndex) = obj.iofxActorID; - - mBufDesc.pmaUserData->get(injectIndex) = obj.userData; - - mLifeSpan[injectIndex] = obj.lifetime; - mInjector[injectIndex] = inj->mInjectorID; - mBenefit[injectIndex] = obj.lodBenefit; - - mInjectedBenefitSum += obj.lodBenefit; - mInjectedBenefitMin = PxMin(mInjectedBenefitMin, obj.lodBenefit); - mInjectedBenefitMax = PxMax(mInjectedBenefitMax, obj.lodBenefit); - - ++injectCount; - } - } - } - } - while (injectCount > lastInjectCount); - - mInjectedCount = injectCount; - - //clear injectors FIFO - for (uint32_t i = 0; i < mInjectorList.getSize(); i++) - { - BasicParticleInjector* inj = DYNAMIC_CAST(BasicParticleInjector*)(mInjectorList.getResource(i)); - - IosNewObject obj; - while (inj->mInjectedParticles.popFront(obj)) - { - ; - } - } - } - - //////////////////////////////////////////////////////////////////////////////// - - BasicParticleInjector::BasicParticleInjector(ResourceList& list, BasicIosActorImpl& actor, uint32_t injectorID) - : mIosActor(&actor) - , mIofxClient(NULL) - , mVolume(NULL) - , mLastRandomID(0) - , mVolumeID(IofxActorIDIntl::NO_VOLUME) - , mInjectorID(injectorID) - , mSimulatedParticlesCount(0) - { - mRand.setSeed(actor.mBasicIosScene->getApexScene().getSeed()); - - list.add(*this); - - setLODWeights(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); - - mInjectedParticles.reserve(actor.mMaxTotalParticleCount); - } - - BasicParticleInjector::~BasicParticleInjector() - { - } - - void BasicParticleInjector::setListIndex(ResourceList& list, uint32_t index) - { - m_listIndex = index; - m_list = &list; - - InjectorParams injParams; - mIosActor->mBasicIosScene->fetchInjectorParams(mInjectorID, injParams); - - injParams.mLocalIndex = index; - - mIosActor->mBasicIosScene->updateInjectorParams(mInjectorID, injParams); - } - - - /* Emitter calls this function to adjust their particle weights with respect to other emitters */ - void BasicParticleInjector::setLODWeights(float maxDistance, float distanceWeight, float speedWeight, float lifeWeight, float separationWeight, float bias) - { - PX_UNUSED(separationWeight); - - InjectorParams injParams; - mIosActor->mBasicIosScene->fetchInjectorParams(mInjectorID, injParams); - - //normalize weights - float totalWeight = distanceWeight + speedWeight + lifeWeight; - if (totalWeight > PX_EPS_F32) - { - distanceWeight /= totalWeight; - speedWeight /= totalWeight; - lifeWeight /= totalWeight; - } - - injParams.mLODMaxDistance = maxDistance; - injParams.mLODDistanceWeight = distanceWeight; - injParams.mLODSpeedWeight = speedWeight; - injParams.mLODLifeWeight = lifeWeight; - injParams.mLODBias = bias; - - mIosActor->mBasicIosScene->updateInjectorParams(mInjectorID, injParams); - } - - - PxTaskID BasicParticleInjector::getCompletionTaskID() const - { - return mIosActor->mInjectTask->getTaskID(); - } - - void BasicParticleInjector::setObjectScale(float objectScale) - { - PX_ASSERT(mIofxClient); - IofxManagerClientIntl::Params params; - mIofxClient->getParams(params); - params.objectScale = objectScale; - mIofxClient->setParams(params); - } - - void BasicParticleInjector::init(IofxAsset* iofxAsset) - { - mIofxClient = mIosActor->mIofxMgr->createClient(iofxAsset, IofxManagerClientIntl::Params()); - - /* add this injector to the IOFX asset's context (so when the IOFX goes away our ::release() is called) */ - iofxAsset->addDependentActor(this); - - mRandomActorClassIDs.clear(); - if (iofxAsset->getMeshAssetCount() < 2) - { - mRandomActorClassIDs.pushBack(mIosActor->mIofxMgr->getActorClassID(mIofxClient, 0)); - return; - } - - /* Cache actorClassIDs for this asset */ - physx::Array<uint16_t> temp; - for (uint32_t i = 0 ; i < iofxAsset->getMeshAssetCount() ; i++) - { - uint32_t w = iofxAsset->getMeshAssetWeight(i); - uint16_t acid = mIosActor->mIofxMgr->getActorClassID(mIofxClient, (uint16_t) i); - for (uint32_t j = 0 ; j < w ; j++) - { - temp.pushBack(acid); - } - } - - mRandomActorClassIDs.reserve(temp.size()); - while (temp.size()) - { - uint32_t index = (uint32_t)mRand.getScaled(0, (float)temp.size()); - mRandomActorClassIDs.pushBack(temp[ index ]); - temp.replaceWithLast(index); - } - } - - - void BasicParticleInjector::release() - { - if (mInRelease) - { - return; - } - mInRelease = true; - mIosActor->releaseInjector(*this); - } - - void BasicParticleInjector::destroy() - { - ApexActor::destroy(); - - mIosActor->mIofxMgr->releaseClient(mIofxClient); - - delete this; - } - - void BasicParticleInjector::setPreferredRenderVolume(nvidia::apex::RenderVolume* volume) - { - mVolume = volume; - mVolumeID = mVolume ? mIosActor->mIofxMgr->getVolumeID(mVolume) : IofxActorIDIntl::NO_VOLUME; - } - - /* Emitter calls this virtual injector API to insert new particles. It is safe for an emitter to - * call this function at any time except for during the IOS::fetchResults(). Since - * ParticleScene::fetchResults() is single threaded, it should be safe to call from - * emitter::fetchResults() (destruction may want to do this because of contact reporting) - */ - void BasicParticleInjector::createObjects(uint32_t count, const IosNewObject* createList) - { - PX_PROFILE_ZONE("BasicIosCreateObjects", GetInternalApexSDK()->getContextId()); - - if (mRandomActorClassIDs.size() == 0) - { - return; - } - - PxVec3 eyePos; - { - SceneIntl& apexScene = mIosActor->mBasicIosScene->getApexScene(); - READ_LOCK(apexScene); - eyePos = apexScene.getEyePosition(); - } - InjectorParams injParams; - mIosActor->mBasicIosScene->fetchInjectorParams(mInjectorID, injParams); - // Append new objects to our FIFO. We do copies because we must perform buffering for the - // emitters. We have to hold these new objects until there is room in the TurbulenceFS and the - // injector's virtID range to emit them. - for (uint32_t i = 0 ; i < count ; i++) - { - if (mInjectedParticles.size() == mInjectedParticles.capacity()) - { - break; - } - - IosNewObject obj = *createList++; - - obj.lodBenefit = calcParticleBenefit(injParams, eyePos, obj.initialPosition, obj.initialVelocity, 1.0f); - obj.iofxActorID.set(mVolumeID, mRandomActorClassIDs[ mLastRandomID++ ]); - mLastRandomID = mLastRandomID == mRandomActorClassIDs.size() ? 0 : mLastRandomID; - //mInjectedParticleBenefit += obj.lodBenefit; - mInjectedParticles.pushBack(obj); - } - } - -#if APEX_CUDA_SUPPORT - void BasicParticleInjector::createObjects(ApexMirroredArray<const IosNewObject>& createArray) - { - PX_UNUSED(createArray); - - // An emitter will call this API when it has filled a host or device buffer. The injector - // should trigger a copy to the location it would like to see the resulting data when the - // IOS is finally ticked. - - PX_ALWAYS_ASSERT(); /* Not yet supported */ - } -#endif - - } -} // namespace nvidia - diff --git a/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp b/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp deleted file mode 100644 index 5fbf7296..00000000 --- a/APEX_1.4/module/basicios/src/BasicIosAssetImpl.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "Apex.h" - -#include "BasicIosAssetImpl.h" -#include "BasicIosActorImpl.h" -//#include "ApexSharedSerialization.h" -#include "ModuleBasicIosImpl.h" -#include "ApexUsingNamespace.h" - -#if APEX_CUDA_SUPPORT -#include "BasicIosActorGPU.h" -#endif - -namespace nvidia -{ -namespace basicios -{ - -void BasicIosAssetImpl::processParams() -{ - NvParameterized::Handle handle(mParams); - if (NvParameterized::ERROR_NONE != mParams->getParameterHandle("particleMass.type", handle)) - { - PX_ALWAYS_ASSERT(); - return; - } - - const char* type = 0; - if (NvParameterized::ERROR_NONE != handle.getParamEnum(type)) - { - PX_ALWAYS_ASSERT(); - return; - } - - mMassDistribType = 0 == nvidia::strcmp("uniform", type) ? UNIFORM : NORMAL; -} - -BasicIosAssetImpl::BasicIosAssetImpl(ModuleBasicIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) : - mModule(module), - mName(name), - mParams((BasicIOSAssetParam*)params) -{ - list.add(*this); - processParams(); -} - -BasicIosAssetImpl::BasicIosAssetImpl(ModuleBasicIosImpl* module, ResourceList& list, const char* name): - mModule(module), - mName(name), - mParams(0) -{ - NvParameterized::Traits* traits = GetInternalApexSDK()->getParameterizedTraits(); - mParams = (BasicIOSAssetParam*)traits->createNvParameterized(BasicIOSAssetParam::staticClassName()); - - list.add(*this); - - processParams(); -} - -float BasicIosAssetImpl::getParticleMass() const -{ - READ_ZONE(); - float m = 0.0f; - switch (mMassDistribType) - { - case UNIFORM: - m = mParams->particleMass.center + mParams->particleMass.spread * mSRand.getNext(); - break; - case NORMAL: - m = mNormRand.getScaled(mParams->particleMass.center, mParams->particleMass.spread); - break; - default: - PX_ALWAYS_ASSERT(); - } - - return m <= 0 ? mParams->particleMass.center : m; // Clamp -} - -void BasicIosAssetImpl::release() -{ - mModule->mSdk->releaseAsset(*this); -} - -void BasicIosAssetImpl::destroy() -{ - if (mParams) - { - mParams->destroy(); - mParams = NULL; - } - - delete this; -} - -BasicIosAssetImpl::~BasicIosAssetImpl() -{ -} - -BasicIosActorImpl* BasicIosAssetImpl::getIosActorInScene(Scene& scene, bool mesh) const -{ - BasicIosScene* iosScene = mModule->getBasicIosScene(scene); - if (iosScene != 0) - { - for (uint32_t i = 0 ; i < mIosActorList.getSize() ; i++) - { - BasicIosActorImpl* iosActor = DYNAMIC_CAST(BasicIosActorImpl*)(mIosActorList.getResource(i)); - if (iosActor->mBasicIosScene == iosScene && iosActor->mIsMesh == mesh) - { - return iosActor; - } - } - } - return NULL; -} - -Actor* BasicIosAssetImpl::createIosActor(Scene& scene, nvidia::apex::IofxAsset* iofxAsset) -{ - BasicIosActorImpl* iosActor = getIosActorInScene(scene, iofxAsset->getMeshAssetCount() > 0); - if (iosActor == 0) - { - BasicIosScene* iosScene = mModule->getBasicIosScene(scene); - if (iosScene != 0) - { - iosActor = iosScene->createIosActor(mIosActorList, *this, *iofxAsset); - iosActor->mIsMesh = iofxAsset->getMeshAssetCount() > 0; - } - } - PX_ASSERT(iosActor); - return iosActor; -} - -void BasicIosAssetImpl::releaseIosActor(Actor& actor) -{ - BasicIosActorImpl* iosActor = DYNAMIC_CAST(BasicIosActorImpl*)(&actor); - iosActor->destroy(); -} - -uint32_t BasicIosAssetImpl::forceLoadAssets() -{ - return 0; -} - -bool BasicIosAssetImpl::getSupportsDensity() const -{ - BasicIOSAssetParam* gridParams = (BasicIOSAssetParam*)(getAssetNvParameterized()); - return (gridParams->GridDensity.Enabled); -} - -#ifndef WITHOUT_APEX_AUTHORING -/******************* BasicIosAssetAuthoringImpl *******************/ -BasicIosAssetAuthoringImpl::BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list): - BasicIosAssetImpl(module, list, "Authoring") -{ -} -BasicIosAssetAuthoringImpl::BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list, const char* name): - BasicIosAssetImpl(module, list, name) -{ -} - -BasicIosAssetAuthoringImpl::BasicIosAssetAuthoringImpl(ModuleBasicIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) : - BasicIosAssetImpl(module, list, params, name) -{ -} - -void BasicIosAssetAuthoringImpl::release() -{ - delete this; -} - -void BasicIosAssetAuthoringImpl::setCollisionGroupName(const char* collisionGroupName) -{ - NvParameterized::Handle h(*mParams, "collisionGroupName"); - h.setParamString(collisionGroupName); -} - -void BasicIosAssetAuthoringImpl::setCollisionGroupMaskName(const char* collisionGroupMaskName) -{ - NvParameterized::Handle h(*mParams, "collisionGroupMaskName"); - h.setParamString(collisionGroupMaskName); -} - - -#endif - -} -} // namespace nvidia diff --git a/APEX_1.4/module/basicios/src/BasicIosScene.cpp b/APEX_1.4/module/basicios/src/BasicIosScene.cpp deleted file mode 100644 index c142a5e4..00000000 --- a/APEX_1.4/module/basicios/src/BasicIosScene.cpp +++ /dev/null @@ -1,469 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "Apex.h" - -#include "BasicIosScene.h" -#include "ModuleBasicIosImpl.h" -#include "BasicIosActorImpl.h" -#include "BasicIosActorCPU.h" -#include "ApexUsingNamespace.h" -#include "SceneIntl.h" -#include "ModulePerfScope.h" -#include "ModuleFieldSamplerIntl.h" -#include "RenderDebugInterface.h" - -#if APEX_CUDA_SUPPORT -#include <cuda.h> -#include "ApexCutil.h" -#include "BasicIosActorGPU.h" - -#include "ApexCudaSource.h" -#endif - -#include <PxScene.h> - -namespace nvidia -{ -namespace basicios -{ - -#pragma warning(push) -#pragma warning(disable:4355) - -BasicIosScene::BasicIosScene(ModuleBasicIosImpl& _module, SceneIntl& scene, RenderDebugInterface* debugRender, ResourceList& list) - : mPhysXScene(NULL) - , mModule(&_module) - , mApexScene(&scene) - , mDebugRender(debugRender) - , mSumBenefit(0.0f) - , mFieldSamplerManager(NULL) - , mInjectorAllocator(this) -{ - list.add(*this); - - /* Initialize reference to BasicIosDebugRenderParams */ - mDebugRenderParams = DYNAMIC_CAST(DebugRenderParams*)(mApexScene->getDebugRenderParams()); - PX_ASSERT(mDebugRenderParams); - NvParameterized::Handle handle(*mDebugRenderParams), memberHandle(*mDebugRenderParams); - int size; - - if (mDebugRenderParams->getParameterHandle("moduleName", handle) == NvParameterized::ERROR_NONE) - { - handle.getArraySize(size, 0); - handle.resizeArray(size + 1); - if (handle.getChildHandle(size, memberHandle) == NvParameterized::ERROR_NONE) - { - memberHandle.initParamRef(BasicIosDebugRenderParams::staticClassName(), true); - } - } - - /* Load reference to BasicIosDebugRenderParams */ - NvParameterized::Interface* refPtr = NULL; - memberHandle.getParamRef(refPtr); - mBasicIosDebugRenderParams = DYNAMIC_CAST(BasicIosDebugRenderParams*)(refPtr); - PX_ASSERT(mBasicIosDebugRenderParams); -} - -#pragma warning(pop) - -BasicIosScene::~BasicIosScene() -{ -} - -void BasicIosScene::destroy() -{ - removeAllActors(); - mApexScene->moduleReleased(*this); - delete this; -} - -void BasicIosScene::setModulePhysXScene(PxScene* s) -{ - if (mPhysXScene == s) - { - return; - } - - mPhysXScene = s; - for (uint32_t i = 0; i < mActorArray.size(); ++i) - { - BasicIosActorImpl* actor = DYNAMIC_CAST(BasicIosActorImpl*)(mActorArray[i]); - actor->setPhysXScene(mPhysXScene); - } -} - -void BasicIosScene::visualize() -{ -#ifndef WITHOUT_DEBUG_VISUALIZE - if (!mBasicIosDebugRenderParams->VISUALIZE_BASIC_IOS_ACTOR) - { - return; - } - - RENDER_DEBUG_IFACE(mDebugRender)->pushRenderState(); - for (uint32_t i = 0 ; i < mActorArray.size() ; i++) - { - BasicIosActorImpl* testActor = DYNAMIC_CAST(BasicIosActorImpl*)(mActorArray[ i ]); - testActor->visualize(); - } - RENDER_DEBUG_IFACE(mDebugRender)->popRenderState(); -#endif -} - -void BasicIosScene::submitTasks(float /*elapsedTime*/, float /*substepSize*/, uint32_t /*numSubSteps*/) -{ - for (uint32_t i = 0; i < mActorArray.size(); ++i) - { - BasicIosActorImpl* actor = DYNAMIC_CAST(BasicIosActorImpl*)(mActorArray[i]); - if (mPhysXScene) - { - PxVec3 gravity = mApexScene->getGravity(); - - if (actor->getGravity() != gravity) - { - actor->setGravity(gravity); - } - } - actor->submitTasks(); - } -} - -void BasicIosScene::setTaskDependencies() -{ - for (uint32_t i = 0; i < mActorArray.size(); ++i) - { - BasicIosActorImpl* actor = DYNAMIC_CAST(BasicIosActorImpl*)(mActorArray[i]); - actor->setTaskDependencies(); - } - - onSimulationStart(); -} - -void BasicIosScene::fetchResults() -{ - onSimulationFinish(); - - for (uint32_t i = 0; i < mActorArray.size(); ++i) - { - BasicIosActorImpl* actor = DYNAMIC_CAST(BasicIosActorImpl*)(mActorArray[i]); - actor->fetchResults(); - } -} - -FieldSamplerManagerIntl* BasicIosScene::getInternalFieldSamplerManager() -{ - if (mFieldSamplerManager == NULL) - { - ModuleFieldSamplerIntl* moduleFieldSampler = mModule->getInternalModuleFieldSampler(); - if (moduleFieldSampler != NULL) - { - mFieldSamplerManager = moduleFieldSampler->getInternalFieldSamplerManager(*mApexScene); - PX_ASSERT(mFieldSamplerManager != NULL); - } - } - return mFieldSamplerManager; -} - -/******************************** CPU Version ********************************/ - -void BasicIosSceneCPU::TimerCallback::operator()(void* stream) -{ - PX_UNUSED(stream); - - float elapsed = (float)mTimer.peekElapsedSeconds(); - mMinTime = PxMin(elapsed, mMinTime); - mMaxTime = PxMax(elapsed, mMaxTime); -} - -void BasicIosSceneCPU::TimerCallback::reset() -{ - mTimer.getElapsedSeconds(); - mMinTime = 1e20; - mMaxTime = 0.f; -} - -float BasicIosSceneCPU::TimerCallback::getElapsedTime() const -{ - return (mMaxTime - mMinTime) * 1000.f; -} - -BasicIosSceneCPU::BasicIosSceneCPU(ModuleBasicIosImpl& module, SceneIntl& scene, RenderDebugInterface* debugRender, ResourceList& list) - : BASIC_IOS_SCENE(module, scene, debugRender, list) -{ -} - -BasicIosSceneCPU::~BasicIosSceneCPU() -{ -} - - -void BasicIosSceneCPU::setCallbacks(BasicIosActorCPU* actor) -{ - actor->setOnStartFSCallback(&mTimerCallback); - actor->setOnFinishIOFXCallback(&mTimerCallback); -} - - -BasicIosActorImpl* BasicIosSceneCPU::createIosActor(ResourceList& list, BasicIosAssetImpl& asset, nvidia::apex::IofxAsset& iofxAsset) -{ - BasicIosActorCPU* actor = PX_NEW(BasicIosActorCPU)(list, asset, *this, iofxAsset); - setCallbacks(actor); - return actor; -} - -void BasicIosSceneCPU::fetchResults() -{ - BasicIosScene::fetchResults(); - - nvidia::apex::StatValue val; - val.Float = mTimerCallback.getElapsedTime(); - mTimerCallback.reset(); - if (val.Float > 0.f) - { - mApexScene->setApexStatValue(SceneIntl::ParticleSimulationTime, val); - } -} - -/******************************** GPU Version ********************************/ - -#if APEX_CUDA_SUPPORT - -BasicIosSceneGPU::EventCallback::EventCallback() : mIsCalled(false), mEvent(NULL) -{ -} -void BasicIosSceneGPU::EventCallback::init() -{ - if (mEvent == NULL) - { - CUT_SAFE_CALL(cuEventCreate((CUevent*)(&mEvent), CU_EVENT_DEFAULT)); - } -} - -BasicIosSceneGPU::EventCallback::~EventCallback() -{ - if (mEvent != NULL) - { - CUT_SAFE_CALL(cuEventDestroy((CUevent)mEvent)); - } -} - -void BasicIosSceneGPU::EventCallback::operator()(void* stream) -{ - if (mEvent != NULL) - { - CUT_SAFE_CALL(cuEventRecord((CUevent)mEvent, (CUstream)stream)); - mIsCalled = true; - } -} - -BasicIosSceneGPU::BasicIosSceneGPU(ModuleBasicIosImpl& module, SceneIntl& scene, RenderDebugInterface* debugRender, ResourceList& list) - : BASIC_IOS_SCENE(module, scene, debugRender, list) - , CudaModuleScene(scene, *mModule, APEX_CUDA_TO_STR(APEX_CUDA_MODULE_PREFIX)) - , mInjectorConstMemGroup(APEX_CUDA_OBJ_NAME(simulateStorage)) -{ - { - PxGpuDispatcher* gd = mApexScene->getTaskManager()->getGpuDispatcher(); - PX_ASSERT(gd != NULL); - PxScopedCudaLock _lock_(*gd->getCudaContextManager()); - - mOnSimulationStart.init(); - -//CUDA module objects -#include "../cuda/include/moduleList.h" - } - - { - mInjectorConstMemGroup.begin(); - - mInjectorParamsArrayHandle.alloc(mInjectorConstMemGroup.getStorage()); - - mInjectorConstMemGroup.end(); - } - -} - -BasicIosSceneGPU::~BasicIosSceneGPU() -{ - for (uint32_t i = 0; i < mOnStartCallbacks.size(); i++) - { - PX_DELETE(mOnStartCallbacks[i]); - } - for (uint32_t i = 0; i < mOnFinishCallbacks.size(); i++) - { - PX_DELETE(mOnFinishCallbacks[i]); - } - CudaModuleScene::destroy(*mApexScene); -} - - -void BasicIosSceneGPU::setCallbacks(BasicIosActorGPU* actor) -{ - mOnStartCallbacks.pushBack(PX_NEW(EventCallback)()); - mOnFinishCallbacks.pushBack(PX_NEW(EventCallback)()); - { - PxGpuDispatcher* gd = mApexScene->getTaskManager()->getGpuDispatcher(); - PX_ASSERT(gd != NULL); - PxScopedCudaLock _lock_(*gd->getCudaContextManager()); - - mOnStartCallbacks.back()->init(); - mOnFinishCallbacks.back()->init(); - } - actor->setOnStartFSCallback(mOnStartCallbacks.back()); - actor->setOnFinishIOFXCallback(mOnFinishCallbacks.back()); -} - - -BasicIosActorImpl* BasicIosSceneGPU::createIosActor(ResourceList& list, BasicIosAssetImpl& asset, nvidia::apex::IofxAsset& iofxAsset) -{ - BasicIosActorGPU* actor = PX_NEW(BasicIosActorGPU)(list, asset, *this, iofxAsset); - setCallbacks(actor); - return actor; -} - -void BasicIosSceneGPU::fetchInjectorParams(uint32_t injectorID, InjectorParams& injParams) -{ - APEX_CUDA_CONST_MEM_GROUP_SCOPE(mInjectorConstMemGroup); - - InjectorParamsArray injectorParamsArray; - mInjectorParamsArrayHandle.fetch(_storage_, injectorParamsArray); - PX_ASSERT(injectorID < injectorParamsArray.getSize()); - injectorParamsArray.fetchElem(_storage_, injParams, injectorID); -} -void BasicIosSceneGPU::updateInjectorParams(uint32_t injectorID, const InjectorParams& injParams) -{ - APEX_CUDA_CONST_MEM_GROUP_SCOPE(mInjectorConstMemGroup); - - InjectorParamsArray injectorParamsArray; - mInjectorParamsArrayHandle.fetch(_storage_, injectorParamsArray); - PX_ASSERT(injectorID < injectorParamsArray.getSize()); - injectorParamsArray.updateElem(_storage_, injParams, injectorID); -} - -bool BasicIosSceneGPU::growInjectorStorage(uint32_t newSize) -{ - APEX_CUDA_CONST_MEM_GROUP_SCOPE(mInjectorConstMemGroup); - - if (mApexScene->isSimulating()) - { - APEX_INTERNAL_ERROR("BasicIosSceneGPU::growInjectorStorage - is called while ApexScene in simulating!"); - PX_ASSERT(0); - } - - InjectorParamsArray injectorParamsArray; - mInjectorParamsArrayHandle.fetch(_storage_, injectorParamsArray); - if (injectorParamsArray.resize(_storage_, newSize)) - { - mInjectorParamsArrayHandle.update(_storage_, injectorParamsArray); - return true; - } - return false; -} - - -void BasicIosSceneGPU::onSimulationStart() -{ - BasicIosScene::onSimulationStart(); - - PxGpuDispatcher* gd = mApexScene->getTaskManager()->getGpuDispatcher(); - PX_ASSERT(gd != NULL); - PxScopedCudaLock _lock_(*gd->getCudaContextManager()); - - //we pass default 0 stream so that this copy happens before any kernel launches - APEX_CUDA_OBJ_NAME(simulateStorage).copyToDevice(gd->getCudaContextManager(), 0); - - mOnSimulationStart(NULL); -} - -void BasicIosSceneGPU::fetchResults() -{ - BasicIosScene::fetchResults(); - - PxGpuDispatcher* gd = mApexScene->getTaskManager()->getGpuDispatcher(); - PX_ASSERT(gd != NULL); - PxScopedCudaLock _lock_(*gd->getCudaContextManager()); - - nvidia::apex::StatValue val; - val.Float = 0.f; - float minTime = 1e30; - - for (uint32_t i = 0 ; i < this->mOnStartCallbacks.size(); i++) - { - if (mOnStartCallbacks[i]->mIsCalled && mOnFinishCallbacks[i]->mIsCalled) - { - mOnStartCallbacks[i]->mIsCalled = false; - mOnFinishCallbacks[i]->mIsCalled = false; - CUT_SAFE_CALL(cuEventSynchronize((CUevent)mOnStartCallbacks[i]->getEvent())); - CUT_SAFE_CALL(cuEventSynchronize((CUevent)mOnFinishCallbacks[i]->getEvent())); - float tmp; - CUT_SAFE_CALL(cuEventElapsedTime(&tmp, (CUevent)mOnSimulationStart.getEvent(), (CUevent)mOnStartCallbacks[i]->getEvent())); - minTime = PxMin(tmp, minTime); - CUT_SAFE_CALL(cuEventElapsedTime(&tmp, (CUevent)mOnSimulationStart.getEvent(), (CUevent)mOnFinishCallbacks[i]->getEvent())); - val.Float = PxMax(tmp, val.Float); - } - } - val.Float -= PxMin(minTime, val.Float); - - if (val.Float > 0.f) - { - mApexScene->setApexStatValue(SceneIntl::ParticleSimulationTime, val); - } -} -#endif - -// BasicIosInjectorAllocator -uint32_t BasicIosInjectorAllocator::allocateInjectorID() -{ - uint32_t size = mInjectorList.size(); - if (mFreeInjectorListStart == NULL_INJECTOR_INDEX) - { - //try to get new injectors - if (mStorage->growInjectorStorage(size + 1) == false) - { - return NULL_INJECTOR_INDEX; - } - - mFreeInjectorListStart = size; - - mInjectorList.resize(size + 1); - mInjectorList.back() = NULL_INJECTOR_INDEX; - } - uint32_t injectorID = mFreeInjectorListStart; - mFreeInjectorListStart = mInjectorList[injectorID]; - mInjectorList[injectorID] = USED_INJECTOR_INDEX; - return injectorID; -} - -void BasicIosInjectorAllocator::releaseInjectorID(uint32_t injectorID) -{ - //add to released injector list - PX_ASSERT(mInjectorList[injectorID] == USED_INJECTOR_INDEX); - mInjectorList[injectorID] = mReleasedInjectorListStart; - mReleasedInjectorListStart = injectorID; -} - -void BasicIosInjectorAllocator::flushReleased() -{ - //add all released injectors to free injector list - while (mReleasedInjectorListStart != NULL_INJECTOR_INDEX) - { - uint32_t injectorID = mInjectorList[mReleasedInjectorListStart]; - - //add to free injector list - mInjectorList[mReleasedInjectorListStart] = mFreeInjectorListStart; - mFreeInjectorListStart = mReleasedInjectorListStart; - - mReleasedInjectorListStart = injectorID; - } -} - -} -} // namespace nvidia diff --git a/APEX_1.4/module/basicios/src/ModuleBasicIosImpl.cpp b/APEX_1.4/module/basicios/src/ModuleBasicIosImpl.cpp deleted file mode 100644 index 4d149ded..00000000 --- a/APEX_1.4/module/basicios/src/ModuleBasicIosImpl.cpp +++ /dev/null @@ -1,416 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ - - -#include "Apex.h" -#include "ApexSDKIntl.h" -#include "ModuleBasicIosImpl.h" -#include "ModuleBasicIosRegistration.h" -#include "ModulePerfScope.h" -#include "ApexUsingNamespace.h" -#include "BasicIosSceneCPU.h" -#if APEX_CUDA_SUPPORT -#include "BasicIosSceneGPU.h" -#endif -#if ENABLE_TEST -#include "BasicIosTestSceneCPU.h" -#if APEX_CUDA_SUPPORT -#include "BasicIosTestSceneGPU.h" -#endif -#endif -#include "BasicIosAssetImpl.h" -#include "BasicIosActorImpl.h" - -#include "SceneIntl.h" -#include "ModuleIofxIntl.h" -#include "ModuleFieldSamplerIntl.h" -#include "PsMemoryBuffer.h" - -#include "Lock.h" - -#include "ReadCheck.h" - -using namespace basicios; - -namespace nvidia -{ -namespace apex -{ - -#if defined(_USRDLL) - -/* Modules don't have to link against the framework, they keep their own */ -ApexSDKIntl* gApexSdk = 0; -ApexSDK* GetApexSDK() -{ - return gApexSdk; -} -ApexSDKIntl* GetInternalApexSDK() -{ - return gApexSdk; -} - -APEX_API Module* CALL_CONV createModule( - ApexSDKIntl* inSdk, - ModuleIntl** niRef, - uint32_t APEXsdkVersion, - uint32_t PhysXsdkVersion, - ApexCreateError* errorCode) -{ - if (APEXsdkVersion != APEX_SDK_VERSION) - { - if (errorCode) - { - *errorCode = APEX_CE_WRONG_VERSION; - } - return NULL; - } - - if (PhysXsdkVersion != PX_PHYSICS_VERSION) - { - if (errorCode) - { - *errorCode = APEX_CE_WRONG_VERSION; - } - return NULL; - } - - /* Setup common module global variables */ - gApexSdk = inSdk; - - ModuleBasicIosImpl* impl = PX_NEW(ModuleBasicIos)(inSdk); - *niRef = (ModuleIntl*) impl; - return (ModuleBase*) impl; -} -#else -/* Statically linking entry function */ -void instantiateModuleBasicIos() -{ - ApexSDKIntl* sdk = GetInternalApexSDK(); - basicios::ModuleBasicIosImpl* impl = PX_NEW(basicios::ModuleBasicIosImpl)(sdk); - sdk->registerExternalModule((Module*) impl, (ModuleIntl*) impl); -} -#endif -} - -namespace basicios -{ -/* =================== ModuleBasicIosImpl =================== */ - - -AuthObjTypeID BasicIosAssetImpl::mAssetTypeID; - -#ifdef WITHOUT_APEX_AUTHORING - -class BasicIosAssetDummyAuthoring : public AssetAuthoring, public UserAllocated -{ -public: - BasicIosAssetDummyAuthoring(ModuleBasicIosImpl* module, ResourceList& list, NvParameterized::Interface* params, const char* name) - { - PX_UNUSED(module); - PX_UNUSED(list); - PX_UNUSED(params); - PX_UNUSED(name); - } - - BasicIosAssetDummyAuthoring(ModuleBasicIosImpl* module, ResourceList& list, const char* name) - { - PX_UNUSED(module); - PX_UNUSED(list); - PX_UNUSED(name); - } - - BasicIosAssetDummyAuthoring(ModuleBasicIosImpl* module, ResourceList& list) - { - PX_UNUSED(module); - PX_UNUSED(list); - } - - virtual void setToolString(const char* /*toolName*/, const char* /*toolVersion*/, uint32_t /*toolChangelist*/) - { - - } - - - virtual void release() - { - destroy(); - } - - // internal - void destroy() - { - delete this; - } - - /** - * \brief Returns the name of this APEX authorable object type - */ - virtual const char* getObjTypeName() const - { - return BasicIosAssetImpl::getClassName(); - } - - /** - * \brief Prepares a fully authored Asset Authoring object for a specified platform - */ - virtual bool prepareForPlatform(nvidia::apex::PlatformTag) - { - PX_ASSERT(0); - return false; - } - - const char* getName(void) const - { - return NULL; - } - - /** - * \brief Save asset's NvParameterized interface, may return NULL - */ - virtual NvParameterized::Interface* getNvParameterized() const - { - PX_ASSERT(0); - return NULL; - } - - virtual NvParameterized::Interface* releaseAndReturnNvParameterizedInterface(void) - { - PX_ALWAYS_ASSERT(); - return NULL; - } -}; - -typedef ApexAuthorableObject<ModuleBasicIosImpl, BasicIosAssetImpl, BasicIosAssetDummyAuthoring> BasicIOSAO; - -#else -typedef ApexAuthorableObject<ModuleBasicIosImpl, BasicIosAssetImpl, BasicIosAssetAuthoringImpl> BasicIOSAO; -#endif - -ModuleBasicIosImpl::ModuleBasicIosImpl(ApexSDKIntl* sdk) -{ - mSdk = sdk; - mApiProxy = this; - mName = "BasicIOS"; - mModuleParams = NULL; - mIofxModule = NULL; - mFieldSamplerModule = NULL; - - /* Register this module's authorable object types and create their namespaces */ - const char* pName = BasicIOSAssetParam::staticClassName(); - BasicIOSAO* eAO = PX_NEW(BasicIOSAO)(this, mAuthorableObjects, pName); - BasicIosAssetImpl::mAssetTypeID = eAO->getResID(); - - /* Register the NvParameterized factories */ - NvParameterized::Traits* traits = mSdk->getParameterizedTraits(); - ModuleBasicIosRegistration::invokeRegistration(traits); -} - -AuthObjTypeID ModuleBasicIosImpl::getModuleID() const -{ - return BasicIosAssetImpl::mAssetTypeID; -} - -ModuleBasicIosImpl::~ModuleBasicIosImpl() -{ -} - -void ModuleBasicIosImpl::destroy() -{ - NvParameterized::Traits* traits = mSdk->getParameterizedTraits(); - - if (mModuleParams) - { - mModuleParams->destroy(); - mModuleParams = NULL; - } - - ModuleBase::destroy(); - - if (traits) - { - /* Remove the NvParameterized factories */ - ModuleBasicIosRegistration::invokeUnregistration(traits); - } - - delete this; -} - -void ModuleBasicIosImpl::init(const ModuleBasicIosDesc&) -{ -} - -void ModuleBasicIosImpl::init(NvParameterized::Interface&) -{ - ModuleBasicIosDesc desc; - init(desc); -} - -NvParameterized::Interface* ModuleBasicIosImpl::getDefaultModuleDesc() -{ - NvParameterized::Traits* traits = mSdk->getParameterizedTraits(); - - if (!mModuleParams) - { - mModuleParams = DYNAMIC_CAST(BasicIosModuleParameters*) - (traits->createNvParameterized("BasicIosModuleParameters")); - PX_ASSERT(mModuleParams); - } - else - { - mModuleParams->initDefaults(); - } - - return mModuleParams; -} - -uint32_t ModuleBasicIosImpl::forceLoadAssets() -{ - return 0; -} - -BasicIosScene* ModuleBasicIosImpl::getBasicIosScene(const Scene& apexScene) -{ - const SceneIntl* niScene = DYNAMIC_CAST(const SceneIntl*)(&apexScene); - for (uint32_t i = 0 ; i < mBasicIosSceneList.getSize() ; i++) - { - BasicIosScene* ps = DYNAMIC_CAST(BasicIosScene*)(mBasicIosSceneList.getResource(i)); - if (ps->mApexScene == niScene) - { - return ps; - } - } - - PX_ASSERT(!"Unable to locate an appropriate BasicIosScene"); - return NULL; -} - -const BasicIosScene* ModuleBasicIosImpl::getBasicIosScene(const Scene& apexScene) const -{ - const SceneIntl* niScene = DYNAMIC_CAST(const SceneIntl*)(&apexScene); - for (uint32_t i = 0 ; i < mBasicIosSceneList.getSize() ; i++) - { - BasicIosScene* ps = DYNAMIC_CAST(BasicIosScene*)(mBasicIosSceneList.getResource(i)); - if (ps->mApexScene == niScene) - { - return ps; - } - } - - PX_ASSERT(!"Unable to locate an appropriate BasicIosScene"); - return NULL; -} - -RenderableIterator* ModuleBasicIosImpl::createRenderableIterator(const Scene& apexScene) -{ - BasicIosScene* ps = getBasicIosScene(apexScene); - if (ps) - { - return ps->createRenderableIterator(); - } - - return NULL; -} - -ModuleSceneIntl* ModuleBasicIosImpl::createInternalModuleScene(SceneIntl& scene, RenderDebugInterface* renderDebug) -{ - READ_LOCK(scene); -#if APEX_CUDA_SUPPORT - if (scene.getTaskManager()->getGpuDispatcher() && scene.isUsingCuda()) - { -#if ENABLE_TEST - return PX_NEW(BasicIosTestSceneGPU)(*this, scene, renderDebug, mBasicIosSceneList); -#else - return PX_NEW(BasicIosSceneGPU)(*this, scene, renderDebug, mBasicIosSceneList); -#endif - } - else -#endif - { -#if ENABLE_TEST - return PX_NEW(BasicIosTestSceneCPU)(*this, scene, renderDebug, mBasicIosSceneList); -#else - return PX_NEW(BasicIosSceneCPU)(*this, scene, renderDebug, mBasicIosSceneList); -#endif - } -} - -void ModuleBasicIosImpl::releaseModuleSceneIntl(ModuleSceneIntl& scene) -{ - BasicIosScene* ps = DYNAMIC_CAST(BasicIosScene*)(&scene); - ps->destroy(); -} - -const char* ModuleBasicIosImpl::getBasicIosTypeName() -{ - READ_ZONE(); - return BasicIosAssetImpl::getClassName(); -} - - -ApexActor* ModuleBasicIosImpl::getApexActor(Actor* nxactor, AuthObjTypeID type) const -{ - if (type == BasicIosAssetImpl::mAssetTypeID) - { - return static_cast<BasicIosActorImpl*>(nxactor); - } - - return NULL; -} - -ModuleIofxIntl* ModuleBasicIosImpl::getInternalModuleIofx() -{ - if (!mIofxModule ) - { - ModuleIntl* nim = mSdk->getInternalModuleByName("IOFX"); - if (nim) - { - mIofxModule = DYNAMIC_CAST(ModuleIofxIntl*)(nim); - } - } - return mIofxModule; -} - -ModuleFieldSamplerIntl* ModuleBasicIosImpl::getInternalModuleFieldSampler() -{ - if (!mFieldSamplerModule) - { - ModuleIntl* nim = mSdk->getInternalModuleByName("FieldSampler"); - if (nim) - { - mFieldSamplerModule = DYNAMIC_CAST(ModuleFieldSamplerIntl*)(nim); - } - } - return mFieldSamplerModule; -} - -const TestBase* ModuleBasicIosImpl::getTestBase(Scene* apexScene) const -{ - - const BasicIosScene* scene = getBasicIosScene(*apexScene); - -#if APEX_CUDA_SUPPORT && ENABLE_TEST - if (scene->getApexScene().getTaskManager()->getGpuDispatcher() && scene->getApexScene().isUsingCuda()) - { - return static_cast<const TestBase*>(DYNAMIC_CAST(const BasicIosTestSceneGPU*)(scene)); - } -#endif - -#if ENABLE_TEST - return static_cast<const TestBase*>(DYNAMIC_CAST(const BasicIosTestSceneCPU*)(scene)); -#else - PX_UNUSED(scene); - return 0; -#endif - -} - -} -} // namespace nvidia diff --git a/APEX_1.4/module/basicios/src/autogen/BasicIOSAssetParam.cpp b/APEX_1.4/module/basicios/src/autogen/BasicIOSAssetParam.cpp deleted file mode 100644 index 2fd5f901..00000000 --- a/APEX_1.4/module/basicios/src/autogen/BasicIOSAssetParam.cpp +++ /dev/null @@ -1,1406 +0,0 @@ -// 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) 2008-2015 NVIDIA Corporation. All rights reserved. - -// This file was generated by NvParameterized/scripts/GenParameterized.pl - - -#include "BasicIOSAssetParam.h" -#include <string.h> -#include <stdlib.h> - -using namespace NvParameterized; - -namespace nvidia -{ -namespace basicios -{ - -using namespace BasicIOSAssetParamNS; - -const char* const BasicIOSAssetParamFactory::vptr = - NvParameterized::getVptr<BasicIOSAssetParam, BasicIOSAssetParam::ClassAlignment>(); - -const uint32_t NumParamDefs = 38; -static NvParameterized::DefinitionImpl* ParamDefTable; // now allocated in buildTree [NumParamDefs]; - - -static const size_t ParamLookupChildrenTable[] = -{ - 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 27, 28, 29, 30, - 34, 9, 10, 11, 23, 24, 25, 26, 31, 32, 33, 35, 36, 37, -}; - -#define TENUM(type) nvidia::##type -#define CHILDREN(index) &ParamLookupChildrenTable[index] -static const NvParameterized::ParamLookupNode ParamLookupTable[NumParamDefs] = -{ - { TYPE_STRUCT, false, 0, CHILDREN(0), 24 }, - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->restDensity), NULL, 0 }, // restDensity - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->particleRadius), NULL, 0 }, // particleRadius - { TYPE_U32, false, (size_t)(&((ParametersStruct*)0)->maxParticleCount), NULL, 0 }, // maxParticleCount - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->maxInjectedParticleCount), NULL, 0 }, // maxInjectedParticleCount - { TYPE_U32, false, (size_t)(&((ParametersStruct*)0)->maxCollidingObjects), NULL, 0 }, // maxCollidingObjects - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->sceneGravityScale), NULL, 0 }, // sceneGravityScale - { TYPE_VEC3, false, (size_t)(&((ParametersStruct*)0)->externalAcceleration), NULL, 0 }, // externalAcceleration - { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->particleMass), CHILDREN(24), 3 }, // particleMass - { TYPE_F32, false, (size_t)(&((RandomF32_Type*)0)->center), NULL, 0 }, // particleMass.center - { TYPE_F32, false, (size_t)(&((RandomF32_Type*)0)->spread), NULL, 0 }, // particleMass.spread - { TYPE_ENUM, false, (size_t)(&((RandomF32_Type*)0)->type), NULL, 0 }, // particleMass.type - { TYPE_STRING, false, (size_t)(&((ParametersStruct*)0)->collisionFilterDataName), NULL, 0 }, // collisionFilterDataName - { TYPE_STRING, false, (size_t)(&((ParametersStruct*)0)->fieldSamplerFilterDataName), NULL, 0 }, // fieldSamplerFilterDataName - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->staticCollision), NULL, 0 }, // staticCollision - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->restitutionForStaticShapes), NULL, 0 }, // restitutionForStaticShapes - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->dynamicCollision), NULL, 0 }, // dynamicCollision - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->restitutionForDynamicShapes), NULL, 0 }, // restitutionForDynamicShapes - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->collisionDistanceMultiplier), NULL, 0 }, // collisionDistanceMultiplier - { TYPE_F32, false, (size_t)(&((ParametersStruct*)0)->collisionThreshold), NULL, 0 }, // collisionThreshold - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->collisionWithConvex), NULL, 0 }, // collisionWithConvex - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->collisionWithTriangleMesh), NULL, 0 }, // collisionWithTriangleMesh - { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->GridDensity), CHILDREN(27), 4 }, // GridDensity - { TYPE_BOOL, false, (size_t)(&((GridDensityParams_Type*)0)->Enabled), NULL, 0 }, // GridDensity.Enabled - { TYPE_ENUM, false, (size_t)(&((GridDensityParams_Type*)0)->Resolution), NULL, 0 }, // GridDensity.Resolution - { TYPE_F32, false, (size_t)(&((GridDensityParams_Type*)0)->GridSize), NULL, 0 }, // GridDensity.GridSize - { TYPE_U32, false, (size_t)(&((GridDensityParams_Type*)0)->MaxCellCount), NULL, 0 }, // GridDensity.MaxCellCount - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->enableTemperatureBuffer), NULL, 0 }, // enableTemperatureBuffer - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->enableDensityBuffer), NULL, 0 }, // enableDensityBuffer - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->enableCouplingOverride), NULL, 0 }, // enableCouplingOverride - { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->particleToGridCoupling), CHILDREN(31), 3 }, // particleToGridCoupling - { TYPE_F32, false, (size_t)(&((ParticleToGridCouplingParams_Type*)0)->accelTimeConstant), NULL, 0 }, // particleToGridCoupling.accelTimeConstant - { TYPE_F32, false, (size_t)(&((ParticleToGridCouplingParams_Type*)0)->decelTimeConstant), NULL, 0 }, // particleToGridCoupling.decelTimeConstant - { TYPE_F32, false, (size_t)(&((ParticleToGridCouplingParams_Type*)0)->thresholdMultiplier), NULL, 0 }, // particleToGridCoupling.thresholdMultiplier - { TYPE_STRUCT, false, (size_t)(&((ParametersStruct*)0)->gridToParticleCoupling), CHILDREN(34), 3 }, // gridToParticleCoupling - { TYPE_F32, false, (size_t)(&((GridToParticleCouplingParams_Type*)0)->accelTimeConstant), NULL, 0 }, // gridToParticleCoupling.accelTimeConstant - { TYPE_F32, false, (size_t)(&((GridToParticleCouplingParams_Type*)0)->decelTimeConstant), NULL, 0 }, // gridToParticleCoupling.decelTimeConstant - { TYPE_F32, false, (size_t)(&((GridToParticleCouplingParams_Type*)0)->thresholdMultiplier), NULL, 0 }, // gridToParticleCoupling.thresholdMultiplier -}; - - -bool BasicIOSAssetParam::mBuiltFlag = false; -NvParameterized::MutexType BasicIOSAssetParam::mBuiltFlagMutex; - -BasicIOSAssetParam::BasicIOSAssetParam(NvParameterized::Traits* traits, void* buf, int32_t* refCount) : - NvParameters(traits, buf, refCount) -{ - //mParameterizedTraits->registerFactory(className(), &BasicIOSAssetParamFactoryInst); - - if (!buf) //Do not init data if it is inplace-deserialized - { - initDynamicArrays(); - initStrings(); - initReferences(); - initDefaults(); - } -} - -BasicIOSAssetParam::~BasicIOSAssetParam() -{ - freeStrings(); - freeReferences(); - freeDynamicArrays(); -} - -void BasicIOSAssetParam::destroy() -{ - // We cache these fields here to avoid overwrite in destructor - bool doDeallocateSelf = mDoDeallocateSelf; - NvParameterized::Traits* traits = mParameterizedTraits; - int32_t* refCount = mRefCount; - void* buf = mBuffer; - - this->~BasicIOSAssetParam(); - - NvParameters::destroy(this, traits, doDeallocateSelf, refCount, buf); -} - -const NvParameterized::DefinitionImpl* BasicIOSAssetParam::getParameterDefinitionTree(void) -{ - if (!mBuiltFlag) // Double-checked lock - { - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - if (!mBuiltFlag) - { - buildTree(); - } - } - - return(&ParamDefTable[0]); -} - -const NvParameterized::DefinitionImpl* BasicIOSAssetParam::getParameterDefinitionTree(void) const -{ - BasicIOSAssetParam* tmpParam = const_cast<BasicIOSAssetParam*>(this); - - if (!mBuiltFlag) // Double-checked lock - { - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - if (!mBuiltFlag) - { - tmpParam->buildTree(); - } - } - - return(&ParamDefTable[0]); -} - -NvParameterized::ErrorType BasicIOSAssetParam::getParameterHandle(const char* long_name, Handle& handle) const -{ - ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); - if (Ret != ERROR_NONE) - { - return(Ret); - } - - size_t offset; - void* ptr; - - getVarPtr(handle, ptr, offset); - - if (ptr == NULL) - { - return(ERROR_INDEX_OUT_OF_RANGE); - } - - return(ERROR_NONE); -} - -NvParameterized::ErrorType BasicIOSAssetParam::getParameterHandle(const char* long_name, Handle& handle) -{ - ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); - if (Ret != ERROR_NONE) - { - return(Ret); - } - - size_t offset; - void* ptr; - - getVarPtr(handle, ptr, offset); - - if (ptr == NULL) - { - return(ERROR_INDEX_OUT_OF_RANGE); - } - - return(ERROR_NONE); -} - -void BasicIOSAssetParam::getVarPtr(const Handle& handle, void*& ptr, size_t& offset) const -{ - ptr = getVarPtrHelper(&ParamLookupTable[0], const_cast<BasicIOSAssetParam::ParametersStruct*>(¶meters()), handle, offset); -} - - -/* Dynamic Handle Indices */ - -void BasicIOSAssetParam::freeParameterDefinitionTable(NvParameterized::Traits* traits) -{ - if (!traits) - { - return; - } - - if (!mBuiltFlag) // Double-checked lock - { - return; - } - - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - - if (!mBuiltFlag) - { - return; - } - - for (uint32_t i = 0; i < NumParamDefs; ++i) - { - ParamDefTable[i].~DefinitionImpl(); - } - - traits->free(ParamDefTable); - - mBuiltFlag = false; -} - -#define PDEF_PTR(index) (&ParamDefTable[index]) - -void BasicIOSAssetParam::buildTree(void) -{ - - uint32_t allocSize = sizeof(NvParameterized::DefinitionImpl) * NumParamDefs; - ParamDefTable = (NvParameterized::DefinitionImpl*)(mParameterizedTraits->alloc(allocSize)); - memset(ParamDefTable, 0, allocSize); - - for (uint32_t i = 0; i < NumParamDefs; ++i) - { - NV_PARAM_PLACEMENT_NEW(ParamDefTable + i, NvParameterized::DefinitionImpl)(*mParameterizedTraits); - } - - // Initialize DefinitionImpl node: nodeIndex=0, longName="" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[0]; - ParamDef->init("", TYPE_STRUCT, "STRUCT", true); - - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=1, longName="restDensity" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[1]; - ParamDef->init("restDensity", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("min", uint64_t(0), true); - ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#else - - static HintImpl HintTable[4]; - static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("longDescription", "\nAuthored density of the instanced objects simulated by this IOS. Emitters need this\nvalue for constant density emitter effects.\n", true); - HintTable[2].init("min", uint64_t(0), true); - HintTable[3].init("shortDescription", "Rest density of particles", true); - ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 4); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=2, longName="particleRadius" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[2]; - ParamDef->init("particleRadius", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("min", uint64_t(0), true); - ParamDefTable[2].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#else - - static HintImpl HintTable[4]; - static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("longDescription", "\nRadius of a particle.\n", true); - HintTable[2].init("min", uint64_t(0), true); - HintTable[3].init("shortDescription", "Radius of a particle", true); - ParamDefTable[2].setHints((const NvParameterized::Hint**)HintPtrTable, 4); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=3, longName="maxParticleCount" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[3]; - ParamDef->init("maxParticleCount", TYPE_U32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("min", uint64_t(0), true); - ParamDefTable[3].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("min", uint64_t(0), true); - HintTable[1].init("shortDescription", "Maximum particle count", true); - ParamDefTable[3].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=4, longName="maxInjectedParticleCount" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[4]; - ParamDef->init("maxInjectedParticleCount", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("min", uint64_t(0), true); - ParamDefTable[4].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[3]; - static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; - HintTable[0].init("longDescription", "\nThe maximum number of new particles to be spawned on each frame. Use values >1 to provide the absolute value,\nor 0 <= x <= 1 to provide the percentage rate to overall number of particles. \n", true); - HintTable[1].init("min", uint64_t(0), true); - HintTable[2].init("shortDescription", "Maximum number of newly created particles on each frame", true); - ParamDefTable[4].setHints((const NvParameterized::Hint**)HintPtrTable, 3); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=5, longName="maxCollidingObjects" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[5]; - ParamDef->init("maxCollidingObjects", TYPE_U32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("min", uint64_t(1), true); - ParamDefTable[5].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[3]; - static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; - HintTable[0].init("longDescription", "Maximum number of objects that are able to collide with each other (boxes, spheres, capsules, hspaces, convexmeshes, trimeshes).\n", true); - HintTable[1].init("min", uint64_t(1), true); - HintTable[2].init("shortDescription", "Maximum number of particles that are able to collide with each other.", true); - ParamDefTable[5].setHints((const NvParameterized::Hint**)HintPtrTable, 3); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=6, longName="sceneGravityScale" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[6]; - ParamDef->init("sceneGravityScale", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("min", uint64_t(0), true); - ParamDefTable[6].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("min", uint64_t(0), true); - HintTable[1].init("shortDescription", "Used to scale, or even disable the basic IOS's gravity", true); - ParamDefTable[6].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=7, longName="externalAcceleration" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[7]; - ParamDef->init("externalAcceleration", TYPE_VEC3, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("gameScale", "true", true); - ParamDefTable[7].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("shortDescription", "Acceleration (m/s^2) applied to all particles at all time steps (added to the scaled scene gravity).", true); - ParamDefTable[7].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=8, longName="particleMass" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[8]; - ParamDef->init("particleMass", TYPE_STRUCT, "RandomF32", true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("longDescription", "Defines parameters of probability distribution of particle masses.\n", true); - HintTable[1].init("shortDescription", "Probability distribution of particle masses for this IOS.", true); - ParamDefTable[8].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=9, longName="particleMass.center" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[9]; - ParamDef->init("center", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Center of distribution", true); - ParamDefTable[9].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=10, longName="particleMass.spread" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[10]; - ParamDef->init("spread", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("longDescription", "Spread is std deviation for normal distribution or halfwidth for uniform distribution.\n", true); - HintTable[1].init("shortDescription", "Spread of distribution", true); - ParamDefTable[10].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=11, longName="particleMass.type" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[11]; - ParamDef->init("type", TYPE_ENUM, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("longDescription", "Type of probability distribution (currently only normal and uniform are supported).\n", true); - HintTable[1].init("shortDescription", "Distribution type", true); - ParamDefTable[11].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - static const char* const EnumVals[] = { "uniform", "normal" }; - ParamDefTable[11].setEnumVals((const char**)EnumVals, 2); - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=12, longName="collisionFilterDataName" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[12]; - ParamDef->init("collisionFilterDataName", TYPE_STRING, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("HIDDEN", uint64_t(1), true); - ParamDefTable[12].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("HIDDEN", uint64_t(1), true); - HintTable[1].init("shortDescription", "The filter data (group/groupsMask) name for IOS vs PhysX interaction.", true); - ParamDefTable[12].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=13, longName="fieldSamplerFilterDataName" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[13]; - ParamDef->init("fieldSamplerFilterDataName", TYPE_STRING, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "The filter data name for IOS vs FieldSampler interaction.", true); - ParamDefTable[13].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=14, longName="staticCollision" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[14]; - ParamDef->init("staticCollision", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(1), true); - ParamDefTable[14].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(1), true); - HintTable[1].init("shortDescription", "Enables collision with static shapes", true); - ParamDefTable[14].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=15, longName="restitutionForStaticShapes" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[15]; - ParamDef->init("restitutionForStaticShapes", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[3]; - static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; - HintTable[0].init("defaultValue", double(0.5), true); - HintTable[1].init("max", uint64_t(1), true); - HintTable[2].init("min", uint64_t(0), true); - ParamDefTable[15].setHints((const NvParameterized::Hint**)HintPtrTable, 3); - -#else - - static HintImpl HintTable[4]; - static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; - HintTable[0].init("defaultValue", double(0.5), true); - HintTable[1].init("max", uint64_t(1), true); - HintTable[2].init("min", uint64_t(0), true); - HintTable[3].init("shortDescription", "Defines the restitution coefficient used for collisions with static shapes.", true); - ParamDefTable[15].setHints((const NvParameterized::Hint**)HintPtrTable, 4); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=16, longName="dynamicCollision" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[16]; - ParamDef->init("dynamicCollision", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(1), true); - ParamDefTable[16].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(1), true); - HintTable[1].init("shortDescription", "Enables collision with dynamic shapes", true); - ParamDefTable[16].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=17, longName="restitutionForDynamicShapes" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[17]; - ParamDef->init("restitutionForDynamicShapes", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[3]; - static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; - HintTable[0].init("defaultValue", double(0.5), true); - HintTable[1].init("max", uint64_t(1), true); - HintTable[2].init("min", uint64_t(0), true); - ParamDefTable[17].setHints((const NvParameterized::Hint**)HintPtrTable, 3); - -#else - - static HintImpl HintTable[4]; - static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; - HintTable[0].init("defaultValue", double(0.5), true); - HintTable[1].init("max", uint64_t(1), true); - HintTable[2].init("min", uint64_t(0), true); - HintTable[3].init("shortDescription", "Defines the restitution coefficient used for collisions with dynamic shapes.", true); - ParamDefTable[17].setHints((const NvParameterized::Hint**)HintPtrTable, 4); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=18, longName="collisionDistanceMultiplier" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[18]; - ParamDef->init("collisionDistanceMultiplier", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("min", uint64_t(0), true); - ParamDefTable[18].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("min", uint64_t(0), true); - HintTable[1].init("shortDescription", "Defines the distance (= collisionDistanceMultiplier*particleRadius) between particles and collision geometry, which is maintained during simulation.", true); - ParamDefTable[18].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=19, longName="collisionThreshold" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[19]; - ParamDef->init("collisionThreshold", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("min", uint64_t(0), true); - ParamDefTable[19].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#else - - static HintImpl HintTable[3]; - static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; - HintTable[0].init("gameScale", "true", true); - HintTable[1].init("min", uint64_t(0), true); - HintTable[2].init("shortDescription", "Defines the threshold for collision between particles and collision geometry, inside this threshold collision contact is generated without a response.", true); - ParamDefTable[19].setHints((const NvParameterized::Hint**)HintPtrTable, 3); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=20, longName="collisionWithConvex" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[20]; - ParamDef->init("collisionWithConvex", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(1), true); - ParamDefTable[20].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(1), true); - HintTable[1].init("shortDescription", "Enables collision with convex shapes", true); - ParamDefTable[20].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=21, longName="collisionWithTriangleMesh" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[21]; - ParamDef->init("collisionWithTriangleMesh", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - ParamDefTable[21].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - HintTable[1].init("shortDescription", "Enables collision with triangle mesh shapes", true); - ParamDefTable[21].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=22, longName="GridDensity" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[22]; - ParamDef->init("GridDensity", TYPE_STRUCT, "GridDensityParams", true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("longDescription", "Settings for Density Grid\n", true); - HintTable[1].init("shortDescription", "Settings for Density Grid", true); - ParamDefTable[22].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=23, longName="GridDensity.Enabled" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[23]; - ParamDef->init("Enabled", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("longDescription", "If this option is true; density will be computed based on the grouping of particles in a 3d grid\n", true); - HintTable[1].init("shortDescription", "Compute Density Using a Grid", true); - ParamDefTable[23].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=24, longName="GridDensity.Resolution" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[24]; - ParamDef->init("Resolution", TYPE_ENUM, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("longDescription", "This enumeration defines the 3d resolution of the grid.\n", true); - HintTable[1].init("shortDescription", "Number of cells in a 3D grid, used to calculate particles positions. Higher values divide the grid into more cells.", true); - ParamDefTable[24].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - static const char* const EnumVals[] = { "GDG_8", "GDG_16", "GDG_32", "GDG_64", "GDG_128", "GDG_256" }; - ParamDefTable[24].setEnumVals((const char**)EnumVals, 6); - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=25, longName="GridDensity.GridSize" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[25]; - ParamDef->init("GridSize", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("DISPLAY_NAME", "Grid Depth", true); - HintTable[1].init("min", uint64_t(0), true); - ParamDefTable[25].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#else - - static HintImpl HintTable[4]; - static Hint* HintPtrTable[4] = { &HintTable[0], &HintTable[1], &HintTable[2], &HintTable[3], }; - HintTable[0].init("DISPLAY_NAME", "Grid Depth", true); - HintTable[1].init("longDescription", "The default value is a 10 units\nMust be positive.\n", true); - HintTable[2].init("min", uint64_t(0), true); - HintTable[3].init("shortDescription", "Depth of grid.", true); - ParamDefTable[25].setHints((const NvParameterized::Hint**)HintPtrTable, 4); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=26, longName="GridDensity.MaxCellCount" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[26]; - ParamDef->init("MaxCellCount", TYPE_U32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("min", uint64_t(0), true); - ParamDefTable[26].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[3]; - static Hint* HintPtrTable[3] = { &HintTable[0], &HintTable[1], &HintTable[2], }; - HintTable[0].init("longDescription", "This is the integer count representing how many particles reside in a single grid cell before the density is considered 1.\nIt is valid for the density to be greater than one. For example, if there were 32 particles in a grid cell with a max-cell count of\n16, then the density would be equal to 2.\n", true); - HintTable[1].init("min", uint64_t(0), true); - HintTable[2].init("shortDescription", "This is the number of particles within a gridcell for a density of 1", true); - ParamDefTable[26].setHints((const NvParameterized::Hint**)HintPtrTable, 3); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=27, longName="enableTemperatureBuffer" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[27]; - ParamDef->init("enableTemperatureBuffer", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - ParamDefTable[27].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - HintTable[1].init("shortDescription", "Enables temperature buffer.", true); - ParamDefTable[27].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=28, longName="enableDensityBuffer" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[28]; - ParamDef->init("enableDensityBuffer", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - ParamDefTable[28].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - HintTable[1].init("shortDescription", "Enables density buffer.", true); - ParamDefTable[28].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=29, longName="enableCouplingOverride" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[29]; - ParamDef->init("enableCouplingOverride", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - ParamDefTable[29].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#else - - static HintImpl HintTable[2]; - static Hint* HintPtrTable[2] = { &HintTable[0], &HintTable[1], }; - HintTable[0].init("defaultValue", uint64_t(0), true); - HintTable[1].init("shortDescription", "If true, IOS coupling settings are used. If false, dynamic grid coupling settings are used.", true); - ParamDefTable[29].setHints((const NvParameterized::Hint**)HintPtrTable, 2); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=30, longName="particleToGridCoupling" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[30]; - ParamDef->init("particleToGridCoupling", TYPE_STRUCT, "ParticleToGridCouplingParams", true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Settings for particle to grid coupling", true); - ParamDefTable[30].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=31, longName="particleToGridCoupling.accelTimeConstant" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[31]; - ParamDef->init("accelTimeConstant", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Controls rate at which the grid accepts influence from particles. A value of 0 means instant coupling.", true); - ParamDefTable[31].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=32, longName="particleToGridCoupling.decelTimeConstant" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[32]; - ParamDef->init("decelTimeConstant", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Controls rate at which the grid accepts influence from particles. A value of 0 means instant coupling.", true); - ParamDefTable[32].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=33, longName="particleToGridCoupling.thresholdMultiplier" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[33]; - ParamDef->init("thresholdMultiplier", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "A value greater than 1 creates a deadzone, where no particle to grid coupling occurs.", true); - ParamDefTable[33].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=34, longName="gridToParticleCoupling" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[34]; - ParamDef->init("gridToParticleCoupling", TYPE_STRUCT, "GridToParticleCouplingParams", true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Settings for grid to particle coupling", true); - ParamDefTable[34].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=35, longName="gridToParticleCoupling.accelTimeConstant" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[35]; - ParamDef->init("accelTimeConstant", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Controls rate at which particles accept influence from the grid. A value of 0 means instant coupling.", true); - ParamDefTable[35].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=36, longName="gridToParticleCoupling.decelTimeConstant" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[36]; - ParamDef->init("decelTimeConstant", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Controls rate at which particles accept influence from the grid. A value of 0 means instant coupling.", true); - ParamDefTable[36].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=37, longName="gridToParticleCoupling.thresholdMultiplier" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[37]; - ParamDef->init("thresholdMultiplier", TYPE_F32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "A value greater than 1 creates a deadzone, where no grid to particle coupling occurs.", true); - ParamDefTable[37].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // SetChildren for: nodeIndex=0, longName="" - { - static Definition* Children[24]; - Children[0] = PDEF_PTR(1); - Children[1] = PDEF_PTR(2); - Children[2] = PDEF_PTR(3); - Children[3] = PDEF_PTR(4); - Children[4] = PDEF_PTR(5); - Children[5] = PDEF_PTR(6); - Children[6] = PDEF_PTR(7); - Children[7] = PDEF_PTR(8); - Children[8] = PDEF_PTR(12); - Children[9] = PDEF_PTR(13); - Children[10] = PDEF_PTR(14); - Children[11] = PDEF_PTR(15); - Children[12] = PDEF_PTR(16); - Children[13] = PDEF_PTR(17); - Children[14] = PDEF_PTR(18); - Children[15] = PDEF_PTR(19); - Children[16] = PDEF_PTR(20); - Children[17] = PDEF_PTR(21); - Children[18] = PDEF_PTR(22); - Children[19] = PDEF_PTR(27); - Children[20] = PDEF_PTR(28); - Children[21] = PDEF_PTR(29); - Children[22] = PDEF_PTR(30); - Children[23] = PDEF_PTR(34); - - ParamDefTable[0].setChildren(Children, 24); - } - - // SetChildren for: nodeIndex=8, longName="particleMass" - { - static Definition* Children[3]; - Children[0] = PDEF_PTR(9); - Children[1] = PDEF_PTR(10); - Children[2] = PDEF_PTR(11); - - ParamDefTable[8].setChildren(Children, 3); - } - - // SetChildren for: nodeIndex=22, longName="GridDensity" - { - static Definition* Children[4]; - Children[0] = PDEF_PTR(23); - Children[1] = PDEF_PTR(24); - Children[2] = PDEF_PTR(25); - Children[3] = PDEF_PTR(26); - - ParamDefTable[22].setChildren(Children, 4); - } - - // SetChildren for: nodeIndex=30, longName="particleToGridCoupling" - { - static Definition* Children[3]; - Children[0] = PDEF_PTR(31); - Children[1] = PDEF_PTR(32); - Children[2] = PDEF_PTR(33); - - ParamDefTable[30].setChildren(Children, 3); - } - - // SetChildren for: nodeIndex=34, longName="gridToParticleCoupling" - { - static Definition* Children[3]; - Children[0] = PDEF_PTR(35); - Children[1] = PDEF_PTR(36); - Children[2] = PDEF_PTR(37); - - ParamDefTable[34].setChildren(Children, 3); - } - - mBuiltFlag = true; - -} -void BasicIOSAssetParam::initStrings(void) -{ - collisionFilterDataName.isAllocated = true; - collisionFilterDataName.buf = NULL; - fieldSamplerFilterDataName.isAllocated = true; - fieldSamplerFilterDataName.buf = NULL; -} - -void BasicIOSAssetParam::initDynamicArrays(void) -{ -} - -void BasicIOSAssetParam::initDefaults(void) -{ - - freeStrings(); - freeReferences(); - freeDynamicArrays(); - restDensity = float(0); - particleRadius = float(1); - maxParticleCount = uint32_t(16384); - maxInjectedParticleCount = float(0.1); - maxCollidingObjects = uint32_t(32); - sceneGravityScale = float(1); - externalAcceleration = physx::PxVec3(init(0, 0, 0)); - particleMass.center = float(0); - particleMass.spread = float(0); - particleMass.type = (const char*)"uniform"; - - particleMass.center = 1.0f; - - staticCollision = bool(1); - restitutionForStaticShapes = float(0.5f); - dynamicCollision = bool(1); - restitutionForDynamicShapes = float(0.5f); - collisionDistanceMultiplier = float(1.0f); - collisionThreshold = float(0.001f); - collisionWithConvex = bool(1); - collisionWithTriangleMesh = bool(0); - GridDensity.Enabled = bool(0); - GridDensity.Resolution = (const char*)"GDG_16"; - GridDensity.GridSize = float(10); - GridDensity.MaxCellCount = uint32_t(16); - enableTemperatureBuffer = bool(0); - enableDensityBuffer = bool(0); - enableCouplingOverride = bool(0); - particleToGridCoupling.accelTimeConstant = float(0.01); - particleToGridCoupling.decelTimeConstant = float(10); - particleToGridCoupling.thresholdMultiplier = float(2); - gridToParticleCoupling.accelTimeConstant = float(0.01); - gridToParticleCoupling.decelTimeConstant = float(0.01); - gridToParticleCoupling.thresholdMultiplier = float(1); - - initDynamicArrays(); - initStrings(); - initReferences(); -} - -void BasicIOSAssetParam::initReferences(void) -{ -} - -void BasicIOSAssetParam::freeDynamicArrays(void) -{ -} - -void BasicIOSAssetParam::freeStrings(void) -{ - - if (collisionFilterDataName.isAllocated && collisionFilterDataName.buf) - { - mParameterizedTraits->strfree((char*)collisionFilterDataName.buf); - } - - if (fieldSamplerFilterDataName.isAllocated && fieldSamplerFilterDataName.buf) - { - mParameterizedTraits->strfree((char*)fieldSamplerFilterDataName.buf); - } -} - -void BasicIOSAssetParam::freeReferences(void) -{ -} - -} // namespace basicios -} // namespace nvidia diff --git a/APEX_1.4/module/basicios/src/autogen/BasicIosDebugRenderParams.cpp b/APEX_1.4/module/basicios/src/autogen/BasicIosDebugRenderParams.cpp deleted file mode 100644 index beafae10..00000000 --- a/APEX_1.4/module/basicios/src/autogen/BasicIosDebugRenderParams.cpp +++ /dev/null @@ -1,358 +0,0 @@ -// 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) 2008-2015 NVIDIA Corporation. All rights reserved. - -// This file was generated by NvParameterized/scripts/GenParameterized.pl - - -#include "BasicIosDebugRenderParams.h" -#include <string.h> -#include <stdlib.h> - -using namespace NvParameterized; - -namespace nvidia -{ -namespace basicios -{ - -using namespace BasicIosDebugRenderParamsNS; - -const char* const BasicIosDebugRenderParamsFactory::vptr = - NvParameterized::getVptr<BasicIosDebugRenderParams, BasicIosDebugRenderParams::ClassAlignment>(); - -const uint32_t NumParamDefs = 4; -static NvParameterized::DefinitionImpl* ParamDefTable; // now allocated in buildTree [NumParamDefs]; - - -static const size_t ParamLookupChildrenTable[] = -{ - 1, 2, 3, -}; - -#define TENUM(type) nvidia::##type -#define CHILDREN(index) &ParamLookupChildrenTable[index] -static const NvParameterized::ParamLookupNode ParamLookupTable[NumParamDefs] = -{ - { TYPE_STRUCT, false, 0, CHILDREN(0), 3 }, - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->VISUALIZE_BASIC_IOS_ACTOR), NULL, 0 }, // VISUALIZE_BASIC_IOS_ACTOR - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->VISUALIZE_BASIC_IOS_COLLIDE_SHAPES), NULL, 0 }, // VISUALIZE_BASIC_IOS_COLLIDE_SHAPES - { TYPE_BOOL, false, (size_t)(&((ParametersStruct*)0)->VISUALIZE_BASIC_IOS_GRID_DENSITY), NULL, 0 }, // VISUALIZE_BASIC_IOS_GRID_DENSITY -}; - - -bool BasicIosDebugRenderParams::mBuiltFlag = false; -NvParameterized::MutexType BasicIosDebugRenderParams::mBuiltFlagMutex; - -BasicIosDebugRenderParams::BasicIosDebugRenderParams(NvParameterized::Traits* traits, void* buf, int32_t* refCount) : - NvParameters(traits, buf, refCount) -{ - //mParameterizedTraits->registerFactory(className(), &BasicIosDebugRenderParamsFactoryInst); - - if (!buf) //Do not init data if it is inplace-deserialized - { - initDynamicArrays(); - initStrings(); - initReferences(); - initDefaults(); - } -} - -BasicIosDebugRenderParams::~BasicIosDebugRenderParams() -{ - freeStrings(); - freeReferences(); - freeDynamicArrays(); -} - -void BasicIosDebugRenderParams::destroy() -{ - // We cache these fields here to avoid overwrite in destructor - bool doDeallocateSelf = mDoDeallocateSelf; - NvParameterized::Traits* traits = mParameterizedTraits; - int32_t* refCount = mRefCount; - void* buf = mBuffer; - - this->~BasicIosDebugRenderParams(); - - NvParameters::destroy(this, traits, doDeallocateSelf, refCount, buf); -} - -const NvParameterized::DefinitionImpl* BasicIosDebugRenderParams::getParameterDefinitionTree(void) -{ - if (!mBuiltFlag) // Double-checked lock - { - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - if (!mBuiltFlag) - { - buildTree(); - } - } - - return(&ParamDefTable[0]); -} - -const NvParameterized::DefinitionImpl* BasicIosDebugRenderParams::getParameterDefinitionTree(void) const -{ - BasicIosDebugRenderParams* tmpParam = const_cast<BasicIosDebugRenderParams*>(this); - - if (!mBuiltFlag) // Double-checked lock - { - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - if (!mBuiltFlag) - { - tmpParam->buildTree(); - } - } - - return(&ParamDefTable[0]); -} - -NvParameterized::ErrorType BasicIosDebugRenderParams::getParameterHandle(const char* long_name, Handle& handle) const -{ - ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); - if (Ret != ERROR_NONE) - { - return(Ret); - } - - size_t offset; - void* ptr; - - getVarPtr(handle, ptr, offset); - - if (ptr == NULL) - { - return(ERROR_INDEX_OUT_OF_RANGE); - } - - return(ERROR_NONE); -} - -NvParameterized::ErrorType BasicIosDebugRenderParams::getParameterHandle(const char* long_name, Handle& handle) -{ - ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); - if (Ret != ERROR_NONE) - { - return(Ret); - } - - size_t offset; - void* ptr; - - getVarPtr(handle, ptr, offset); - - if (ptr == NULL) - { - return(ERROR_INDEX_OUT_OF_RANGE); - } - - return(ERROR_NONE); -} - -void BasicIosDebugRenderParams::getVarPtr(const Handle& handle, void*& ptr, size_t& offset) const -{ - ptr = getVarPtrHelper(&ParamLookupTable[0], const_cast<BasicIosDebugRenderParams::ParametersStruct*>(¶meters()), handle, offset); -} - - -/* Dynamic Handle Indices */ - -void BasicIosDebugRenderParams::freeParameterDefinitionTable(NvParameterized::Traits* traits) -{ - if (!traits) - { - return; - } - - if (!mBuiltFlag) // Double-checked lock - { - return; - } - - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - - if (!mBuiltFlag) - { - return; - } - - for (uint32_t i = 0; i < NumParamDefs; ++i) - { - ParamDefTable[i].~DefinitionImpl(); - } - - traits->free(ParamDefTable); - - mBuiltFlag = false; -} - -#define PDEF_PTR(index) (&ParamDefTable[index]) - -void BasicIosDebugRenderParams::buildTree(void) -{ - - uint32_t allocSize = sizeof(NvParameterized::DefinitionImpl) * NumParamDefs; - ParamDefTable = (NvParameterized::DefinitionImpl*)(mParameterizedTraits->alloc(allocSize)); - memset(ParamDefTable, 0, allocSize); - - for (uint32_t i = 0; i < NumParamDefs; ++i) - { - NV_PARAM_PLACEMENT_NEW(ParamDefTable + i, NvParameterized::DefinitionImpl)(*mParameterizedTraits); - } - - // Initialize DefinitionImpl node: nodeIndex=0, longName="" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[0]; - ParamDef->init("", TYPE_STRUCT, "STRUCT", true); - - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=1, longName="VISUALIZE_BASIC_IOS_ACTOR" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[1]; - ParamDef->init("VISUALIZE_BASIC_IOS_ACTOR", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Render the IOS Actor in view window", true); - ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=2, longName="VISUALIZE_BASIC_IOS_COLLIDE_SHAPES" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[2]; - ParamDef->init("VISUALIZE_BASIC_IOS_COLLIDE_SHAPES", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Render the IOS collision shapes in view window", true); - ParamDefTable[2].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=3, longName="VISUALIZE_BASIC_IOS_GRID_DENSITY" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[3]; - ParamDef->init("VISUALIZE_BASIC_IOS_GRID_DENSITY", TYPE_BOOL, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "Render the IOS Grid Density in the view window", true); - ParamDefTable[3].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // SetChildren for: nodeIndex=0, longName="" - { - static Definition* Children[3]; - Children[0] = PDEF_PTR(1); - Children[1] = PDEF_PTR(2); - Children[2] = PDEF_PTR(3); - - ParamDefTable[0].setChildren(Children, 3); - } - - mBuiltFlag = true; - -} -void BasicIosDebugRenderParams::initStrings(void) -{ -} - -void BasicIosDebugRenderParams::initDynamicArrays(void) -{ -} - -void BasicIosDebugRenderParams::initDefaults(void) -{ - - freeStrings(); - freeReferences(); - freeDynamicArrays(); - VISUALIZE_BASIC_IOS_ACTOR = bool(true); - VISUALIZE_BASIC_IOS_COLLIDE_SHAPES = bool(false); - VISUALIZE_BASIC_IOS_GRID_DENSITY = bool(false); - - initDynamicArrays(); - initStrings(); - initReferences(); -} - -void BasicIosDebugRenderParams::initReferences(void) -{ -} - -void BasicIosDebugRenderParams::freeDynamicArrays(void) -{ -} - -void BasicIosDebugRenderParams::freeStrings(void) -{ -} - -void BasicIosDebugRenderParams::freeReferences(void) -{ -} - -} // namespace basicios -} // namespace nvidia diff --git a/APEX_1.4/module/basicios/src/autogen/BasicIosModuleParameters.cpp b/APEX_1.4/module/basicios/src/autogen/BasicIosModuleParameters.cpp deleted file mode 100644 index 618171a5..00000000 --- a/APEX_1.4/module/basicios/src/autogen/BasicIosModuleParameters.cpp +++ /dev/null @@ -1,318 +0,0 @@ -// 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) 2008-2015 NVIDIA Corporation. All rights reserved. - -// This file was generated by NvParameterized/scripts/GenParameterized.pl - - -#include "BasicIosModuleParameters.h" -#include <string.h> -#include <stdlib.h> - -using namespace NvParameterized; - -namespace nvidia -{ -namespace basicios -{ - -using namespace BasicIosModuleParametersNS; - -const char* const BasicIosModuleParametersFactory::vptr = - NvParameterized::getVptr<BasicIosModuleParameters, BasicIosModuleParameters::ClassAlignment>(); - -const uint32_t NumParamDefs = 2; -static NvParameterized::DefinitionImpl* ParamDefTable; // now allocated in buildTree [NumParamDefs]; - - -static const size_t ParamLookupChildrenTable[] = -{ - 1, -}; - -#define TENUM(type) nvidia::##type -#define CHILDREN(index) &ParamLookupChildrenTable[index] -static const NvParameterized::ParamLookupNode ParamLookupTable[NumParamDefs] = -{ - { TYPE_STRUCT, false, 0, CHILDREN(0), 1 }, - { TYPE_U32, false, (size_t)(&((ParametersStruct*)0)->unused), NULL, 0 }, // unused -}; - - -bool BasicIosModuleParameters::mBuiltFlag = false; -NvParameterized::MutexType BasicIosModuleParameters::mBuiltFlagMutex; - -BasicIosModuleParameters::BasicIosModuleParameters(NvParameterized::Traits* traits, void* buf, int32_t* refCount) : - NvParameters(traits, buf, refCount) -{ - //mParameterizedTraits->registerFactory(className(), &BasicIosModuleParametersFactoryInst); - - if (!buf) //Do not init data if it is inplace-deserialized - { - initDynamicArrays(); - initStrings(); - initReferences(); - initDefaults(); - } -} - -BasicIosModuleParameters::~BasicIosModuleParameters() -{ - freeStrings(); - freeReferences(); - freeDynamicArrays(); -} - -void BasicIosModuleParameters::destroy() -{ - // We cache these fields here to avoid overwrite in destructor - bool doDeallocateSelf = mDoDeallocateSelf; - NvParameterized::Traits* traits = mParameterizedTraits; - int32_t* refCount = mRefCount; - void* buf = mBuffer; - - this->~BasicIosModuleParameters(); - - NvParameters::destroy(this, traits, doDeallocateSelf, refCount, buf); -} - -const NvParameterized::DefinitionImpl* BasicIosModuleParameters::getParameterDefinitionTree(void) -{ - if (!mBuiltFlag) // Double-checked lock - { - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - if (!mBuiltFlag) - { - buildTree(); - } - } - - return(&ParamDefTable[0]); -} - -const NvParameterized::DefinitionImpl* BasicIosModuleParameters::getParameterDefinitionTree(void) const -{ - BasicIosModuleParameters* tmpParam = const_cast<BasicIosModuleParameters*>(this); - - if (!mBuiltFlag) // Double-checked lock - { - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - if (!mBuiltFlag) - { - tmpParam->buildTree(); - } - } - - return(&ParamDefTable[0]); -} - -NvParameterized::ErrorType BasicIosModuleParameters::getParameterHandle(const char* long_name, Handle& handle) const -{ - ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); - if (Ret != ERROR_NONE) - { - return(Ret); - } - - size_t offset; - void* ptr; - - getVarPtr(handle, ptr, offset); - - if (ptr == NULL) - { - return(ERROR_INDEX_OUT_OF_RANGE); - } - - return(ERROR_NONE); -} - -NvParameterized::ErrorType BasicIosModuleParameters::getParameterHandle(const char* long_name, Handle& handle) -{ - ErrorType Ret = NvParameters::getParameterHandle(long_name, handle); - if (Ret != ERROR_NONE) - { - return(Ret); - } - - size_t offset; - void* ptr; - - getVarPtr(handle, ptr, offset); - - if (ptr == NULL) - { - return(ERROR_INDEX_OUT_OF_RANGE); - } - - return(ERROR_NONE); -} - -void BasicIosModuleParameters::getVarPtr(const Handle& handle, void*& ptr, size_t& offset) const -{ - ptr = getVarPtrHelper(&ParamLookupTable[0], const_cast<BasicIosModuleParameters::ParametersStruct*>(¶meters()), handle, offset); -} - - -/* Dynamic Handle Indices */ - -void BasicIosModuleParameters::freeParameterDefinitionTable(NvParameterized::Traits* traits) -{ - if (!traits) - { - return; - } - - if (!mBuiltFlag) // Double-checked lock - { - return; - } - - NvParameterized::MutexType::ScopedLock lock(mBuiltFlagMutex); - - if (!mBuiltFlag) - { - return; - } - - for (uint32_t i = 0; i < NumParamDefs; ++i) - { - ParamDefTable[i].~DefinitionImpl(); - } - - traits->free(ParamDefTable); - - mBuiltFlag = false; -} - -#define PDEF_PTR(index) (&ParamDefTable[index]) - -void BasicIosModuleParameters::buildTree(void) -{ - - uint32_t allocSize = sizeof(NvParameterized::DefinitionImpl) * NumParamDefs; - ParamDefTable = (NvParameterized::DefinitionImpl*)(mParameterizedTraits->alloc(allocSize)); - memset(ParamDefTable, 0, allocSize); - - for (uint32_t i = 0; i < NumParamDefs; ++i) - { - NV_PARAM_PLACEMENT_NEW(ParamDefTable + i, NvParameterized::DefinitionImpl)(*mParameterizedTraits); - } - - // Initialize DefinitionImpl node: nodeIndex=0, longName="" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[0]; - ParamDef->init("", TYPE_STRUCT, "STRUCT", true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "This class is used for initializing the ModuleBasicIos.", true); - ParamDefTable[0].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // Initialize DefinitionImpl node: nodeIndex=1, longName="unused" - { - NvParameterized::DefinitionImpl* ParamDef = &ParamDefTable[1]; - ParamDef->init("unused", TYPE_U32, NULL, true); - -#ifdef NV_PARAMETERIZED_HIDE_DESCRIPTIONS - -#else - - static HintImpl HintTable[1]; - static Hint* HintPtrTable[1] = { &HintTable[0], }; - HintTable[0].init("shortDescription", "No parameters necessary", true); - ParamDefTable[1].setHints((const NvParameterized::Hint**)HintPtrTable, 1); - -#endif /* NV_PARAMETERIZED_HIDE_DESCRIPTIONS */ - - - - - - } - - // SetChildren for: nodeIndex=0, longName="" - { - static Definition* Children[1]; - Children[0] = PDEF_PTR(1); - - ParamDefTable[0].setChildren(Children, 1); - } - - mBuiltFlag = true; - -} -void BasicIosModuleParameters::initStrings(void) -{ -} - -void BasicIosModuleParameters::initDynamicArrays(void) -{ -} - -void BasicIosModuleParameters::initDefaults(void) -{ - - freeStrings(); - freeReferences(); - freeDynamicArrays(); - unused = uint32_t(0); - - initDynamicArrays(); - initStrings(); - initReferences(); -} - -void BasicIosModuleParameters::initReferences(void) -{ -} - -void BasicIosModuleParameters::freeDynamicArrays(void) -{ -} - -void BasicIosModuleParameters::freeStrings(void) -{ -} - -void BasicIosModuleParameters::freeReferences(void) -{ -} - -} // namespace basicios -} // namespace nvidia |