CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::RendererRenderable Class Referencefinal

A class that represents a renderable inside the renderer. More...

#include <CeresEngine/Renderer/RendererRenderable.hpp>

Inheritance diagram for CeresEngine::RendererRenderable:
CeresEngine::TRendererSceneObject< RendererRenderable > CeresEngine::IRendererGeometryProvider CeresEngine::TRendererObject< SelfType, BaseType > CeresEngine::RendererObject

Classes

class  Element
 The rendering element for the renderable sub-meshes. More...
 

Public Member Functions

 RendererRenderable (RendererRenderableManager &manager, RendererScene &scene)
 Creates a new RendererRenderable.
 
 ~RendererRenderable () noexcept final
 Destroys the renderer renderable and releases any renderer (and RenderAPI)-related resources.
 
void synchronize (const Transform &trasnform, const RenderableComponent &component)
 Update the renderer renderable with data from a transform and the component.
 
void prepare (RendererContext &context)
 Prepares the renderable for the rendering of the current frame.
 
void draw (GPUCommandBuffer &commandBuffer, const ConvexVolume *viewFrustum=nullptr) const
 Submits a draw command for the renderable by automatically binding the index and vertex buffers as required.
 
void draw (GPUCommandBuffer &commandBuffer, UInt32 subMeshIndex) const
 Similar to draw(CommandBuffer&) but will only render the specified sub -mesh.
 
void drawMeshOnly (GPUCommandBuffer &commandBuffer, const ConvexVolume *viewFrustum=nullptr) const
 Submits a draw command for the renderable by automatically binding the index and vertex buffers as required.
 
const RendererRenderableSettingsgetSettings () const
 
const RendererRenderableFlagsgetFlags () const noexcept
 A set of flags that customize and represent the state of the object.
 
void setFlags (const RendererRenderableFlags &flags)
 A set of flags that customize and represent the state of the object.
 
const RendererRenderableDirtyFlagsgetDirtyFlags () const noexcept
 A set of flags that represent the dirty portions of the object.
 
bool isDirty () const noexcept
 
void markAsDirty (const RendererRenderableDirtyFlags &flags=RendererRenderableDirtyFlag::All) noexcept
 
const RendererRenderableInfogetInfo () const
 A structure that holds renderer-specific information for the renderable.
 
RendererRenderableInfogetInfo ()
 A structure that holds renderer-specific information for the renderable.
 
const Vector< Element > & getRenderElements () const
 A vector that holds all render elements for the renderable.
 
const GPUBindlessBuffergetUniformBuffer () const
 The uniform buffer storing the renderable GPU parameters used by the renderer.
 
const GPUVertexBuffergetVertexBuffer () const
 
const GPUIndexBuffergetIndexBuffer () const
 
const RendererMeshPtrgetRendererMesh () const
 
const HMeshgetMesh () const
 
MaterialgetMaterial () const
 
RendererMaterialgetRendererMaterial (UInt32 subMesh) const
 
const Vector< SPtr< RendererMaterial > > & getRendererMaterials () const
 
const AABox & getBoundingBox () const
 Gets the renderable bounding box.
 
const Sphere & getBoundingSphere () const
 Gets the renderable bounding sphere.
 
bool frustumCull (const ConvexVolume &frustum) const noexcept
 Performs frustum culling using the given camera frustum.
 
bool frustumCull (const ConvexVolume &frustum, UInt32 subMeshIndex) const noexcept
 Performs frustum culling on the given subMeshIndex using the given camera frustum.
 
Generator< RendererGeometryenumerateGeometry (const RendererGeometryEnumerationRequest &enumerationRequest=RendererGeometryEnumerationRequest()) const final
 Enumerates all geometry in the provider.
 
- Public Member Functions inherited from CeresEngine::TRendererSceneObject< RendererRenderable >
 TRendererSceneObject (Args &&... args)
 Creates a new TRendererSceneObject instance.
 
 ~TRendererSceneObject () noexcept override
 Destroys an existing TRendererSceneObject instance.
 
