aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/include/RenderBufferData.h
diff options
context:
space:
mode:
authorgit perforce import user <a@b>2016-10-25 12:29:14 -0600
committerSheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees>2016-10-25 18:56:37 -0500
commit3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch)
treefa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/include/RenderBufferData.h
downloadphysx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz
physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip
Initial commit:
PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @ 21275617 [CL 21300167]
Diffstat (limited to 'APEX_1.4/include/RenderBufferData.h')
-rw-r--r--APEX_1.4/include/RenderBufferData.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/APEX_1.4/include/RenderBufferData.h b/APEX_1.4/include/RenderBufferData.h
new file mode 100644
index 00000000..d78fe1cb
--- /dev/null
+++ b/APEX_1.4/include/RenderBufferData.h
@@ -0,0 +1,160 @@
+/*
+ * 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 RENDER_BUFFER_DATA_H
+#define RENDER_BUFFER_DATA_H
+
+/*!
+\file
+\brief classes RenderSemanticData, RenderBufferData, ModuleSpecificRenderBufferData
+*/
+
+#include "ApexUsingNamespace.h"
+#include "RenderDataFormat.h"
+#include "ApexSDK.h"
+
+namespace nvidia
+{
+namespace apex
+{
+
+PX_PUSH_PACK_DEFAULT
+
+/**
+\brief Describes the data location and layout of a single semantic
+*/
+class RenderSemanticData
+{
+public:
+ const void* data; //!< Pointer to first semantic data element
+ uint32_t stride; //!< Semantic stride, in bytes
+ void* ident; //!< Used for custom semantics only: value retrieved from NRP
+ RenderDataFormat::Enum format; //!< Format used for this semantic
+ /**
+ \brief When this class is used for mesh authoring, this is the format of the source (user's) buffer.
+ If different from 'format', and not RenderDataFormat::UNSPECIFIED, the data will be converted to
+ from srcFormat to format (if a converter exists).
+ If srcFormat = RenderDataFormat::UNSPECIFIED (default value), it is assumed that srcFormat = format.
+ */
+ RenderDataFormat::Enum srcFormat;
+ /**
+ \brief Copy this buffer from the authoring asset to the asset.
+
+ This will only be used at render mesh asset creation time.
+ */
+ bool serialize;
+public:
+ PX_INLINE RenderSemanticData(void)
+ {
+ data = 0;
+ stride = 0;
+ ident = 0;
+ format = RenderDataFormat::UNSPECIFIED;
+ srcFormat = RenderDataFormat::UNSPECIFIED;
+ serialize = false;
+ }
+};
+
+/**
+\brief Describes all of the semantics of a render buffer
+*/
+template < class SemanticClass, class SemanticEnum>
+class RenderBufferData
+{
+public:
+ PX_INLINE RenderBufferData(void)
+ {
+ m_numCustomSemantics = 0;
+ m_customSemanticData = 0;
+ }
+
+ /**
+ \brief Returns the properties of a base semantic
+ */
+ PX_INLINE const RenderSemanticData& getSemanticData(SemanticEnum semantic) const
+ {
+ PX_ASSERT(semantic < SemanticClass::NUM_SEMANTICS);
+ return m_semanticData[semantic];
+ }
+
+ /**
+ \brief Returns the number of custom semantics
+ */
+ PX_INLINE uint32_t getNumCustomSemantics() const
+ {
+ return m_numCustomSemantics;
+ }
+
+ /**
+ \brief Returns the properties of a custom semantic
+ */
+ PX_INLINE const RenderSemanticData& getCustomSemanticData(uint32_t index) const
+ {
+ PX_ASSERT(index < m_numCustomSemantics);
+ return m_customSemanticData[index];
+ }
+
+ /**
+ \brief Set a specific set of custom semantics on this data buffer.
+
+ If there are named custom semantics in a RenderMeshAsset, its RenderMeshActor will
+ call this function to set those semantics on this buffer.
+ */
+ PX_INLINE void setCustomSemanticData(RenderSemanticData* data, uint32_t num)
+ {
+ m_numCustomSemantics = num;
+ m_customSemanticData = data;
+ }
+
+ /**
+ \brief Set the properties (pointer and stride) of a base semantic.
+ */
+ PX_INLINE void setSemanticData(SemanticEnum semantic, const void* data, uint32_t stride, RenderDataFormat::Enum format, RenderDataFormat::Enum srcFormat = RenderDataFormat::UNSPECIFIED)
+ {
+ PX_ASSERT(semantic < SemanticClass::NUM_SEMANTICS);
+ RenderSemanticData& sd = m_semanticData[semantic];
+ sd.data = data;
+ sd.stride = stride;
+ sd.format = format;
+ sd.srcFormat = srcFormat == RenderDataFormat::UNSPECIFIED ? format : srcFormat;
+ }
+
+private:
+ RenderSemanticData m_semanticData[SemanticClass::NUM_SEMANTICS]; //!< Base semantics for this buffer type
+ uint32_t m_numCustomSemantics; //!< Number of custom semantics
+ RenderSemanticData* m_customSemanticData; //!< An array of custom semantics
+};
+
+/**
+\brief Describes data semantics provided by a particular module
+*/
+class ModuleSpecificRenderBufferData
+{
+public:
+ AuthObjTypeID moduleId; //!< Unique module identifier, from Module::getModuleID()
+ RenderSemanticData* moduleSpecificSemanticData; //!< Pointer to an array of custom semantics
+ uint32_t numModuleSpecificSemantics; //!< Count of custom semantics provided by this module
+
+public:
+ PX_INLINE ModuleSpecificRenderBufferData(void)
+ {
+ moduleId = 0;
+ moduleSpecificSemanticData = 0;
+ numModuleSpecificSemantics = 0;
+ }
+};
+
+PX_POP_PACK
+
+}
+} // end namespace nvidia::apex
+
+#endif // RENDER_BUFFER_DATA_H