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/forcefield/src/ForceFieldScene.cpp | |
| 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/forcefield/src/ForceFieldScene.cpp')
| -rw-r--r-- | APEX_1.4/module/forcefield/src/ForceFieldScene.cpp | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/APEX_1.4/module/forcefield/src/ForceFieldScene.cpp b/APEX_1.4/module/forcefield/src/ForceFieldScene.cpp deleted file mode 100644 index 6d8e7774..00000000 --- a/APEX_1.4/module/forcefield/src/ForceFieldScene.cpp +++ /dev/null @@ -1,250 +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" -#include "Apex.h" -#include "ApexUsingNamespace.h" -#include "ScopedPhysXLock.h" - -#include "ForceFieldScene.h" -#include "ForceFieldActorImpl.h" -#include "SceneIntl.h" -#include "ModulePerfScope.h" -#include "ModuleFieldSamplerIntl.h" - -#if APEX_CUDA_SUPPORT -#include "ApexCudaSource.h" -#endif - -#pragma warning(disable: 4355) // 'this' : used in base member initializer list - -#include "Lock.h" - -namespace nvidia -{ -namespace forcefield -{ - -ForceFieldScene::ForceFieldScene(ModuleForceFieldImpl& module, SceneIntl& scene, RenderDebugInterface* renderDebug, ResourceList& list) - : mRenderDebug(renderDebug) - , mFieldSamplerManager(NULL) - , mUpdateTask(*this) -{ - mModule = &module; - mApexScene = &scene; - mPhysXScene = NULL; - list.add(*this); // Add self to module's list of ForceFieldScenes - - /* Initialize reference to ForceFieldDebugRenderParams */ - 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(ForceFieldDebugRenderParams::staticClassName(), true); - } - } - - /* Load reference to ForceFieldDebugRenderParams */ - NvParameterized::Interface* refPtr = NULL; - memberHandle.getParamRef(refPtr); - mForceFieldDebugRenderParams = DYNAMIC_CAST(ForceFieldDebugRenderParams*)(refPtr); - PX_ASSERT(mForceFieldDebugRenderParams); -} - -ForceFieldScene::~ForceFieldScene() -{ -} - -// Called by scene task graph between LOD and PhysX::simulate() -void ForceFieldScene::TaskUpdate::run() -{ - setProfileStat((uint16_t) mOwner.mActorArray.size()); - float dt = mOwner.mApexScene->getElapsedTime(); - mOwner.updateActors(dt); -} - -// Called by updateTask between LOD and PhysX simulate. Any writes -// to render data must be protected by acquiring the actor's render data lock -void ForceFieldScene::updateActors(float dt) -{ - SCOPED_PHYSX_LOCK_WRITE(mApexScene); - for (uint32_t i = 0 ; i < mActorArray.size() ; i++) - { - ForceFieldActorImpl* actor = DYNAMIC_CAST(ForceFieldActorImpl*)(mActorArray[i]); - actor->updateForceField(dt); - } -} - -// submit the task that updates the explosion actors -// called from ApexScene::simulate() -void ForceFieldScene::submitTasks(float /*elapsedTime*/, float /*substepSize*/, uint32_t /*numSubSteps*/) -{ - PxTaskManager* tm; - { - READ_LOCK(*mApexScene); - tm = mApexScene->getTaskManager(); - } - tm->submitUnnamedTask(mUpdateTask); - mUpdateTask.startAfter(tm->getNamedTask(FSST_PHYSX_MONITOR_LOAD)); - mUpdateTask.finishBefore(tm->getNamedTask(FSST_PHYSX_MONITOR_FETCH)); -} - -void ForceFieldScene::setTaskDependencies() -{ -} - -// Called by ApexScene::fetchResults() with all actors render data locked. -void ForceFieldScene::fetchResults() -{ - PX_PROFILE_ZONE("ForceFieldSceneFetchResults", GetInternalApexSDK()->getContextId()); - - for (uint32_t i = 0 ; i < mActorArray.size() ; i++) - { - ForceFieldActorImpl* actor = DYNAMIC_CAST(ForceFieldActorImpl*)(mActorArray[i]); - actor->updatePoseAndBounds(); - } -} - -void ForceFieldScene::visualize() -{ -#ifndef WITHOUT_DEBUG_VISUALIZE - if (!mForceFieldDebugRenderParams->VISUALIZE_FORCEFIELD_ACTOR) - { - return; - } - - RENDER_DEBUG_IFACE(mRenderDebug)->pushRenderState(); - for (uint32_t i = 0 ; i < mActorArray.size() ; i++) - { - ForceFieldActorImpl* actor = DYNAMIC_CAST(ForceFieldActorImpl*)(mActorArray[i]); - actor->visualize(); - } - RENDER_DEBUG_IFACE(mRenderDebug)->popRenderState(); -#endif -} - -void ForceFieldScene::visualizeForceFieldForces() -{ -} - -void ForceFieldScene::visualizeForceFieldForceFields() -{ -} - -void ForceFieldScene::destroy() -{ - removeAllActors(); - mApexScene->moduleReleased(*this); - delete this; -} - -void ForceFieldScene::setModulePhysXScene(PxScene* pxScene) -{ - if (pxScene) - { - for (uint32_t i = 0 ; i < mActorArray.size() ; i++) - { - ForceFieldActorImpl* actor = DYNAMIC_CAST(ForceFieldActorImpl*)(mActorArray[i]); - actor->setPhysXScene(pxScene); - } - } - else - { - for (uint32_t i = 0 ; i < mActorArray.size() ; i++) - { - ForceFieldActorImpl* actor = DYNAMIC_CAST(ForceFieldActorImpl*)(mActorArray[i]); - actor->setPhysXScene(NULL); - } - } - - mPhysXScene = pxScene; -} - -FieldSamplerManagerIntl* ForceFieldScene::getInternalFieldSamplerManager() -{ - if (mFieldSamplerManager == NULL) - { - ModuleFieldSamplerIntl* moduleFieldSampler = mModule->getInternalModuleFieldSampler(); - if (moduleFieldSampler != NULL) - { - mFieldSamplerManager = moduleFieldSampler->getInternalFieldSamplerManager(*mApexScene); - PX_ASSERT(mFieldSamplerManager != NULL); - } - } - return mFieldSamplerManager; -} - -/******************************** CPU Version ********************************/ - -ForceFieldSceneCPU::ForceFieldSceneCPU(ModuleForceFieldImpl& module, SceneIntl& scene, RenderDebugInterface* renderDebug, ResourceList& list) : - ForceFieldScene(module, scene, renderDebug, list) -{ -} - -ForceFieldSceneCPU::~ForceFieldSceneCPU() -{ -} - -ForceFieldActorImpl* ForceFieldSceneCPU::createForceFieldActor(const ForceFieldActorDesc& desc, ForceFieldAssetImpl& asset, ResourceList& list) -{ - return PX_NEW(ForceFieldActorCPU)(desc, asset, list, *this); -} - -/******************************** GPU Version ********************************/ - -#if APEX_CUDA_SUPPORT - -ForceFieldSceneGPU::ForceFieldSceneGPU(ModuleForceFieldImpl& module, SceneIntl& scene, RenderDebugInterface* renderDebug, ResourceList& list) - : ForceFieldScene(module, scene, renderDebug, list) - , CudaModuleScene(scene, *mModule, APEX_CUDA_TO_STR(APEX_CUDA_MODULE_PREFIX)) -{ - { - PxGpuDispatcher* gd = mApexScene->getTaskManager()->getGpuDispatcher(); - PX_ASSERT(gd != NULL); - mCtxMgr = gd->getCudaContextManager(); - PxScopedCudaLock _lock_(*mCtxMgr); - -//CUDA module objects -#include "../cuda/include/ForceField.h" - } -} - -ForceFieldSceneGPU::~ForceFieldSceneGPU() -{ - CudaModuleScene::destroy(*mApexScene); -} - -ForceFieldActorImpl* ForceFieldSceneGPU::createForceFieldActor(const ForceFieldActorDesc& desc, ForceFieldAssetImpl& asset, ResourceList& list) -{ - return PX_NEW(ForceFieldActorGPU)(desc, asset, list, *this); -} - -ApexCudaConstStorage* ForceFieldSceneGPU::getFieldSamplerCudaConstStorage() -{ - return &APEX_CUDA_OBJ_NAME(fieldSamplerStorage); -} - -bool ForceFieldSceneGPU::launchFieldSamplerCudaKernel(const nvidia::fieldsampler::FieldSamplerKernelLaunchDataIntl& launchData) -{ - LAUNCH_FIELD_SAMPLER_KERNEL(launchData); -} - -#endif - -} -} // end namespace nvidia |