- Public Member Functions inherited from CeresEngine::TRendererObject< SelfType, BaseType >
template<typename... Args>
 TRendererObject (ManagerType &manager, Args &&... args)
 Creates a new TRendererObject instance.
 
void destroy () noexcept override
 Destroys the RendererObject.
 
ManagerTypegetManager () const noexcept
 The owning object manager.
 
- Public Member Functions inherited from CeresEngine::RendererObject
 RendererObject ()=default
 Creates a new RendererObject instance.
 
virtual ~RendererObject () noexcept=default
 Destroys an existing RendererObject instance.
 
RendererObjectID getID () const noexcept
 An identifier that uniquely identifies this object in the renderer.
 
- Public Member Functions inherited from CeresEngine::IRendererGeometryProvider
virtual ~IRendererGeometryProvider () noexcept=default
 

Private Types

using super = TRendererSceneObject< RendererRenderable >
 

Private Member Functions

void onVertexBufferChanged ()
 
void onIndexBufferChanged ()
 

Private Attributes

RenderableComponent mComponent
 A copy of the latest renderable component.
 
RendererRenderableFlags mFlags
 A set of flags that customize and represent the state of the object.
 
RendererRenderableDirtyFlags mDirtyFlags = RendererRenderableDirtyFlag::All
 A set of flags that represent the dirty portions of the object.
 
RendererRenderableInfo mInfo
 A structure that holds renderer-specific information for the renderable.
 
RendererRenderableParams mParameters
 The GPU parameters. Will be copied to the GPU uniform buffer.
 
GPUDynamicBindlessBuffer< RendererRenderableParamsmUniformBuffer
 The uniform buffer storing the renderable GPU parameters used by the renderer.
 
RendererMeshPtr mMesh
 The renderer mesh.
 
Vector< SPtr< RendererMaterial > > mMaterial
 The material to be used when rendering this renderable.
 
Vector< ElementmRenderElements
 A vector that holds all render elements for the renderable.
 
Vector< SubMeshmSubMeshes
 A list of submeshes for the renderable.
 
EventConnection mOnVertexBufferChangedConnection
 A connection to the renderer mesh onVertexBufferChanged event.
 
EventConnection mOnIndexBufferChangedConnection
 A connection to the renderer mesh onIndexBufferChanged event.
 

Friends

class RendererRenderableManager
 

Additional Inherited Members

- Public Attributes inherited from CeresEngine::RendererObject
Event< void(RendererObjectID newID)> willChangeID
 An event called whenever the object is about to change it's ID.
 
Event< void(RendererObjectID oldID)> didChangeID
 An event called whenever the object changes it's ID.
 
- Protected Attributes inherited from CeresEngine::TRendererObject< SelfType, BaseType >
ManagerTypemManager
 The owning object manager.
 
- Protected Attributes inherited from CeresEngine::RendererObject
RendererObjectID mID
 An identifier that uniquely identifies this object in the renderer.
 

Detailed Description

A class that represents a renderable inside the renderer.

Member Typedef Documentation

◆ super

Constructor & Destructor Documentation

◆ RendererRenderable()

CeresEngine::RendererRenderable::RendererRenderable ( RendererRenderableManager manager,
RendererScene scene 
)
explicit

Creates a new RendererRenderable.

Parameters
managerThe owning renderable manager.
sceneA reference to the owning scene.

◆ ~RendererRenderable()

CeresEngine::RendererRenderable::~RendererRenderable ( )
finalnoexcept

Destroys the renderer renderable and releases any renderer (and RenderAPI)-related resources.

Member Function Documentation

◆ draw() [1/2]

void CeresEngine::RendererRenderable::draw ( GPUCommandBuffer commandBuffer,
const ConvexVolume *  viewFrustum = nullptr 
) const

