|
Cogs.Core
|
Renders a mesh using instancing. More...
#include <InstancedMeshRenderComponent.h>
Static Public Member Functions | |
| static void | registerType () |
| Register the type in the type system. | |
| static uint32_t | getRenderCount (uint32_t startIndex, uint32_t instanceCount, uint32_t meshCount) |
| Get number of instanced Meshes to render. | |
Static Public Member Functions inherited from Cogs::Core::RenderComponent | |
| static void | registerType () |
| Register the type in the type system. | |
Static Public Member Functions inherited from Cogs::ComponentModel::Component | |
| static COGSFOUNDATION_API void | registerType () |
| Register the Component type in the global type database. | |
| static COGSFOUNDATION_API Reflection::TypeId | getComponentTypeId (const StringView &name) |
| Get the type id of the component type with the given name. | |
Public Attributes | |
| MeshHandle | instanceMesh |
| MaterialInstanceHandle | material |
| Material instance used to render the mesh. | |
| uint32_t | startIndex = 0 |
| Start vertex index to render from. | |
| uint32_t | vertexCount = DrawRest |
| Number of vertexes to draw. uint32_t(-1) to draw all remaining vertices. | |
| uint32_t | startInstance = 0 |
| Start instance. | |
| uint32_t | instanceCount = DrawRest |
| Instance count. uint32_t(-1) to draw all remaining instances. | |
| PrimitiveType | primitiveType = (PrimitiveType)-1 |
| Primitive type to use when drawing. Default value -1 means use primitive type from mesh. | |
| uint32_t | instanceIdMultiplier = 1u |
Public Attributes inherited from Cogs::Core::RenderComponent | |
| struct Cogs::Core::RenderComponent::LodData | lod |
| RenderLayers | layer = RenderLayers::Default |
| Layer mask used to determine visibility for a given camera viewport. | |
| int32_t | drawOrder = 0 |
| Draw order within a render bucke. | |
| RenderFlags | renderFlags = RenderFlags::Default |
| Render flags used to control rendering behavior. | |
| uint32_t | objectId = NoObjectId |
| Object identifier passed to rendering commands. | |
| ComponentModel::ComponentHandle | clipShapeComponent = ComponentModel::ComponentHandle::Empty() |
| Handle to the currently active clip component, if any. | |
| ComponentModel::ComponentHandle | customRayPickHandling = ComponentModel::ComponentHandle::Empty() |
| Handle to the component that manages custom raypicking. | |
Static Public Attributes | |
| static constexpr uint32_t | DrawRest = static_cast<uint32_t>(-1) |
| Special value for vertex/instance Count to draw all elements from start index. | |
Additional Inherited Members | |
Public Member Functions inherited from Cogs::Core::RenderComponent | |
| constexpr void | setRenderFlag (RenderFlags flag) |
| Sets the given flag. | |
| constexpr void | setRenderFlag (RenderFlags flag, bool status) |
| Set the given flag to the given status. | |
| constexpr void | unsetRenderFlag (RenderFlags flag) |
| Unset the given flag. | |
| constexpr bool | isRenderFlagSet (RenderFlags flag) const |
| Check if the given flag is currently set. | |
| constexpr bool | isRenderFlagsSet (RenderFlags flags) const |
| Check if the given combination of flags are set. | |
| constexpr void | setVisible (bool visible) |
| Set the specific visibility. | |
| constexpr bool | isVisibleInLayer (RenderLayers layerMask) const |
| Check if the entity should be visible in the given layer mask. | |
| constexpr bool | isVisible () const |
| Check if the entity is visible or not. | |
| constexpr bool | isPickable () const |
| Check if the entity is pickable or not. | |
| constexpr bool | castShadows () const |
| Get if the object should cast shadows. | |
| constexpr bool | disableCulling () const |
| Get if the object should skip culling. | |
| constexpr bool | customMaterial () const |
Public Member Functions inherited from Cogs::ComponentModel::Component | |
| class Entity * | getContainer () const |
| Get the container currently owning this component instance. | |
| void | setContainer (class Entity *container) |
| Set the container owning this component instance. | |
| template<typename ComponentType > | |
| ComponentType * | getComponent () const |
| COGSFOUNDATION_API Component * | getComponent (const Reflection::Name &name) const |
| COGSFOUNDATION_API Component * | getComponent (const Reflection::TypeId &id) const |
| template<typename ComponentType > | |
| ComponentHandle | getComponentHandle () const |
| COGSFOUNDATION_API ComponentHandle | getComponentHandle (const Reflection::Name &name) const |
| COGSFOUNDATION_API ComponentHandle | getComponentHandle (const Reflection::TypeId &id) const |
| void | setActive () |
| Sets the component to the ComponentFlags::Active state. | |
| bool | isActive () const |
| Gets if the component is currently set to the ComponentFlags::Active state. | |
| void | setChanged () |
| Sets the component to the ComponentFlags::Changed state with carry. | |
| void | setChangedTransient () |
| Sets the component to the ComponentFlags::Changed state without carry. | |
| void | setFieldChanged (const Reflection::FieldId fieldId) |
| Sets the component to the ComponentFlags::Changed state without carry. | |
| template<typename ClassType , typename FieldType > | |
| void | setFieldChanged (FieldType ClassType::*field) |
| Sets a flag indicating that the given field has changed. | |
| void | setFieldChangedTransient (const Reflection::FieldId fieldId) |
| Sets the component to the ComponentFlags::Changed state without carry. | |
| bool | hasChanged () const |
| bool | hasAnyfieldChanged () const |
| Gets if any fields have been changed. | |
| bool | hasFieldChanged (const Reflection::FieldId fieldId) const |
| Gets if the field with the given id on this component instance has changed. | |
| template<typename ClassType , typename FieldType > | |
| bool | hasFieldChanged (FieldType ClassType::*field) const |
| Gets if the given field has changed. | |
| void | resetCarryChanged () |
| Reset the CarryChanged flag. Called at start of redraw. See ComponentFlags::CarryChanged. | |
| void | resetChanged () |
| Resets the changed state of the component, respecting any carry state set. | |
| template<typename ClassType , typename FieldType > | |
| Reflection::FieldId | getFieldId (FieldType ClassType::*field) const |
| Gets field ID of the given field. | |
| void | resetFieldsChanged () |
| Resets the state of all changed field flags. | |
| void | resetFieldChanged (const Reflection::FieldId fieldId) |
| Resets the changed state of the given fieldId. | |
| template<typename ClassType , typename FieldType > | |
| void | resetFieldChanged (FieldType ClassType::*field) |
| Resets the changed state of the given field. | |
| constexpr void | setFlags (const uint32_t flags) |
| Override all flags of the Component, setting the given flags. | |
| constexpr void | setFlag (const uint32_t flag) |
| Set the given flags. Does not override the currently set flags. | |
| constexpr void | unsetFlag (const uint32_t flag) |
| Unset the given flag. Does not remove the status of other than the given flags. | |
| constexpr bool | isSet (const uint32_t flag) const |
| Checks if the given flag is set. Requires exact bit match if test of several bits. | |
| constexpr void | setTypeId (const Reflection::TypeId typeId) |
| Set the Reflection::TypeId of the component. | |
| constexpr Reflection::TypeId | getTypeId () const |
| Get the Reflection::TypeId of the component. | |
| COGSFOUNDATION_API const Reflection::Type & | getType () const |
| Get the full Reflection::Type of the component. | |
| constexpr void | setIndex (const ComponentIndex index) |
| Set the components pool index. For internal use only. | |
| constexpr ComponentIndex | getIndex () const |
| Get the components pool index. For internal use only. | |
| constexpr void | setGeneration (uint16_t generation) |
| Sets the component generation. | |
| constexpr uint16_t | getGeneration () const |
| Gets the component generation. | |
| size_t | hash (size_t hashValue=Cogs::hash()) const |
| Calculates a hash of this component's members. | |
Renders a mesh using instancing.
Definition at line 14 of file InstancedMeshRenderComponent.h.
|
static |
Get number of instanced Meshes to render.
Will quietly limit number of Instances to fit within bounds of the Mesh values (positions, colors). Usage: InstancedMeshRenderComponent::getRenderCount(renderComponent.startIndex, renderComponent.vertexCount, mesh->getCount()); InstancedMeshRenderComponent::getRenderCount(renderComponent.startInstance, renderComponent.instanceCount, instanceMesh->getCount())
| startIndex | First instanceIndex to draw. InstancedMeshRenderComponent.startInstance(or startIndex). |
| instanceCount | Number of elements to draw. InstancedMeshRenderComponent.instanceCount |
| meshCount | Length of mesh stream, e.g. Mesh Instance-Positions. |
Definition at line 23 of file InstancedMeshRenderComponent.cpp.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), and Cogs::Core::InstancedMeshRenderSystem::update().
|
static |
Register the type in the type system.
Definition at line 7 of file InstancedMeshRenderComponent.cpp.
References instanceCount, instanceIdMultiplier, instanceMesh, material, primitiveType, startIndex, startInstance, and vertexCount.
|
staticconstexpr |
Special value for vertex/instance Count to draw all elements from start index.
Definition at line 53 of file InstancedMeshRenderComponent.h.
| uint32_t Cogs::Core::InstancedMeshRenderComponent::instanceCount = DrawRest |
Instance count. uint32_t(-1) to draw all remaining instances.
Definition at line 41 of file InstancedMeshRenderComponent.h.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), registerType(), Cogs::Core::BadgeSetSystem::update(), and Cogs::Core::InstancedMeshRenderSystem::update().
| uint32_t Cogs::Core::InstancedMeshRenderComponent::instanceIdMultiplier = 1u |
Multiplier used when embedding instance ids into picking results. If geometry mesh texcoord ids run in [0, N), setting multiplier to N will stack the ids of the instances on top of eachother. Set to zero to disable embedding of instance ids.
Definition at line 49 of file InstancedMeshRenderComponent.h.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), and registerType().
| MeshHandle Cogs::Core::InstancedMeshRenderComponent::instanceMesh |
Mesh containing instancing data. If mesh contains instance matrices, it is assumed these are regular transform matrices and will be used for bounds calculation and picking. If mesh contains instance positions, but not instance matrices, those will be used instead. If the mesh contains bounds, those bounds are used instead of calculating bounds from matrix/positions. These bounds are extended by the bounds by the geometry mesh. For picking/bounds to work, the vertex shader has to do normal transform. If the vertex shader does not do that, use custom picking and set the bounds.
Definition at line 26 of file InstancedMeshRenderComponent.h.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), registerType(), Cogs::Core::BadgeSetSystem::update(), Cogs::Core::MarkerPointSetSystem::update(), Cogs::Core::InstancedMeshBuilderSystem::update(), and Cogs::Core::InstancedMeshRenderSystem::update().
| MaterialInstanceHandle Cogs::Core::InstancedMeshRenderComponent::material |
Material instance used to render the mesh.
Definition at line 29 of file InstancedMeshRenderComponent.h.
Referenced by registerType(), Cogs::Core::BadgeSetSystem::update(), Cogs::Core::MarkerPointSetSystem::update(), and Cogs::Core::InstancedMeshBuilderSystem::update().
| PrimitiveType Cogs::Core::InstancedMeshRenderComponent::primitiveType = (PrimitiveType)-1 |
Primitive type to use when drawing. Default value -1 means use primitive type from mesh.
Definition at line 44 of file InstancedMeshRenderComponent.h.
Referenced by registerType().
| uint32_t Cogs::Core::InstancedMeshRenderComponent::startIndex = 0 |
Start vertex index to render from.
Definition at line 32 of file InstancedMeshRenderComponent.h.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), registerType(), Cogs::Core::BadgeSetSystem::update(), Cogs::Core::InstancedMeshRenderSystem::update(), and Cogs::Core::InstancedModelSystem::update().
| uint32_t Cogs::Core::InstancedMeshRenderComponent::startInstance = 0 |
Start instance.
Definition at line 38 of file InstancedMeshRenderComponent.h.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), registerType(), Cogs::Core::BadgeSetSystem::update(), and Cogs::Core::InstancedMeshRenderSystem::update().
| uint32_t Cogs::Core::InstancedMeshRenderComponent::vertexCount = DrawRest |
Number of vertexes to draw. uint32_t(-1) to draw all remaining vertices.
Definition at line 35 of file InstancedMeshRenderComponent.h.
Referenced by Cogs::Core::InstancedMeshPicker::pickImpl(), registerType(), and Cogs::Core::InstancedMeshRenderSystem::update().