From 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 Mon Sep 17 00:00:00 2001 From: git perforce import user Date: Tue, 25 Oct 2016 12:29:14 -0600 Subject: Initial commit: PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @ 21275617 [CL 21300167] --- APEX_1.4/module/iofx/src/IofxRenderDataMesh.cpp | 95 +++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 APEX_1.4/module/iofx/src/IofxRenderDataMesh.cpp (limited to 'APEX_1.4/module/iofx/src/IofxRenderDataMesh.cpp') diff --git a/APEX_1.4/module/iofx/src/IofxRenderDataMesh.cpp b/APEX_1.4/module/iofx/src/IofxRenderDataMesh.cpp new file mode 100644 index 00000000..a3603f06 --- /dev/null +++ b/APEX_1.4/module/iofx/src/IofxRenderDataMesh.cpp @@ -0,0 +1,95 @@ +/* + * 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 "IofxSceneCPU.h" +#include "IofxSceneGPU.h" +#include "IosObjectData.h" +#include "IofxRenderData.h" +#include "IofxActorImpl.h" + +namespace nvidia +{ +namespace iofx +{ + + + +bool IofxSharedRenderDataMeshImpl::createRenderLayout(IofxScene& iofxScene, uint32_t semantics, uint32_t maxObjectCount, RenderLayout_t& renderLayout) +{ + bool bIsUserDefinedLayout = false; + IofxRenderCallback* renderCallback = iofxScene.getIofxRenderCallback(); + if (renderCallback) + { + if (renderCallback->getIofxMeshRenderLayout(renderLayout, maxObjectCount, semantics, mInteropFlags)) + { + bIsUserDefinedLayout = renderLayout.isValid(); + } + } + if (!bIsUserDefinedLayout) + { + //make default layout for given set of semantics + uint32_t offset = 0; + { + IofxMeshRenderLayoutElement::Enum element = IofxMeshRenderLayoutElement::POSITION_FLOAT3; + renderLayout.offsets[element] = offset; + offset += RenderDataFormat::getFormatDataSize(IofxMeshRenderLayoutElement::getFormat(element)); + } + { + IofxMeshRenderLayoutElement::Enum element = IofxMeshRenderLayoutElement::ROTATION_SCALE_FLOAT3x3; + renderLayout.offsets[element] = offset; + offset += RenderDataFormat::getFormatDataSize(IofxMeshRenderLayoutElement::getFormat(element)); + } + if (semantics & (1 << IofxRenderSemantic::COLOR)) + { + IofxMeshRenderLayoutElement::Enum element = IofxMeshRenderLayoutElement::COLOR_FLOAT4; + renderLayout.offsets[element] = offset; + offset += RenderDataFormat::getFormatDataSize(IofxMeshRenderLayoutElement::getFormat(element)); + } + if (semantics & (1 << IofxRenderSemantic::DENSITY)) + { + IofxMeshRenderLayoutElement::Enum element = IofxMeshRenderLayoutElement::DENSITY_FLOAT1; + renderLayout.offsets[element] = offset; + offset += RenderDataFormat::getFormatDataSize(IofxMeshRenderLayoutElement::getFormat(element)); + } + if (semantics & (1 << IofxRenderSemantic::USER_DATA)) + { + IofxMeshRenderLayoutElement::Enum element = IofxMeshRenderLayoutElement::USER_DATA_UINT1; + renderLayout.offsets[element] = offset; + offset += RenderDataFormat::getFormatDataSize(IofxMeshRenderLayoutElement::getFormat(element)); + } + renderLayout.stride = offset; + + renderLayout.bufferDesc.setDefaults(); + renderLayout.bufferDesc.size = maxObjectCount * renderLayout.stride; + renderLayout.bufferDesc.interopFlags = mInteropFlags; + } + PX_ASSERT((renderLayout.stride & 0x03) == 0); + return bIsUserDefinedLayout; +} + +void IofxSharedRenderDataMeshImpl::freeAllRenderStorage() +{ + if (mSharedRenderData.meshRenderBuffer != NULL) + { + mSharedRenderData.meshRenderBuffer->release(); + mSharedRenderData.meshRenderBuffer = NULL; + } +} + +bool IofxSharedRenderDataMeshImpl::allocAllRenderStorage(const RenderLayout_t& newRenderLayout, IofxRenderCallback* iofxRenderCallback) +{ + mSharedRenderData.meshRenderBuffer = iofxRenderCallback->createRenderBuffer(newRenderLayout.bufferDesc); + return (mSharedRenderData.meshRenderBuffer != NULL); +} + +} +} // namespace nvidia -- cgit v1.2.3