VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
visutwin::canvas::MeshInstance Class Reference

Renderable instance of a Mesh with its own material, transform node, and optional GPU instancing. More...

#include <scene/meshInstance.h>

Classes

struct  InstancingData

Public Member Functions

BoundingBox aabb ()
int batchGroupId () const
bool castShadow () const
bool cull () const
int instancingCount () const
const InstancingData & instancingData () const
bool isDynamicBatch () const
uint32_t mask () const
Material * material () const
Mesh * mesh () const
 MeshInstance (Mesh *mesh, Material *material, GraphNode *node=nullptr)
GraphNode * node () const
bool receiveShadow () const
void setBatchGroupId (int id)
void setCastShadow (const bool value)
void setCull (const bool value)
void setCustomAabb (const BoundingBox &aabb)
void setDynamicBatch (bool v)
void setIndirectInstancing (const std::shared_ptr< VertexBuffer > &compactedVB, void *indirectArgs, int slot=0)
void setInstancing (const std::shared_ptr< VertexBuffer > &vertexBuffer, int count)
void setMask (const uint32_t value)
void setReceiveShadow (const bool value)
void setSkinBatchInstance (SkinBatchInstance *sbi)
void setVisible (bool v)
void setVisibleThisFrame (const bool value)
SkinBatchInstance * skinBatchInstance () const
bool visible () const
bool visibleThisFrame () const

Detailed Description

Renderable instance of a Mesh with its own material, transform node, and optional GPU instancing.

A single Mesh can be referenced by many MeshInstance objects, each with a different material and transform (GraphNode). Hardware instancing and GPU-driven indirect rendering are supported for drawing many copies with a single draw call.

Definition at line 30 of file meshInstance.h.

Constructor & Destructor Documentation

◆ MeshInstance()

visutwin::canvas::MeshInstance::MeshInstance ( Mesh * mesh,
Material * material,
GraphNode * node = nullptr )

Definition at line 12 of file meshInstance.cpp.

References material(), mesh(), and node().

Member Function Documentation

◆ aabb()

◆ batchGroupId()

int visutwin::canvas::MeshInstance::batchGroupId ( ) const
inline

Definition at line 106 of file meshInstance.h.

◆ castShadow()

bool visutwin::canvas::MeshInstance::castShadow ( ) const
inline

Definition at line 62 of file meshInstance.h.

Referenced by visutwin::canvas::shouldRenderShadowMeshInstance().

◆ cull()

bool visutwin::canvas::MeshInstance::cull ( ) const
inline

Definition at line 70 of file meshInstance.h.

Referenced by visutwin::canvas::shouldRenderShadowMeshInstance().

◆ instancingCount()

int visutwin::canvas::MeshInstance::instancingCount ( ) const
inline

Definition at line 102 of file meshInstance.h.

◆ instancingData()

const InstancingData & visutwin::canvas::MeshInstance::instancingData ( ) const
inline

Definition at line 101 of file meshInstance.h.

◆ isDynamicBatch()

bool visutwin::canvas::MeshInstance::isDynamicBatch ( ) const
inline

True when this mesh instance is part of a dynamic batch (triggers VT_FEATURE_DYNAMIC_BATCH).

Definition at line 120 of file meshInstance.h.

◆ mask()

uint32_t visutwin::canvas::MeshInstance::mask ( ) const
inline

Definition at line 76 of file meshInstance.h.

◆ material()

Material * visutwin::canvas::MeshInstance::material ( ) const
inline

◆ mesh()

Mesh * visutwin::canvas::MeshInstance::mesh ( ) const
inline

◆ node()

GraphNode * visutwin::canvas::MeshInstance::node ( ) const
inline

◆ receiveShadow()

bool visutwin::canvas::MeshInstance::receiveShadow ( ) const
inline

Definition at line 67 of file meshInstance.h.

◆ setBatchGroupId()

void visutwin::canvas::MeshInstance::setBatchGroupId ( int id)
inline

Definition at line 107 of file meshInstance.h.

◆ setCastShadow()

void visutwin::canvas::MeshInstance::setCastShadow ( const bool value)
inline

Definition at line 63 of file meshInstance.h.

◆ setCull()

void visutwin::canvas::MeshInstance::setCull ( const bool value)
inline

Definition at line 71 of file meshInstance.h.

◆ setCustomAabb()

void visutwin::canvas::MeshInstance::setCustomAabb ( const BoundingBox & aabb)
inline

Override the computed AABB with a custom value (used by dynamic batch AABB updates).

Definition at line 124 of file meshInstance.h.

References aabb().

◆ setDynamicBatch()

void visutwin::canvas::MeshInstance::setDynamicBatch ( bool v)
inline

Definition at line 121 of file meshInstance.h.

◆ setIndirectInstancing()

void visutwin::canvas::MeshInstance::setIndirectInstancing ( const std::shared_ptr< VertexBuffer > & compactedVB,
void * indirectArgs,
int slot = 0 )
inline

Definition at line 92 of file meshInstance.h.

◆ setInstancing()

void visutwin::canvas::MeshInstance::setInstancing ( const std::shared_ptr< VertexBuffer > & vertexBuffer,
int count )
inline

Definition at line 82 of file meshInstance.h.

◆ setMask()

void visutwin::canvas::MeshInstance::setMask ( const uint32_t value)
inline

Definition at line 77 of file meshInstance.h.

◆ setReceiveShadow()

void visutwin::canvas::MeshInstance::setReceiveShadow ( const bool value)
inline

Definition at line 68 of file meshInstance.h.

◆ setSkinBatchInstance()

void visutwin::canvas::MeshInstance::setSkinBatchInstance ( SkinBatchInstance * sbi)
inline

Definition at line 117 of file meshInstance.h.

◆ setVisible()

void visutwin::canvas::MeshInstance::setVisible ( bool v)
inline

Definition at line 111 of file meshInstance.h.

◆ setVisibleThisFrame()

void visutwin::canvas::MeshInstance::setVisibleThisFrame ( const bool value)
inline

Definition at line 74 of file meshInstance.h.

◆ skinBatchInstance()

SkinBatchInstance * visutwin::canvas::MeshInstance::skinBatchInstance ( ) const
inline

SkinBatchInstance pointer for dynamic batches (non-owning, owned by Batch).

Definition at line 116 of file meshInstance.h.

◆ visible()

bool visutwin::canvas::MeshInstance::visible ( ) const
inline

When false, the mesh instance is hidden (merged into a batch).

Definition at line 110 of file meshInstance.h.

◆ visibleThisFrame()

bool visutwin::canvas::MeshInstance::visibleThisFrame ( ) const
inline

Definition at line 73 of file meshInstance.h.


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