diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/include/UserRenderResourceManager.h | |
| download | physx-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/UserRenderResourceManager.h')
| -rw-r--r-- | APEX_1.4/include/UserRenderResourceManager.h | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/APEX_1.4/include/UserRenderResourceManager.h b/APEX_1.4/include/UserRenderResourceManager.h new file mode 100644 index 00000000..99f7241a --- /dev/null +++ b/APEX_1.4/include/UserRenderResourceManager.h @@ -0,0 +1,187 @@ +/* + * 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 USER_RENDER_RESOURCE_MANAGER_H +#define USER_RENDER_RESOURCE_MANAGER_H + +/*! +\file +\brief class UserRenderResourceManager, structs RenderPrimitiveType, RenderBufferHint, and RenderCullMode +*/ + +#include "ApexUsingNamespace.h" + +namespace nvidia +{ +namespace apex +{ + +PX_PUSH_PACK_DEFAULT + +class UserRenderVertexBuffer; +class UserRenderVertexBufferDesc; +class UserRenderIndexBuffer; +class UserRenderIndexBufferDesc; +class UserRenderSurfaceBuffer; +class UserRenderSurfaceBufferDesc; +class UserRenderBoneBuffer; +class UserRenderBoneBufferDesc; +class UserRenderInstanceBuffer; +class UserRenderInstanceBufferDesc; +class UserRenderSpriteBuffer; +class UserRenderSpriteBufferDesc; +class UserRenderResource; +class UserRenderResourceDesc; +class UserOpaqueMesh; +class UserOpaqueMeshDesc; + +class UserRenderSpriteTextureDesc; + +/** +\brief Describe the implied vertex ordering +*/ +struct RenderPrimitiveType +{ + /** + \brief Enum of the implied vertex ordering types + */ + enum Enum + { + UNKNOWN = 0, + + TRIANGLES, + TRIANGLE_STRIP, + + LINES, + LINE_STRIP, + + POINTS, + POINT_SPRITES, + }; +}; + +/** +\brief Possible triangle culling modes +*/ +struct RenderCullMode +{ + /** + \brief Enum of possible triangle culling mode types + */ + enum Enum + { + CLOCKWISE = 0, + COUNTER_CLOCKWISE, + NONE + }; +}; + +/** +\brief Hint of the buffer data lifespan +*/ +struct RenderBufferHint +{ + /** + \brief Enum of hints of the buffer data lifespan + */ + enum Enum + { + STATIC = 0, + DYNAMIC, + STREAMING, + }; +}; + +/** +\brief User defined renderable resource manager + +A render resource manager is an object that creates and manages renderable resources... +This is given to the APEX SDK at creation time via the descriptor and must be persistent through the lifetime +of the SDK. +*/ +class UserRenderResourceManager +{ +public: + virtual ~UserRenderResourceManager() {} + + /** + The create methods in this class will only be called from the context of an Renderable::updateRenderResources() + call, but the release methods can be triggered by any APEX API call that deletes an Actor. It is up to + the end-user to make the release methods thread safe. + */ + + virtual UserRenderVertexBuffer* createVertexBuffer(const UserRenderVertexBufferDesc& desc) = 0; + /** \brief Release vertex buffer */ + virtual void releaseVertexBuffer(UserRenderVertexBuffer& buffer) = 0; + + /** \brief Create index buffer */ + virtual UserRenderIndexBuffer* createIndexBuffer(const UserRenderIndexBufferDesc& desc) = 0; + /** \brief Release index buffer */ + virtual void releaseIndexBuffer(UserRenderIndexBuffer& buffer) = 0; + + /** \brief Create bone buffer */ + virtual UserRenderBoneBuffer* createBoneBuffer(const UserRenderBoneBufferDesc& desc) = 0; + /** \brief Release bone buffer */ + virtual void releaseBoneBuffer(UserRenderBoneBuffer& buffer) = 0; + + /** \brief Create instance buffer */ + virtual UserRenderInstanceBuffer* createInstanceBuffer(const UserRenderInstanceBufferDesc& desc) = 0; + /** \brief Release instance buffer */ + virtual void releaseInstanceBuffer(UserRenderInstanceBuffer& buffer) = 0; + + /** \brief Create sprite buffer */ + virtual UserRenderSpriteBuffer* createSpriteBuffer(const UserRenderSpriteBufferDesc& desc) = 0; + /** \brief Release sprite buffer */ + virtual void releaseSpriteBuffer(UserRenderSpriteBuffer& buffer) = 0; + + /** \brief Create surface buffer */ + virtual UserRenderSurfaceBuffer* createSurfaceBuffer(const UserRenderSurfaceBufferDesc& desc) = 0; + /** \brief Release surface buffer */ + virtual void releaseSurfaceBuffer(UserRenderSurfaceBuffer& buffer) = 0; + + /** \brief Create resource */ + virtual UserRenderResource* createResource(const UserRenderResourceDesc& desc) = 0; + + /** + releaseResource() should not release any of the included buffer pointers. Those free methods will be + called separately by the APEX SDK before (or sometimes after) releasing the UserRenderResource. + */ + virtual void releaseResource(UserRenderResource& resource) = 0; + + /** + Get the maximum number of bones supported by a given material. Return 0 for infinite. + For optimal rendering, do not limit the bone count (return 0 from this function). + */ + virtual uint32_t getMaxBonesForMaterial(void* material) = 0; + + + /** \brief Get the sprite layout data + Returns true in case textureDescArray is set. + In case user is not interested in setting specific layout for sprite PS, + this function should return false. + */ + virtual bool getSpriteLayoutData(uint32_t spriteCount, uint32_t spriteSemanticsBitmap, UserRenderSpriteBufferDesc* textureDescArray) = 0; + + /** \brief Get the instance layout data + Returns true in case textureDescArray is set. + In case user is not interested in setting specific layout for sprite PS, + this function should return false. + */ + virtual bool getInstanceLayoutData(uint32_t spriteCount, uint32_t spriteSemanticsBitmap, UserRenderInstanceBufferDesc* instanceDescArray) = 0; + +}; + +PX_POP_PACK + +} +} // end namespace nvidia::apex + +#endif |