Submits a draw command for the renderable by automatically binding the index and vertex buffers as required.

◆ draw() [2/2]

void CeresEngine::RendererRenderable::draw ( GPUCommandBuffer commandBuffer,
UInt32  subMeshIndex 
) const

Similar to draw(CommandBuffer&) but will only render the specified sub -mesh.

◆ drawMeshOnly()

void CeresEngine::RendererRenderable::drawMeshOnly ( GPUCommandBuffer commandBuffer,
const ConvexVolume *  viewFrustum = nullptr 
) const

Submits a draw command for the renderable by automatically binding the index and vertex buffers as required.

◆ enumerateGeometry()

Generator< RendererGeometry > CeresEngine::RendererRenderable::enumerateGeometry ( const RendererGeometryEnumerationRequest enumerationRequest = RendererGeometryEnumerationRequest()) const
finalvirtual

Enumerates all geometry in the provider.

Implements CeresEngine::IRendererGeometryProvider.

◆ frustumCull() [1/2]

bool CeresEngine::RendererRenderable::frustumCull ( const ConvexVolume &  frustum) const
noexcept

Performs frustum culling using the given camera frustum.

Parameters
frustumThe camera frustum to test visibility for.
Returns
True if the object is visible from the given camera frustum; false otherwise.

◆ frustumCull() [2/2]

bool CeresEngine::RendererRenderable::frustumCull ( const ConvexVolume &  frustum,
UInt32  subMeshIndex 
) const
noexcept

Performs frustum culling on the given subMeshIndex using the given camera frustum.

Parameters
frustumThe camera frustum to test visibility for.
subMeshIndexThe index of the sub-mesh to be tested if visible on the camera frustum.
Returns
True if the object is visible from the given camera frustum; false otherwise.

◆ getBoundingBox()

const AABox & CeresEngine::RendererRenderable::getBoundingBox ( ) const
inline

Gets the renderable bounding box.

◆ getBoundingSphere()

const Sphere & CeresEngine::RendererRenderable::getBoundingSphere ( ) const
inline

Gets the renderable bounding sphere.

◆ getDirtyFlags()

const RendererRenderableDirtyFlags & CeresEngine::RendererRenderable::getDirtyFlags ( ) const
inlinenoexcept

A set of flags that represent the dirty portions of the object.

◆ getFlags()

const RendererRenderableFlags & CeresEngine::RendererRenderable::getFlags ( ) const
inlinenoexcept

A set of flags that customize and represent the state of the object.

◆ getIndexBuffer()

const GPUIndexBuffer & CeresEngine::RendererRenderable::getIndexBuffer ( ) const

◆ getInfo() [1/2]

RendererRenderableInfo & CeresEngine::RendererRenderable::getInfo ( )
inline

A structure that holds renderer-specific information for the renderable.

◆ getInfo() [2/2]

const RendererRenderableInfo & CeresEngine::RendererRenderable::getInfo ( ) const
inline

A structure that holds renderer-specific information for the renderable.

◆ getMaterial()

Material & CeresEngine::RendererRenderable::getMaterial ( ) const

◆ getMesh()

const HMesh & CeresEngine::RendererRenderable::getMesh ( ) const
inline

◆ getRenderElements()

const Vector< Element > & CeresEngine::RendererRenderable::getRenderElements ( ) const
inline

A vector that holds all render elements for the renderable.

◆ getRendererMaterial()

RendererMaterial & CeresEngine::RendererRenderable::getRendererMaterial ( UInt32  subMesh) const

◆ getRendererMaterials()

const Vector< SPtr< RendererMaterial > > & CeresEngine::RendererRenderable::getRendererMaterials ( ) const
inline

◆ getRendererMesh()

const RendererMeshPtr & CeresEngine::RendererRenderable::getRendererMesh ( ) const
inline

◆ getSettings()

const RendererRenderableSettings & CeresEngine::RendererRenderable::getSettings ( ) const
inline

◆ getUniformBuffer()

const GPUBindlessBuffer & CeresEngine::RendererRenderable::getUniformBuffer ( ) const
inline

The uniform buffer storing the renderable GPU parameters used by the renderer.

◆ getVertexBuffer()

const GPUVertexBuffer & CeresEngine::RendererRenderable::getVertexBuffer ( ) const

◆ isDirty()

bool CeresEngine::RendererRenderable::isDirty ( ) const
inlinenoexcept

◆ markAsDirty()

void CeresEngine::RendererRenderable::markAsDirty ( const RendererRenderableDirtyFlags flags = RendererRenderableDirtyFlag::All)
noexcept

◆ onIndexBufferChanged()

void CeresEngine::RendererRenderable::onIndexBufferChanged ( )
private

◆ onVertexBufferChanged()

void CeresEngine::RendererRenderable::onVertexBufferChanged ( )
private

◆ prepare()

void CeresEngine::RendererRenderable::prepare ( RendererContext context)

Prepares the renderable for the rendering of the current frame.

This will update uniform buffers and perform any other necessary operations necessary for rendering. All prepared data must be view independent.

Parameters
contextA context struct that contains parameters given by the renderer.

◆ setFlags()

void CeresEngine::RendererRenderable::setFlags ( const RendererRenderableFlags flags)

A set of flags that customize and represent the state of the object.

◆ synchronize()

void CeresEngine::RendererRenderable::synchronize ( const Transform trasnform,
const RenderableComponent component 
)

Update the renderer renderable with data from a transform and the component.

Note
This method is usually called from RenderingSystem during a synchronization point.
Parameters
transformThe renderable transform.
componentThe renderable component.

Friends And Related Symbol Documentation

◆ RendererRenderableManager

Member Data Documentation

◆ mComponent

RenderableComponent CeresEngine::RendererRenderable::mComponent
private

A copy of the latest renderable component.

◆ mDirtyFlags

RendererRenderableDirtyFlags CeresEngine::RendererRenderable::mDirtyFlags = RendererRenderableDirtyFlag::All
private

A set of flags that represent the dirty portions of the object.

◆ mFlags

RendererRenderableFlags CeresEngine::RendererRenderable::mFlags
private

A set of flags that customize and represent the state of the object.

◆ mInfo

RendererRenderableInfo CeresEngine::RendererRenderable::mInfo
private

A structure that holds renderer-specific information for the renderable.

◆ mMaterial

Vector<SPtr<RendererMaterial> > CeresEngine::RendererRenderable::mMaterial
private

The material to be used when rendering this renderable.

◆ mMesh

RendererMeshPtr CeresEngine::RendererRenderable::mMesh
private

The renderer mesh.

◆ mOnIndexBufferChangedConnection

EventConnection CeresEngine::RendererRenderable::mOnIndexBufferChangedConnection
private

A connection to the renderer mesh onIndexBufferChanged event.

◆ mOnVertexBufferChangedConnection

EventConnection CeresEngine::RendererRenderable::mOnVertexBufferChangedConnection
private

A connection to the renderer mesh onVertexBufferChanged event.

◆ mParameters

RendererRenderableParams CeresEngine::RendererRenderable::mParameters
private

The GPU parameters. Will be copied to the GPU uniform buffer.

◆ mRenderElements

Vector<Element> CeresEngine::RendererRenderable::mRenderElements
private

A vector that holds all render elements for the renderable.

◆ mSubMeshes

Vector<SubMesh> CeresEngine::RendererRenderable::mSubMeshes
private

A list of submeshes for the renderable.

◆ mUniformBuffer

GPUDynamicBindlessBuffer<RendererRenderableParams> CeresEngine::RendererRenderable::mUniformBuffer
private

The uniform buffer storing the renderable GPU parameters used by the renderer.


The documentation for this class was generated from the following file: