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 InstancingDatainstancingData () const
bool isDynamicBatch () const
uint32_t mask () const
Materialmaterial () const
Meshmesh () const
 MeshInstance (Mesh *mesh, Material *material, GraphNode *node=nullptr)
GraphNodenode () 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)
SkinBatchInstanceskinBatchInstance () 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: