OGRE  1.9.0
Scene
Collaboration diagram for Scene:

Classes

class  Ogre::AxisAlignedBoxSceneQuery
 Specialises the SceneQuery class for querying within an axis aligned box. More...
 
class  Ogre::BaseInstanceBatchVTF
 Instancing implementation using vertex texture through Vertex Texture Fetch (VTF) This implementation has the following advantages: Supports huge amount of instances per batch Supports skinning even with huge ammounts of instances per batch Doesn't need shader constants registers. More...
 
class  Ogre::Camera
 A viewpoint from which the scene will be rendered. More...
 
class  Ogre::DefaultAxisAlignedBoxSceneQuery
 Default implementation of AxisAlignedBoxSceneQuery. More...
 
class  Ogre::DefaultIntersectionSceneQuery
 Default implementation of IntersectionSceneQuery. More...
 
class  Ogre::DefaultPlaneBoundedVolumeListSceneQuery
 Default implementation of PlaneBoundedVolumeListSceneQuery. More...
 
class  Ogre::DefaultRaySceneQuery
 Default implementation of RaySceneQuery. More...
 
class  Ogre::DefaultSceneManager
 Default scene manager. More...
 
class  Ogre::DefaultSceneManagerFactory
 Factory for default scene manager. More...
 
class  Ogre::DefaultShadowCameraSetup
 Implements default shadow camera setup. More...
 
class  Ogre::DefaultSphereSceneQuery
 Default implementation of SphereSceneQuery. More...
 
class  Ogre::Entity
 Defines an instance of a discrete, movable object based on a Mesh. More...
 
class  Ogre::EntityFactory
 Factory object for creating Entity instances. More...
 
class  Ogre::FocusedShadowCameraSetup
 Implements the uniform shadow mapping algorithm in focused mode. More...
 
class  Ogre::InstanceBatch
 InstanceBatch forms part of the new Instancing system This is an abstract class that must be derived to implement different instancing techniques (. More...
 
class  Ogre::InstanceBatchHW
 This is technique requires true instancing hardware support. More...
 
class  Ogre::InstanceBatchHW_VTF
 Instancing implementation using vertex texture through Vertex Texture Fetch (VTF) and hardware instancing. More...
 
class  Ogre::InstanceBatchShader
 This is the same technique the old "InstancedGeometry" implementation used (with improvements). More...
 
class  Ogre::InstanceBatchVTF
 
class  Ogre::InstancedEntity
 
class  Ogre::InstancedGeometry
 Pre-transforms and batches up meshes for efficient use as instanced geometry in a scene. More...
 
class  Ogre::InstanceManager
 This is the main starting point for the new instancing system. More...
 
struct  Ogre::InstanceManager::BatchSettings
 
class  Ogre::IntersectionSceneQuery
 Separate SceneQuery class to query for pairs of objects which are possibly intersecting one another. More...
 
class  Ogre::IntersectionSceneQueryListener
 Alternative listener class for dealing with IntersectionSceneQuery. More...
 
struct  Ogre::IntersectionSceneQueryResult
 Holds the results of an intersection scene query (pair values). More...
 
class  Ogre::Light
 Representation of a dynamic light source in the scene. More...
 
class  Ogre::LightFactory
 Factory object for creating Light instances. More...
 
class  Ogre::LiSPSMShadowCameraSetup
 Implements the Light Space Perspective Shadow Mapping Algorithm. More...
 
class  Ogre::ManualObject
 Class providing a much simplified interface to generating manual objects with custom geometry. More...
 
class  Ogre::ManualObjectFactory
 Factory object for creating ManualObject instances. More...
 
class  Ogre::MovableObject
 Abstract class defining a movable object in a scene. More...
 
class  Ogre::MovableObjectFactory
 Interface definition for a factory class which produces a certain kind of MovableObject, and can be registered with Root in order to allow all clients to produce new instances of this object, integrated with the standard Ogre processing. More...
 
class  Ogre::MovablePlane
 Definition of a Plane that may be attached to a node, and the derived details of it retrieved simply. More...
 
class  Ogre::Node
 Class representing a general-purpose node an articulated scene graph. More...
 
class  Ogre::PlaneBoundedVolumeListSceneQuery
 Specialises the SceneQuery class for querying within a plane-bounded volume. More...
 
class  Ogre::PlaneOptimalShadowCameraSetup
 Implements the plane optimal shadow camera algorithm. More...
 
class  Ogre::PSSMShadowCameraSetup
 Parallel Split Shadow Map (PSSM) shadow camera setup. More...
 
class  Ogre::RaySceneQuery
 Specialises the SceneQuery class for querying along a ray. More...
 
class  Ogre::RaySceneQueryListener
 Alternative listener class for dealing with RaySceneQuery. More...
 
struct  Ogre::RaySceneQueryResultEntry
 This struct allows a single comparison of result data no matter what the type. More...
 
class  Ogre::Rectangle2D
 Allows the rendering of a simple 2D rectangle This class renders a simple 2D rectangle; this rectangle has no depth and therefore is best used with specific render queue and depth settings, like RENDER_QUEUE_BACKGROUND and 'depth_write off' for backdrops, and RENDER_QUEUE_OVERLAY and 'depth_check off' for fullscreen quads. More...
 
class  Ogre::RegionSceneQuery
 Abstract class defining a query which returns single results from a region. More...
 
class  Ogre::Renderable
 Abstract class defining the interface all renderable objects must implement. More...
 
class  Ogre::SceneManager
 Manages the organisation and rendering of a 'scene' i.e. More...
 
class  Ogre::SceneManagerEnumerator
 Enumerates the SceneManager classes available to applications. More...
 
class  Ogre::SceneManagerFactory
 Class which will create instances of a given SceneManager. More...
 
struct  Ogre::SceneManagerMetaData
 Structure containing information about a scene manager. More...
 
class  Ogre::SceneNode
 Class representing a node in the scene graph. More...
 
class  Ogre::SceneQuery
 A class for performing queries on a scene. More...
 
class  Ogre::SceneQueryListener
 This optional class allows you to receive per-result callbacks from SceneQuery executions instead of a single set of consolidated results. More...
 
struct  Ogre::SceneQueryResult
 Holds the results of a scene query. More...
 
class  Ogre::ShadowCameraSetup
 This class allows you to plug in new ways to define the camera setup when rendering and projecting shadow textures. More...
 
class  Ogre::ShadowCaster
 This class defines the interface that must be implemented by shadow casters. More...
 
class  Ogre::ShadowRenderable
 Class which represents the renderable aspects of a set of shadow volume faces. More...
 
struct  Ogre::ShadowTextureConfig
 Structure containing the configuration for one shadow texture. More...
 
class  Ogre::ShadowTextureManager
 Class to manage the available shadow textures which may be shared between many SceneManager instances if formats agree. More...
 
class  Ogre::ShadowVolumeExtrudeProgram
 Static class containing source for vertex programs for extruding shadow volumes. More...
 
class  Ogre::SimpleRenderable
 Simple implementation of MovableObject and Renderable for single-part custom objects. More...
 
class  Ogre::SkeletonInstance
 A SkeletonInstance is a single instance of a Skeleton used by a world object. More...
 
class  Ogre::SphereSceneQuery
 Specialises the SceneQuery class for querying within a sphere. More...
 
struct  Ogre::StaticFaceGroup
 Collects a group of static i.e. More...
 
class  Ogre::StaticGeometry
 Pre-transforms and batches up meshes for efficient use as static geometry in a scene. More...
 
class  Ogre::SubEntity
 Utility class which defines the sub-parts of an Entity. More...
 
class  Ogre::UserObjectBindings
 Class that provides convenient interface to establish a linkage between custom user application objects and Ogre core classes. More...
 
struct  Ogre::ViewPoint
 Structure for holding a position & orientation pair. More...
 
struct  Ogre::VisibleObjectsBoundsInfo
 Structure collecting together information about the visible objects that have been discovered in a scene. More...
 
class  Ogre::WireBoundingBox
 Allows the rendering of a wireframe bounding box. More...
 

Typedefs

typedef map< String, BatchSettings >::type Ogre::InstanceManager::BatchSettingsMap
 
typedef ConstVectorIterator< ShadowTextureConfigListOgre::ConstShadowTextureConfigIterator
 
typedef vector< Vector4 >::type Ogre::InstanceBatch::CustomParamsVec
 
typedef vector< uint8 >::type Ogre::BaseInstanceBatchVTF::HWBoneIdxVec
 
typedef vector< float >::type Ogre::BaseInstanceBatchVTF::HWBoneWgtVec
 
typedef ConstVectorIterator< InstanceBatchVecOgre::InstanceManager::InstanceBatchIterator
 
typedef map< String, InstanceBatchVec >::type Ogre::InstanceManager::InstanceBatchMap
 
typedef ConstMapIterator< InstanceBatchMapOgre::InstanceManager::InstanceBatchMapIterator
 
typedef vector< InstanceBatch * >::type Ogre::InstanceManager::InstanceBatchVec
 
typedef vector< InstancedEntity * >::type Ogre::InstanceBatch::InstancedEntityVec
 
typedef vector< InstancedEntity * >::type Ogre::InstancedEntity::InstancedEntityVec
 Stores the master when we're the slave, store our slaves when we're the master.
 
typedef vector< Matrix4 >::type Ogre::BaseInstanceBatchVTF::Matrix4Vec
 
typedef vector< RaySceneQueryResultEntry >::type Ogre::RaySceneQueryResult
 
typedef list< SceneQueryMovableObjectPair >::type Ogre::SceneQueryMovableIntersectionList
 
typedef std::pair< MovableObject *, MovableObject * > Ogre::SceneQueryMovableObjectPair
 
typedef std::pair< MovableObject *, SceneQuery::WorldFragment * > Ogre::SceneQueryMovableObjectWorldFragmentPair
 
typedef list< SceneQueryMovableObjectWorldFragmentPair >::type Ogre::SceneQueryMovableWorldFragmentIntersectionList
 
typedef list< MovableObject * >::type Ogre::SceneQueryResultMovableList
 
typedef list< SceneQuery::WorldFragment * >::type Ogre::SceneQueryResultWorldFragmentList
 
typedef uint16 Ogre::SceneTypeMask
 Bitmask containing scene types.
 
typedef SharedPtr< ShadowCameraSetupOgre::ShadowCameraSetupPtr
 
typedef vector< ShadowTextureConfig >::type Ogre::ShadowTextureConfigList
 
typedef vector< TexturePtr >::type Ogre::ShadowTextureList
 

Enumerations

enum  Ogre::InstanceManager::BatchSettingId { Ogre::InstanceManager::CAST_SHADOWS = 0 , Ogre::InstanceManager::SHOW_BOUNDINGBOX , Ogre::InstanceManager::NUM_SETTINGS }
 Values to be used in setSetting() & BatchSettings::setting. More...
 
enum  Ogre::FaceGroupType { Ogre::FGT_FACE_LIST , Ogre::FGT_PATCH , Ogre::FGT_UNKNOWN }
 A type of face group, i.e. More...
 
enum  Ogre::InstanceManager::InstancingTechnique {
  Ogre::InstanceManager::ShaderBased , Ogre::InstanceManager::TextureVTF , Ogre::InstanceManager::HWInstancingBasic , Ogre::InstanceManager::HWInstancingVTF ,
  Ogre::InstanceManager::InstancingTechniquesCount
}
 
enum  Ogre::SceneType {
  Ogre::ST_GENERIC = 1 , Ogre::ST_EXTERIOR_CLOSE = 2 , Ogre::ST_EXTERIOR_FAR = 4 , Ogre::ST_EXTERIOR_REAL_FAR = 8 ,
  Ogre::ST_INTERIOR = 16
}
 Classification of a scene to allow a decision of what type of SceenManager to provide back to the application. More...
 
enum  Ogre::ShadowRenderableFlags { Ogre::SRF_INCLUDE_LIGHT_CAP = 0x00000001 , Ogre::SRF_INCLUDE_DARK_CAP = 0x00000002 , Ogre::SRF_EXTRUDE_TO_INFINITY = 0x00000004 }
 A set of flags that can be used to influence ShadowRenderable creation. More...
 

Functions

 Ogre::BaseInstanceBatchVTF::BaseInstanceBatchVTF (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName)
 
 Ogre::InstanceManager::BatchSettings::BatchSettings ()
 
 Ogre::InstanceBatch::InstanceBatch (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName)
 
 Ogre::InstanceBatchHW::InstanceBatchHW (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName)
 
 Ogre::InstanceBatchHW_VTF::InstanceBatchHW_VTF (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName)
 
 Ogre::InstanceBatchShader::InstanceBatchShader (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName)
 
 Ogre::InstanceBatchVTF::InstanceBatchVTF (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName)
 
 Ogre::InstancedEntity::InstancedEntity (InstanceBatch *batchOwner, uint32 instanceID, InstancedEntity *sharedTransformEntity=NULL)
 
 Ogre::InstanceManager::InstanceManager (const String &customName, SceneManager *sceneManager, const String &meshName, const String &groupName, InstancingTechnique instancingTechnique, uint16 instancingFlags, size_t instancesPerBatch, unsigned short subMeshIdx, bool useBoneMatrixLookup=false)
 
virtual Ogre::BaseInstanceBatchVTF::~BaseInstanceBatchVTF ()
 
virtual Ogre::InstanceBatch::~InstanceBatch ()
 
virtual Ogre::InstanceBatchHW::~InstanceBatchHW ()
 
virtual Ogre::InstanceBatchHW_VTF::~InstanceBatchHW_VTF ()
 
virtual Ogre::InstanceBatchShader::~InstanceBatchShader ()
 
virtual Ogre::InstanceBatchVTF::~InstanceBatchVTF ()
 
virtual Ogre::InstancedEntity::~InstancedEntity ()
 
virtual Ogre::InstanceManager::~InstanceManager ()
 
void Ogre::InstanceManager::_addDirtyBatch (InstanceBatch *dirtyBatch)
 Called by an InstanceBatch when it requests their bounds to be updated for proper culling.
 
virtual void Ogre::InstanceBatch::_boundsDirty (void)
 Called by InstancedEntity(s) to tell us we need to update the bounds (we touch the SceneNode so the SceneManager aknowledges such change)
 
void Ogre::InstanceBatchHW::_boundsDirty (void)
 Overloaded so that we don't perform needless updates when in static mode.
 
void Ogre::InstanceBatchHW_VTF::_boundsDirty (void)
 Overloaded so that we don't perform needless updates when in static mode.
 
void Ogre::InstanceBatch::_defragmentBatch (bool optimizeCulling, InstancedEntityVec &usedEntities, CustomParamsVec &usedParams)
 
void Ogre::InstanceBatch::_defragmentBatchDiscard (void)
 
const Vector4Ogre::InstanceBatch::_getCustomParam (InstancedEntity *instancedEntity, unsigned char idx)
 
const Vector3Ogre::InstancedEntity::_getDerivedPosition () const
 Returns the derived position of the instanced entity including local transform.
 
const Mesh::IndexMapOgre::InstanceBatch::_getIndexToBoneMap () const
 
MeshPtrOgre::InstanceBatch::_getMeshRef ()
 
const Ogre::MeshPtrOgre::InstanceBatch::_getMeshReference (void) const
 
InstanceBatchOgre::InstancedEntity::_getOwner () const
 
virtual const Matrix4Ogre::InstancedEntity::_getParentNodeFullTransform (void) const
 Returns the world transform of the instanced entity including local transform.
 
void Ogre::InstanceBatch::_markTransformSharingDirty ()
 Tells that the list of entity instances with shared transforms has changed.
 
void Ogre::InstancedEntity::_notifyAttached (Node *parent, bool isTagPoint=false)
 Internal method called to notify the object that it has been attached to a node.
 
void Ogre::InstanceBatch::_notifyCurrentCamera (Camera *cam)
 Internal method to notify the object of the camera to be used for the next rendering operation.
 
void Ogre::InstancedEntity::_notifyMoved (void)
 Overridden so we can tell the InstanceBatch it needs to update it's bounds.
 
void Ogre::InstanceBatch::_setCustomParam (InstancedEntity *instancedEntity, unsigned char idx, const Vector4 &newParam)
 
void Ogre::InstanceBatch::_setInstancesPerBatch (size_t instancesPerBatch)
 Raises an exception if trying to change it after being built.
 
bool Ogre::InstanceBatch::_supportsSkeletalAnimation () const
 Returns true if this technique supports skeletal animation.
 
virtual bool Ogre::InstancedEntity::_updateAnimation (void)
 Called by InstanceBatch in his _updateRenderQueue to tell us we need to calculate our bone matrices.
 
void Ogre::InstanceBatch::_updateBounds (void)
 
void Ogre::InstanceManager::_updateDirtyBatches (void)
 Called by SceneManager when we told it we have at least one dirty batch.
 
void Ogre::BaseInstanceBatchVTF::_updateRenderQueue (RenderQueue *queue)
 Overloaded to be able to updated the vertex texture.
 
virtual void Ogre::InstanceBatch::_updateRenderQueue (RenderQueue *queue)
 Internal method by which the movable object must add Renderable subclass instances to the rendering queue.
 
virtual void Ogre::InstanceBatchHW::_updateRenderQueue (RenderQueue *queue)
 Overloaded to avoid updating skeletons (which we don't support), check visibility on a per unit basis and finally updated the vertex buffer.
 
virtual void Ogre::InstanceBatchHW_VTF::_updateRenderQueue (RenderQueue *queue)
 Overloaded to visibility on a per unit basis and finally updated the vertex texture.
 
void Ogre::InstancedEntity::_updateRenderQueue (RenderQueue *queue)
 Do nothing, InstanceBatch takes care of this.
 
void Ogre::InstanceManager::applySettingToBatches (BatchSettingId id, bool value, const InstanceBatchVec &container)
 
virtual RenderOperation Ogre::InstanceBatch::build (const SubMesh *baseSubMesh)
 Constructs all the data needed to use this batch, as well as the InstanceEntities.
 
void Ogre::BaseInstanceBatchVTF::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation)
 
virtual void Ogre::InstanceBatch::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation)
 Instancing consumes significantly more GPU memory than regular rendering methods.
 
void Ogre::InstanceBatchHW::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation)
 
void Ogre::InstanceBatchShader::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation)
 
InstanceBatchOgre::InstanceManager::buildNewBatch (const String &materialName, bool firstTime)
 Called when batches are fully exhausted (can't return more instances) so a new batch is created.
 
virtual size_t Ogre::InstanceBatch::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const =0
 Some techniques have a limit on how many instances can be done.
 
size_t Ogre::InstanceBatchHW::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const
 
size_t Ogre::InstanceBatchHW_VTF::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const
 
size_t Ogre::InstanceBatchShader::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const
 
size_t Ogre::InstanceBatchVTF::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const
 
virtual bool Ogre::InstanceBatch::checkSubMeshCompatibility (const SubMesh *baseSubMesh)
 Returns false on errors that would prevent building this batch from the given submesh.
 
virtual bool Ogre::InstanceBatchHW::checkSubMeshCompatibility (const SubMesh *baseSubMesh)
 Returns false on errors that would prevent building this batch from the given submesh.
 
virtual bool Ogre::InstanceBatchHW_VTF::checkSubMeshCompatibility (const SubMesh *baseSubMesh)
 Returns false on errors that would prevent building this batch from the given submesh.
 
void Ogre::InstanceManager::cleanupEmptyBatches (void)
 This function can be useful to improve CPU speed after having too many instances created, which where now removed, thus freeing many batches with zero used Instanced Entities However the batches aren't automatically removed from memory until the InstanceManager is destroyed, or this function is called.
 
void Ogre::BaseInstanceBatchVTF::cloneMaterial (const MaterialPtr &material)
 Clones the base material so it can have it's own vertex texture, and also clones it's shadow caster materials, if it has any.
 
size_t Ogre::BaseInstanceBatchVTF::convert3x4MatricesToDualQuaternions (float *matrices, size_t numOfMatrices, float *outDualQuaternions)
 
virtual void Ogre::InstanceBatch::createAllInstancedEntities (void)
 
InstancedEntityOgre::InstanceBatch::createInstancedEntity ()
 Returns a pointer to a new InstancedEntity ready to use Note it's actually preallocated, so no memory allocation happens at this point.
 
InstancedEntityOgre::InstanceManager::createInstancedEntity (const String &materialName)
 Creates an InstancedEntity based on an existing InstanceManager (.
 
void Ogre::InstancedEntity::createSkeletonInstance ()
 Creates/destroys our own skeleton, also tells slaves to unlink if we're destroying.
 
virtual void Ogre::BaseInstanceBatchVTF::createVertexSemantics (VertexData *thisVertexData, VertexData *baseVertexData, const HWBoneIdxVec &hwBoneIdx, const HWBoneWgtVec &hwBoneWgt)=0
 Creates 2 TEXCOORD semantics that will be used to sample the vertex texture.
 
void Ogre::InstanceBatchHW_VTF::createVertexSemantics (VertexData *thisVertexData, VertexData *baseVertexData, const HWBoneIdxVec &hwBoneIdx, const HWBoneWgtVec &hwBoneWgt)
 Creates 2 TEXCOORD semantics that will be used to sample the vertex texture.
 
void Ogre::InstanceBatchVTF::createVertexSemantics (VertexData *thisVertexData, VertexData *baseVertexData, const HWBoneIdxVec &hwBoneIdx, const HWBoneWgtVec &hwBoneWgt)
 Creates 2 TEXCOORD semantics that will be used to sample the vertex texture.
 
void Ogre::BaseInstanceBatchVTF::createVertexTexture (const SubMesh *baseSubMesh)
 Creates the vertex texture.
 
void Ogre::InstanceBatch::defragmentBatchDoCull (InstancedEntityVec &usedEntities, CustomParamsVec &usedParams)
 
void Ogre::InstanceManager::defragmentBatches (bool optimizeCull, vector< InstancedEntity * >::type &entities, vector< Ogre::Vector4 >::type &usedParams, InstanceBatchVec &fragmentedBatches)
 
void Ogre::InstanceManager::defragmentBatches (bool optimizeCulling)
 After creating many entities (which turns in many batches) and then removing entities that are in the middle of these batches, there might be many batches with many free entities.
 
void Ogre::InstanceBatch::defragmentBatchNoCull (InstancedEntityVec &usedEntities, CustomParamsVec &usedParams)
 
virtual void Ogre::InstanceBatch::deleteAllInstancedEntities (void)
 
virtual void Ogre::InstanceBatch::deleteUnusedInstancedEntities (void)
 
void Ogre::InstancedEntity::destroySkeletonInstance ()
 
bool Ogre::InstancedEntity::findVisible (Camera *camera) const
 Returns true if this InstancedObject is visible to the current camera.
 
bool Ogre::BaseInstanceBatchVTF::forceOneWeight () const
 
virtual InstancedEntityOgre::BaseInstanceBatchVTF::generateInstancedEntity (size_t num)
 
virtual InstancedEntityOgre::InstanceBatch::generateInstancedEntity (size_t num)
 Creates a new InstancedEntity instance.
 
AnimationStateSetOgre::InstancedEntity::getAllAnimationStates (void) const
 
AnimationStateOgre::InstancedEntity::getAnimationState (const String &name) const
 
const AxisAlignedBoxOgre::InstanceBatch::getBoundingBox (void) const
 Retrieves the local axis-aligned bounding box for this object.
 
const AxisAlignedBoxOgre::InstancedEntity::getBoundingBox (void) const
 Retrieves the local axis-aligned bounding box for this object.
 
Real Ogre::InstanceBatch::getBoundingRadius (void) const
 Retrieves the radius of the origin-centered bounding sphere for this object.
 
Real Ogre::InstancedEntity::getBoundingRadius (void) const
 Retrieves the radius of the origin-centered bounding sphere for this object.
 
const Vector4Ogre::InstancedEntity::getCustomParam (unsigned char idx)
 
InstanceBatchOgre::InstanceManager::getFreeBatch (const String &materialName)
 Finds a batch with at least one free instanced entity we can use.
 
InstanceBatchIterator Ogre::InstanceManager::getInstanceBatchIterator (const String &materialName) const
 Get non-updateable iterator over instance batches for given material.
 
InstanceBatchMapIterator Ogre::InstanceManager::getInstanceBatchMapIterator (void) const
 Get non-updateable iterator over instance batches per material.
 
void Ogre::InstanceBatch::getInstancedEntitiesInUse (InstancedEntityVec &outEntities, CustomParamsVec &outParams)
 Fills the input vector with the instances that are currently being used or were requested.
 
InstancingTechnique Ogre::InstanceManager::getInstancingTechnique () const
 
const LightListOgre::InstanceBatch::getLights (void) const
 Gets a list of lights, ordered relative to how close they are to this renderable.
 
const MaterialPtrOgre::InstanceBatch::getMaterial (void) const
 Retrieves a weak reference to the material this renderable object uses.
 
virtual size_t Ogre::BaseInstanceBatchVTF::getMaxLookupTableInstances () const
 
size_t Ogre::InstanceManager::getMaxOrBestNumInstancesPerBatch (String materialName, size_t suggestedSize, uint16 flags)
 Calculates the maximum (or the best amount, depending on flags) of instances per batch given the suggested size for the technique this manager was created for.
 
Real Ogre::InstancedEntity::getMaxScaleCoef () const
 Returns the maximum derived scale coefficient among the xyz values.
 
const StringOgre::InstanceBatch::getMovableType (void) const
 Returns the type name of this object.
 
const StringOgre::InstancedEntity::getMovableType (void) const
 Returns the type name of this object.
 
const StringOgre::InstanceManager::getName () const
 
unsigned char Ogre::InstanceManager::getNumCustomParams () const
 
unsigned short Ogre::BaseInstanceBatchVTF::getNumWorldTransforms (void) const
 Returns the number of world transform matrices this renderable requires.
 
unsigned short Ogre::InstanceBatchHW::getNumWorldTransforms (void) const
 Returns the number of world transform matrices this renderable requires.
 
unsigned short Ogre::InstanceBatchShader::getNumWorldTransforms (void) const
 Returns the number of world transform matrices this renderable requires.
 
const QuaternionOgre::InstancedEntity::getOrientation () const
 Retrieve the orientation.
 
const Vector3Ogre::InstancedEntity::getPosition () const
 Retrieve the position.
 
void Ogre::InstanceBatch::getRenderOperation (RenderOperation &op)
 Gets the render operation required to send this object to the frame buffer.
 
const Vector3Ogre::InstancedEntity::getScale () const
 Retrieve the local scale.
 
SceneManagerOgre::InstanceManager::getSceneManager () const
 
bool Ogre::InstanceManager::getSetting (BatchSettingId id, const String &materialName) const
 If settings for the given material didn't exist, default value is returned.
 
SkeletonInstanceOgre::InstancedEntity::getSkeleton (void) const
 
Real Ogre::InstanceBatch::getSquaredViewDepth (const Camera *cam) const
 Returns the camera-relative squared depth of this renderable.
 
Real Ogre::InstancedEntity::getSquaredViewDepth (const Camera *cam) const
 This is used by our batch owner to get the closest entity's depth, returns infinity when not attached to a scene node.
 
TechniqueOgre::InstanceBatch::getTechnique (void) const
 Retrieves a pointer to the Material Technique this renderable object uses.
 
size_t Ogre::InstancedEntity::getTransforms (Matrix4 *xform) const
 Returns number of matrices written to transform, assumes transform has enough space.
 
size_t Ogre::InstancedEntity::getTransforms3x4 (float *xform) const
 Returns number of 32-bit values written.
 
void Ogre::BaseInstanceBatchVTF::getWorldTransforms (Matrix4 *xform) const
 Gets the world transform matrix / matrices for this renderable object.
 
void Ogre::InstanceBatchHW::getWorldTransforms (Matrix4 *xform) const
 Gets the world transform matrix / matrices for this renderable object.
 
void Ogre::InstanceBatchShader::getWorldTransforms (Matrix4 *xform) const
 Gets the world transform matrix / matrices for this renderable object.
 
bool Ogre::InstanceManager::hasSettings (const String &materialName) const
 Returns true if settings were already created for the given material name.
 
bool Ogre::InstancedEntity::hasSkeleton (void) const
 
bool Ogre::InstanceBatch::isBatchFull (void) const
 
bool Ogre::InstanceBatch::isBatchUnused (void) const
 Returns true if it no instanced entity has been requested or all of them have been removed.
 
virtual bool Ogre::InstancedEntity::isInScene (void) const
 Returns true if this object is attached to a SceneNode or TagPoint, and this SceneNode / TagPoint is currently in an active part of the scene graph.
 
bool Ogre::InstancedEntity::isInUse () const
 Tells if the entity is in use.
 
virtual bool Ogre::InstanceBatch::isStatic () const
 Returns true if this batch was set as static.
 
bool Ogre::InstanceBatchHW::isStatic () const
 Returns true if this batch was set as static.
 
bool Ogre::InstanceBatchHW_VTF::isStatic () const
 Returns true if this batch was set as static.
 
void Ogre::InstanceBatch::makeMatrixCameraRelative3x4 (float *mat3x4, size_t numFloats)
 Takes an array of 3x4 matrices and makes it camera relative.
 
void Ogre::InstancedEntity::markTransformDirty ()
 Mark the transformation matrixes as dirty.
 
virtual bool Ogre::BaseInstanceBatchVTF::matricesTogetherPerRow () const =0
 Affects VTF texture's width dimension.
 
virtual bool Ogre::InstanceBatchHW_VTF::matricesTogetherPerRow () const
 Affects VTF texture's width dimension.
 
virtual bool Ogre::InstanceBatchVTF::matricesTogetherPerRow () const
 Affects VTF texture's width dimension.
 
void Ogre::InstancedEntity::notifyUnlink (const InstancedEntity *slave)
 Called when a slave has unlinked from us.
 
_OgreExport bool Ogre::operator!= (const ShadowTextureConfig &lhs, const ShadowTextureConfig &rhs)
 
_OgreExport bool Ogre::operator== (const ShadowTextureConfig &lhs, const ShadowTextureConfig &rhs)
 
void Ogre::InstanceBatchHW::removeBlendData ()
 
void Ogre::InstanceBatch::removeInstancedEntity (InstancedEntity *instancedEntity)
 Removes an InstancedEntity from the scene retrieved with getNewInstancedEntity, putting back into a queue.
 
void Ogre::BaseInstanceBatchVTF::retrieveBoneIdx (VertexData *baseVertexData, HWBoneIdxVec &outBoneIdx)
 Retrieves bone data from the original sub mesh and puts it into an appropriate buffer, later to be read when creating the vertex semantics.
 
void Ogre::BaseInstanceBatchVTF::retrieveBoneIdxWithWeights (VertexData *baseVertexData, HWBoneIdxVec &outBoneIdx, HWBoneWgtVec &outBoneWgt)
 
void Ogre::InstanceManager::setBatchesAsStaticAndUpdate (bool bStatic)
 Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.
 
void Ogre::BaseInstanceBatchVTF::setBoneDualQuaternions (bool enable)
 
void Ogre::BaseInstanceBatchVTF::setBoneMatrixLookup (bool enable, size_t maxLookupTableInstances)
 Sets the state of the usage of bone matrix lookup.
 
void Ogre::InstancedEntity::setCustomParam (unsigned char idx, const Vector4 &newParam)
 Sets the custom parameter for this instance.
 
void Ogre::BaseInstanceBatchVTF::setForceOneWeight (bool enable)
 
void Ogre::InstanceManager::setInstancesPerBatch (size_t instancesPerBatch)
 Raises an exception if trying to change it after creating the first InstancedEntity.
 
void Ogre::InstancedEntity::setInUse (bool used)
 Sets whether the entity is in use.
 
void Ogre::InstanceManager::setMaxLookupTableInstances (size_t maxLookupTableInstances)
 Sets the size of the lookup table for techniques supporting bone lookup table.
 
void Ogre::InstanceManager::setNumCustomParams (unsigned char numCustomParams)
 Sets the number of custom parameters per instance.
 
void Ogre::InstancedEntity::setOrientation (const Quaternion &orientation, bool doUpdate=true)
 Set the orientation or the offset from the parent node if a parent node exists.
 
void Ogre::InstancedEntity::setPosition (const Vector3 &position, bool doUpdate=true)
 Set the position or the offset from the parent node if a parent node exists.
 
void Ogre::InstancedEntity::setScale (const Vector3 &scale, bool doUpdate=true)
 Set the scale or the offset from the parent node if a parent node exists

 
void Ogre::InstanceManager::setSetting (BatchSettingId id, bool enabled, const String &materialName=StringUtil::BLANK)
 Applies a setting for all batches using the same material_ existing ones and those that will be created in the future.
 
virtual void Ogre::InstanceBatch::setStaticAndUpdate (bool bStatic)
 Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.
 
void Ogre::InstanceBatchHW::setStaticAndUpdate (bool bStatic)
 
void Ogre::InstanceBatchHW_VTF::setStaticAndUpdate (bool bStatic)
 
void Ogre::InstancedEntity::setTransformLookupNumber (uint16 num)
 Sets the transformation look up number.
 
void Ogre::InstanceBatchShader::setupHardwareSkinned (const SubMesh *baseSubMesh, VertexData *thisVertexData, VertexData *baseVertexData)
 When the mesh is (hardware) skinned, a different code path is called so that we reuse the index buffers and modify them in place.
 
virtual void Ogre::InstanceBatch::setupIndices (const SubMesh *baseSubMesh)=0
 
void Ogre::InstanceBatchHW::setupIndices (const SubMesh *baseSubMesh)
 
void Ogre::InstanceBatchHW_VTF::setupIndices (const SubMesh *baseSubMesh)
 
void Ogre::InstanceBatchShader::setupIndices (const SubMesh *baseSubMesh)
 
void Ogre::InstanceBatchVTF::setupIndices (const SubMesh *baseSubMesh)
 
void Ogre::BaseInstanceBatchVTF::setupMaterialToUseVTF (TextureType textureType, MaterialPtr &material)
 Setups the material to use a vertex texture.
 
virtual void Ogre::InstanceBatch::setupVertices (const SubMesh *baseSubMesh)=0
 
void Ogre::InstanceBatchHW::setupVertices (const SubMesh *baseSubMesh)
 
void Ogre::InstanceBatchHW_VTF::setupVertices (const SubMesh *baseSubMesh)
 
void Ogre::InstanceBatchShader::setupVertices (const SubMesh *baseSubMesh)
 
void Ogre::InstanceBatchVTF::setupVertices (const SubMesh *baseSubMesh)
 
void Ogre::BaseInstanceBatchVTF::setUseOneWeight (bool enable)
 
bool Ogre::InstancedEntity::shareTransformWith (InstancedEntity *slave)
 Shares the entire transformation with another InstancedEntity.
 
void Ogre::InstancedEntity::stopSharingTransform ()
 
void Ogre::InstancedEntity::stopSharingTransformAsSlave (bool notifyMaster)
 When this entity is a slave, stopSharingTransform delegates to this function.
 
void Ogre::InstancedEntity::unlinkTransform (bool notifyMaster=true)
 Just unlinks, and tells our master we're no longer sharing.
 
void Ogre::InstanceManager::unshareVertices (const Ogre::MeshPtr &mesh)
 Called when we you use a mesh which has shared vertices, the function creates separate vertex/index buffers and also recreates the bone assignments.
 
virtual size_t Ogre::InstanceBatchHW_VTF::updateInstanceDataBuffer (bool isFirstTime, Camera *currentCamera)
 updates the vertex buffer containing the per instance data
 
virtual void Ogre::BaseInstanceBatchVTF::updateSharedLookupIndexes ()
 update the lookup numbers for entities with shared transforms
 
void Ogre::InstancedEntity::updateTransforms ()
 Update the world transform and derived values.
 
size_t Ogre::InstanceBatchHW::updateVertexBuffer (Camera *currentCamera)
 
void Ogre::BaseInstanceBatchVTF::updateVertexTexture (void)
 Keeps filling the VTF with world matrix data.
 
size_t Ogre::InstanceBatchHW_VTF::updateVertexTexture (Camera *currentCamera)
 Keeps filling the VTF with world matrix data.
 
void Ogre::InstanceBatch::updateVisibility (void)
 
bool Ogre::BaseInstanceBatchVTF::useBoneDualQuaternions () const
 
bool Ogre::BaseInstanceBatchVTF::useBoneMatrixLookup () const
 Tells whether to use bone matrix lookup.
 
virtual bool Ogre::BaseInstanceBatchVTF::useBoneWorldMatrices () const
 
virtual bool Ogre::InstanceBatch::useBoneWorldMatrices () const
 Tells whether world bone matrices need to be calculated.
 
bool Ogre::BaseInstanceBatchVTF::useOneWeight () const
 
void Ogre::InstanceBatch::visitRenderables (Renderable::Visitor *visitor, bool debugRenderables=false)
 Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject will add to the render queue when asked, if any.
 
void Ogre::InstancedEntity::visitRenderables (Renderable::Visitor *visitor, bool debugRenderables=false)
 Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject will add to the render queue when asked, if any.
 

Variables

AnimationStateSetOgre::InstancedEntity::mAnimationState
 
InstanceBatchOgre::InstancedEntity::mBatchOwner
 
BatchSettingsMap Ogre::InstanceManager::mBatchSettings
 
Matrix4Ogre::InstancedEntity::mBoneMatrices
 
Matrix4Ogre::InstancedEntity::mBoneWorldMatrices
 
Real Ogre::InstanceBatch::mBoundingRadius
 
bool Ogre::InstanceBatch::mBoundsDirty
 
bool Ogre::InstanceBatch::mBoundsUpdated
 
const CameraOgre::InstanceBatch::mCachedCamera
 The camera for which the cached distance is valid.
 
Real Ogre::InstanceBatch::mCachedCameraDist
 Cached distance to last camera for getSquaredViewDepth.
 
InstanceManagerOgre::InstanceBatch::mCreator
 
CameraOgre::InstanceBatch::mCurrentCamera
 
CustomParamsVec Ogre::InstanceBatch::mCustomParams
 
Vector3 Ogre::InstancedEntity::mDerivedLocalPosition
 
bool Ogre::InstanceBatch::mDirtyAnimation
 
InstanceBatchVec Ogre::InstanceManager::mDirtyBatches
 
bool Ogre::BaseInstanceBatchVTF::mForceOneWeight
 
unsigned long Ogre::InstancedEntity::mFrameAnimationLastUpdated
 
AxisAlignedBox Ogre::InstanceBatch::mFullBoundingBox
 This bbox contains all (visible) instanced entities.
 
Matrix4 Ogre::InstancedEntity::mFullLocalTransform
 Full world transform.
 
size_t Ogre::InstanceManager::mIdCount
 
Mesh::IndexMap const * Ogre::InstanceBatch::mIndexToBoneMap
 
InstanceBatchMap Ogre::InstanceManager::mInstanceBatches
 
InstancedEntityVec Ogre::InstanceBatch::mInstancedEntities
 
uint16 Ogre::InstancedEntity::mInstanceId
 
size_t Ogre::InstanceBatch::mInstancesPerBatch
 
size_t Ogre::InstanceManager::mInstancesPerBatch
 
HardwareVertexBufferSharedPtr Ogre::InstanceBatchHW_VTF::mInstanceVertexBuffer
 
uint16 Ogre::InstanceManager::mInstancingFlags
 
InstancingTechnique Ogre::InstanceManager::mInstancingTechnique
 
bool Ogre::InstancedEntity::mInUse
 
bool Ogre::InstanceBatchHW::mKeepStatic
 
bool Ogre::InstanceBatchHW_VTF::mKeepStatic
 
MaterialPtr Ogre::InstanceBatch::mMaterial
 
unsigned short Ogre::InstanceBatch::mMaterialLodIndex
 
size_t Ogre::BaseInstanceBatchVTF::mMatricesPerInstance
 
TexturePtr Ogre::BaseInstanceBatchVTF::mMatrixTexture
 
size_t Ogre::BaseInstanceBatchVTF::mMaxFloatsPerLine
 
size_t Ogre::BaseInstanceBatchVTF::mMaxLookupTableInstances
 
size_t Ogre::InstanceManager::mMaxLookupTableInstances
 
Real Ogre::InstancedEntity::mMaxScaleLocal
 The maximum absolute scale for all dimension.
 
MeshPtr Ogre::InstanceBatch::mMeshReference
 
MeshPtr Ogre::InstanceManager::mMeshReference
 
const String Ogre::InstanceManager::mName
 
bool Ogre::InstancedEntity::mNeedAnimTransformUpdate
 Tells if the animation world transform needs an update.
 
bool Ogre::InstancedEntity::mNeedTransformUpdate
 Tells if mFullTransform needs an updated.
 
unsigned char Ogre::InstanceManager::mNumCustomParams
 
size_t Ogre::BaseInstanceBatchVTF::mNumWorldMatrices
 
unsigned short Ogre::InstanceBatchShader::mNumWorldMatrices
 
Quaternion Ogre::InstancedEntity::mOrientation
 Object orientation.
 
Vector3 Ogre::InstancedEntity::mPosition
 Object position.
 
bool Ogre::InstanceBatch::mRemoveOwnIndexData
 When true remove the memory of the IndexData we've created because no one else will.
 
bool Ogre::InstanceBatch::mRemoveOwnVertexData
 When true remove the memory of the VertexData we've created because no one else will.
 
RenderOperation Ogre::InstanceBatch::mRenderOperation
 
size_t Ogre::BaseInstanceBatchVTF::mRowLength
 
Vector3 Ogre::InstancedEntity::mScale
 Object scale.
 
SceneManagerOgre::InstanceManager::mSceneManager
 
RenderOperation Ogre::InstanceManager::mSharedRenderOperation
 
InstancedEntityOgre::InstancedEntity::mSharedTransformEntity
 
InstancedEntityVec Ogre::InstancedEntity::mSharingPartners
 
SkeletonInstanceOgre::InstancedEntity::mSkeletonInstance
 
static NameGenerator Ogre::InstancedEntity::msNameGenerator
 Incremented count for next name extension.
 
unsigned short Ogre::InstanceManager::mSubMeshIdx
 
bool Ogre::InstanceBatch::mTechnSupportsSkeletal
 False if a technique doesn't support skeletal animation.
 
float * Ogre::BaseInstanceBatchVTF::mTempTransformsArray3x4
 
uint16 Ogre::InstancedEntity::mTransformLookupNumber
 Used in conjunction with bone matrix lookup.
 
bool Ogre::InstanceBatch::mTransformSharingDirty
 Tells that the list of entity instances with shared transforms has changed.
 
InstancedEntityVec Ogre::InstanceBatch::mUnusedEntities
 
bool Ogre::BaseInstanceBatchVTF::mUseBoneDualQuaternions
 
bool Ogre::BaseInstanceBatchVTF::mUseBoneMatrixLookup
 
bool Ogre::InstancedEntity::mUseLocalTransform
 Tells whether to use the local transform parameters.
 
bool Ogre::BaseInstanceBatchVTF::mUseOneWeight
 
size_t Ogre::BaseInstanceBatchVTF::mWeightCount
 
size_t Ogre::BaseInstanceBatchVTF::mWidthFloatsPadding
 
bool Ogre::InstanceManager::BatchSettings::setting [NUM_SETTINGS]
 

Friends

class Ogre::InstancedEntity::BaseInstanceBatchVTF
 
class Ogre::InstancedEntity::InstanceBatch
 
class Ogre::InstancedEntity::InstanceBatchHW
 
class Ogre::InstancedEntity::InstanceBatchHW_VTF
 
class Ogre::InstancedEntity::InstanceBatchShader
 

Detailed Description

Typedef Documentation

◆ BatchSettingsMap

◆ ConstShadowTextureConfigIterator

◆ CustomParamsVec

◆ HWBoneIdxVec

Definition at line 77 of file OgreInstanceBatchVTF.h.

◆ HWBoneWgtVec

Definition at line 78 of file OgreInstanceBatchVTF.h.

◆ InstanceBatchIterator

◆ InstanceBatchMap

◆ InstanceBatchMapIterator

◆ InstanceBatchVec

◆ InstancedEntityVec [1/2]

◆ InstancedEntityVec [2/2]

Stores the master when we're the slave, store our slaves when we're the master.

Definition at line 102 of file OgreInstancedEntity.h.

◆ Matrix4Vec

Definition at line 79 of file OgreInstanceBatchVTF.h.

◆ RaySceneQueryResult

◆ SceneQueryMovableIntersectionList

◆ SceneQueryMovableObjectPair

Definition at line 488 of file OgreSceneQuery.h.

◆ SceneQueryMovableObjectWorldFragmentPair

◆ SceneQueryMovableWorldFragmentIntersectionList

◆ SceneQueryResultMovableList

Definition at line 206 of file OgreSceneQuery.h.

◆ SceneQueryResultWorldFragmentList

◆ SceneTypeMask

Bitmask containing scene types.

Definition at line 3609 of file OgreSceneManager.h.

◆ ShadowCameraSetupPtr

◆ ShadowTextureConfigList

◆ ShadowTextureList

Definition at line 49 of file OgreShadowTextureManager.h.

Enumeration Type Documentation

◆ BatchSettingId

Values to be used in setSetting() & BatchSettings::setting.

Enumerator
CAST_SHADOWS 

Makes all batches from same material cast shadows.

SHOW_BOUNDINGBOX 

Makes each batch to display it's bounding box. Useful for debugging or profiling.

NUM_SETTINGS 

Definition at line 76 of file OgreInstanceManager.h.

◆ FaceGroupType

A type of face group, i.e.

face list of procedural etc

Enumerator
FGT_FACE_LIST 
FGT_PATCH 
FGT_UNKNOWN 

Definition at line 45 of file OgreStaticFaceGroup.h.

◆ InstancingTechnique

Enumerator
ShaderBased 

Any SM 2.0+.

See also
InstanceBatchShader
TextureVTF 

Needs Vertex Texture Fetch & SM 3.0+.

See also
InstanceBatchVTF
HWInstancingBasic 

Needs SM 3.0+ and HW instancing support.

See also
InstanceBatchHW
HWInstancingVTF 

Needs SM 3.0+, HW instancing support & VTF.

See also
InstanceBatchHW_VTF
InstancingTechniquesCount 

Definition at line 66 of file OgreInstanceManager.h.

◆ SceneType

Classification of a scene to allow a decision of what type of SceenManager to provide back to the application.

Enumerator
ST_GENERIC 
ST_EXTERIOR_CLOSE 
ST_EXTERIOR_FAR 
ST_EXTERIOR_REAL_FAR 
ST_INTERIOR 

Definition at line 3614 of file OgreSceneManager.h.

◆ ShadowRenderableFlags

A set of flags that can be used to influence ShadowRenderable creation.

Enumerator
SRF_INCLUDE_LIGHT_CAP 

For shadow volume techniques only, generate a light cap on the volume.

SRF_INCLUDE_DARK_CAP 

For shadow volume techniques only, generate a dark cap on the volume.

SRF_EXTRUDE_TO_INFINITY 

For shadow volume techniques only, indicates volume is extruded to infinity.

Definition at line 105 of file OgreShadowCaster.h.

Function Documentation

◆ BaseInstanceBatchVTF()

Ogre::BaseInstanceBatchVTF::BaseInstanceBatchVTF ( InstanceManager * creator,
MeshPtr & meshReference,
const MaterialPtr & material,
size_t instancesPerBatch,
const Mesh::IndexMap * indexToBoneMap,
const String & batchName )

◆ BatchSettings()

Ogre::InstanceManager::BatchSettings::BatchSettings ( )

Definition at line 92 of file OgreInstanceManager.h.

◆ InstanceBatch()

Ogre::InstanceBatch::InstanceBatch ( InstanceManager * creator,
MeshPtr & meshReference,
const MaterialPtr & material,
size_t instancesPerBatch,
const Mesh::IndexMap * indexToBoneMap,
const String & batchName )

◆ InstanceBatchHW()

Ogre::InstanceBatchHW::InstanceBatchHW ( InstanceManager * creator,
MeshPtr & meshReference,
const MaterialPtr & material,
size_t instancesPerBatch,
const Mesh::IndexMap * indexToBoneMap,
const String & batchName )

◆ InstanceBatchHW_VTF()

Ogre::InstanceBatchHW_VTF::InstanceBatchHW_VTF ( InstanceManager * creator,
MeshPtr & meshReference,
const MaterialPtr & material,
size_t instancesPerBatch,
const Mesh::IndexMap * indexToBoneMap,
const String & batchName )

◆ InstanceBatchShader()

Ogre::InstanceBatchShader::InstanceBatchShader ( InstanceManager * creator,
MeshPtr & meshReference,
const MaterialPtr & material,
size_t instancesPerBatch,
const Mesh::IndexMap * indexToBoneMap,
const String & batchName )

◆ InstanceBatchVTF()

Ogre::InstanceBatchVTF::InstanceBatchVTF ( InstanceManager * creator,
MeshPtr & meshReference,
const MaterialPtr & material,
size_t instancesPerBatch,
const Mesh::IndexMap * indexToBoneMap,
const String & batchName )

◆ InstancedEntity()

Ogre::InstancedEntity::InstancedEntity ( InstanceBatch * batchOwner,
uint32 instanceID,
InstancedEntity * sharedTransformEntity = NULL )

◆ InstanceManager()

Ogre::InstanceManager::InstanceManager ( const String & customName,
SceneManager * sceneManager,
const String & meshName,
const String & groupName,
InstancingTechnique instancingTechnique,
uint16 instancingFlags,
size_t instancesPerBatch,
unsigned short subMeshIdx,
bool useBoneMatrixLookup = false )

◆ ~BaseInstanceBatchVTF()

virtual Ogre::BaseInstanceBatchVTF::~BaseInstanceBatchVTF ( )
virtual

◆ ~InstanceBatch()

virtual Ogre::InstanceBatch::~InstanceBatch ( )
virtual

◆ ~InstanceBatchHW()

virtual Ogre::InstanceBatchHW::~InstanceBatchHW ( )
virtual

◆ ~InstanceBatchHW_VTF()

virtual Ogre::InstanceBatchHW_VTF::~InstanceBatchHW_VTF ( )
virtual

◆ ~InstanceBatchShader()

virtual Ogre::InstanceBatchShader::~InstanceBatchShader ( )
virtual

◆ ~InstanceBatchVTF()

virtual Ogre::InstanceBatchVTF::~InstanceBatchVTF ( )
virtual

◆ ~InstancedEntity()

virtual Ogre::InstancedEntity::~InstancedEntity ( )
virtual

◆ ~InstanceManager()

virtual Ogre::InstanceManager::~InstanceManager ( )
virtual

◆ _addDirtyBatch()

void Ogre::InstanceManager::_addDirtyBatch ( InstanceBatch * dirtyBatch)

Called by an InstanceBatch when it requests their bounds to be updated for proper culling.

Parameters
dirtyBatchThe batch which is dirty, usually same as caller.

◆ _boundsDirty() [1/3]

virtual void Ogre::InstanceBatch::_boundsDirty ( void )
virtual

Called by InstancedEntity(s) to tell us we need to update the bounds (we touch the SceneNode so the SceneManager aknowledges such change)

Reimplemented in Ogre::InstanceBatchHW, and Ogre::InstanceBatchHW_VTF.

◆ _boundsDirty() [2/3]

void Ogre::InstanceBatchHW::_boundsDirty ( void )
virtual

Overloaded so that we don't perform needless updates when in static mode.

Also doing that could cause glitches with shadow mapping (since Ogre thinks we're small/bigger than we really are when displaying, or that we're somewhere else)

Reimplemented from Ogre::InstanceBatch.

◆ _boundsDirty() [3/3]

void Ogre::InstanceBatchHW_VTF::_boundsDirty ( void )
virtual

Overloaded so that we don't perform needless updates when in static mode.

Also doing that could cause glitches with shadow mapping (since Ogre thinks we're small/bigger than we really are when displaying, or that we're somewhere else)

Reimplemented from Ogre::InstanceBatch.

◆ _defragmentBatch()

void Ogre::InstanceBatch::_defragmentBatch ( bool optimizeCulling,
InstancedEntityVec & usedEntities,
CustomParamsVec & usedParams )
See also
InstanceManager::defragmentBatches This function takes InstancedEntities and pushes back all entities it can fit here Extra entities in mUnusedEntities are destroyed (so that used + unused = mInstancedEntities.size())
Parameters
optimizeCullingtrue will call the DoCull version, false the NoCull
usedEntitiesArray of InstancedEntities to parent with this batch. Those reparented are removed from this input vector
usedParamsArray of Custom parameters correlated with the InstancedEntities in usedEntities. They follow the fate of the entities in that vector.
Remarks
: This function assumes caller holds data to mInstancedEntities! Otherwise you can get memory leaks. Don't call this directly if you don't know what you're doing!

◆ _defragmentBatchDiscard()

void Ogre::InstanceBatch::_defragmentBatchDiscard ( void )
See also
InstanceManager::_defragmentBatchDiscard Destroys unused entities and clears the mInstancedEntity container which avoids leaving dangling pointers from reparented InstancedEntities Usually called before deleting this pointer. Don't call directly!

◆ _getCustomParam()

const Vector4 & Ogre::InstanceBatch::_getCustomParam ( InstancedEntity * instancedEntity,
unsigned char idx )

◆ _getDerivedPosition()

const Vector3 & Ogre::InstancedEntity::_getDerivedPosition ( ) const

Returns the derived position of the instanced entity including local transform.

Definition at line 263 of file OgreInstancedEntity.h.

◆ _getIndexToBoneMap()

const Mesh::IndexMap * Ogre::InstanceBatch::_getIndexToBoneMap ( ) const

Definition at line 184 of file OgreInstanceBatch.h.

◆ _getMeshRef()

MeshPtr & Ogre::InstanceBatch::_getMeshRef ( )

Definition at line 178 of file OgreInstanceBatch.h.

◆ _getMeshReference()

const Ogre::MeshPtr & Ogre::InstanceBatch::_getMeshReference ( void ) const

Definition at line 238 of file OgreInstanceBatch.h.

◆ _getOwner()

InstanceBatch * Ogre::InstancedEntity::_getOwner ( ) const

Definition at line 190 of file OgreInstancedEntity.h.

◆ _getParentNodeFullTransform()

virtual const Matrix4 & Ogre::InstancedEntity::_getParentNodeFullTransform ( void ) const
virtual

Returns the world transform of the instanced entity including local transform.

Reimplemented from Ogre::MovableObject.

Definition at line 256 of file OgreInstancedEntity.h.

◆ _markTransformSharingDirty()

void Ogre::InstanceBatch::_markTransformSharingDirty ( )

Tells that the list of entity instances with shared transforms has changed.

Definition at line 323 of file OgreInstanceBatch.h.

◆ _notifyAttached()

void Ogre::InstancedEntity::_notifyAttached ( Node * parent,
bool isTagPoint = false )
virtual

Internal method called to notify the object that it has been attached to a node.

Reimplemented from Ogre::MovableObject.

◆ _notifyCurrentCamera()

void Ogre::InstanceBatch::_notifyCurrentCamera ( Camera * cam)
virtual

Internal method to notify the object of the camera to be used for the next rendering operation.

Remarks
Certain objects may want to do specific processing based on the camera position. This method notifies them in case they wish to do this.

Reimplemented from Ogre::MovableObject.

◆ _notifyMoved()

void Ogre::InstancedEntity::_notifyMoved ( void )
virtual

Overridden so we can tell the InstanceBatch it needs to update it's bounds.

Reimplemented from Ogre::MovableObject.

◆ _setCustomParam()

void Ogre::InstanceBatch::_setCustomParam ( InstancedEntity * instancedEntity,
unsigned char idx,
const Vector4 & newParam )

◆ _setInstancesPerBatch()

void Ogre::InstanceBatch::_setInstancesPerBatch ( size_t instancesPerBatch)

Raises an exception if trying to change it after being built.

◆ _supportsSkeletalAnimation()

bool Ogre::InstanceBatch::_supportsSkeletalAnimation ( ) const

Returns true if this technique supports skeletal animation.

Remarks
A virtual function could have been used, but using a simple variable overridden by the derived class is faster than virtual call overhead. And both are clean ways of implementing it.

Definition at line 192 of file OgreInstanceBatch.h.

◆ _updateAnimation()

virtual bool Ogre::InstancedEntity::_updateAnimation ( void )
virtual

Called by InstanceBatch in his _updateRenderQueue to tell us we need to calculate our bone matrices.

Remarks
Assumes it has a skeleton (mSkeletonInstance != 0)
Returns
true if something was actually updated

◆ _updateBounds()

void Ogre::InstanceBatch::_updateBounds ( void )
See also
InstanceManager::updateDirtyBatches

◆ _updateDirtyBatches()

void Ogre::InstanceManager::_updateDirtyBatches ( void )

Called by SceneManager when we told it we have at least one dirty batch.

◆ _updateRenderQueue() [1/5]

void Ogre::BaseInstanceBatchVTF::_updateRenderQueue ( RenderQueue * queue)
virtual

Overloaded to be able to updated the vertex texture.

Reimplemented from Ogre::InstanceBatch.

Reimplemented in Ogre::InstanceBatchHW_VTF.

◆ _updateRenderQueue() [2/5]

virtual void Ogre::InstanceBatch::_updateRenderQueue ( RenderQueue * queue)
virtual

Internal method by which the movable object must add Renderable subclass instances to the rendering queue.

Remarks
The engine will call this method when this object is to be rendered. The object must then create one or more Renderable subclass instances which it places on the passed in Queue for rendering.

Implements Ogre::MovableObject.

Reimplemented in Ogre::BaseInstanceBatchVTF, Ogre::InstanceBatchHW, and Ogre::InstanceBatchHW_VTF.

◆ _updateRenderQueue() [3/5]

virtual void Ogre::InstanceBatchHW::_updateRenderQueue ( RenderQueue * queue)
virtual

Overloaded to avoid updating skeletons (which we don't support), check visibility on a per unit basis and finally updated the vertex buffer.

Reimplemented from Ogre::InstanceBatch.

◆ _updateRenderQueue() [4/5]

virtual void Ogre::InstanceBatchHW_VTF::_updateRenderQueue ( RenderQueue * queue)
virtual

Overloaded to visibility on a per unit basis and finally updated the vertex texture.

Reimplemented from Ogre::BaseInstanceBatchVTF.

◆ _updateRenderQueue() [5/5]

void Ogre::InstancedEntity::_updateRenderQueue ( RenderQueue * queue)
virtual

Do nothing, InstanceBatch takes care of this.

Implements Ogre::MovableObject.

Definition at line 206 of file OgreInstancedEntity.h.

◆ applySettingToBatches()

void Ogre::InstanceManager::applySettingToBatches ( BatchSettingId id,
bool value,
const InstanceBatchVec & container )
private
See also
setSetting. This function helps it by setting the given parameter to all batches in container.

◆ build()

virtual RenderOperation Ogre::InstanceBatch::build ( const SubMesh * baseSubMesh)
virtual

Constructs all the data needed to use this batch, as well as the InstanceEntities.

Placed here because in the constructor virtual tables may not have been yet filled.

Parameters
baseSubMeshA sub mesh which the instances will be based upon from.
Remarks
Call this only ONCE. This is done automatically by Ogre::InstanceManager Caller is responsable for freeing buffers in this RenderOperation Buffers inside the RenderOp may be null if the built failed.
Returns
A render operation which is very useful to pass to other InstanceBatches (
See also
buildFrom) so that they share the same vertex buffers and indices, when possible

◆ buildFrom() [1/4]

void Ogre::BaseInstanceBatchVTF::buildFrom ( const SubMesh * baseSubMesh,
const RenderOperation & renderOperation )
virtual
See also
InstanceBatch::buildFrom

Reimplemented from Ogre::InstanceBatch.

◆ buildFrom() [2/4]

virtual void Ogre::InstanceBatch::buildFrom ( const SubMesh * baseSubMesh,
const RenderOperation & renderOperation )
virtual

Instancing consumes significantly more GPU memory than regular rendering methods.

However, multiple batches can share most, if not all, of the vertex & index buffers to save memory. Derived classes are free to overload this method to manipulate what to reference from Render Op. For example, Hardware based instancing uses it's own vertex buffer for the last source binding, but shares the other sources.

Parameters
renderOperationThe RenderOp to reference.
Remarks
Caller is responsable for freeing buffers passed as input arguments This function replaces the need to call build()

Reimplemented in Ogre::BaseInstanceBatchVTF, Ogre::InstanceBatchHW, and Ogre::InstanceBatchShader.

◆ buildFrom() [3/4]

void Ogre::InstanceBatchHW::buildFrom ( const SubMesh * baseSubMesh,
const RenderOperation & renderOperation )
virtual
See also
InstanceBatch::buildFrom

Reimplemented from Ogre::InstanceBatch.

◆ buildFrom() [4/4]

void Ogre::InstanceBatchShader::buildFrom ( const SubMesh * baseSubMesh,
const RenderOperation & renderOperation )
virtual
See also
InstanceBatch::buildFrom

Reimplemented from Ogre::InstanceBatch.

◆ buildNewBatch()

InstanceBatch * Ogre::InstanceManager::buildNewBatch ( const String & materialName,
bool firstTime )
private

Called when batches are fully exhausted (can't return more instances) so a new batch is created.

For the first time use, it can take big build time. It takes care of getting the render operation which will be shared by further batches, which decreases their build time, and prevents GPU RAM from skyrocketing.

Parameters
materialNameThe material name, to know where to put this batch in the map
firstTimeTrue if this is the first time it is called
Returns
The created InstancedManager for convenience

◆ calculateMaxNumInstances() [1/5]

virtual size_t Ogre::InstanceBatch::calculateMaxNumInstances ( const SubMesh * baseSubMesh,
uint16 flags ) const
pure virtual

Some techniques have a limit on how many instances can be done.

Sometimes even depends on the material being used.

Note this is a helper function, as such it takes a submesh base to compute the parameters, instead of using the object's own. This allows querying for a technique without requiering to actually build it.
Parameters
baseSubMeshThe base submesh that will be using to build it.
flagsFlags to pass to the InstanceManager.
See also
InstanceManagerFlags
Returns
The max instances limit

Implemented in Ogre::InstanceBatchHW, Ogre::InstanceBatchHW_VTF, Ogre::InstanceBatchShader, and Ogre::InstanceBatchVTF.

◆ calculateMaxNumInstances() [2/5]

size_t Ogre::InstanceBatchHW::calculateMaxNumInstances ( const SubMesh * baseSubMesh,
uint16 flags ) const
virtual

◆ calculateMaxNumInstances() [3/5]

size_t Ogre::InstanceBatchHW_VTF::calculateMaxNumInstances ( const SubMesh * baseSubMesh,
uint16 flags ) const
virtual

◆ calculateMaxNumInstances() [4/5]

size_t Ogre::InstanceBatchShader::calculateMaxNumInstances ( const SubMesh * baseSubMesh,
uint16 flags ) const
virtual

◆ calculateMaxNumInstances() [5/5]

size_t Ogre::InstanceBatchVTF::calculateMaxNumInstances ( const SubMesh * baseSubMesh,
uint16 flags ) const
virtual

◆ checkSubMeshCompatibility() [1/3]

virtual bool Ogre::InstanceBatch::checkSubMeshCompatibility ( const SubMesh * baseSubMesh)
protectedvirtual

Returns false on errors that would prevent building this batch from the given submesh.

Reimplemented in Ogre::InstanceBatchHW, and Ogre::InstanceBatchHW_VTF.

◆ checkSubMeshCompatibility() [2/3]

virtual bool Ogre::InstanceBatchHW::checkSubMeshCompatibility ( const SubMesh * baseSubMesh)
privatevirtual

Returns false on errors that would prevent building this batch from the given submesh.

Reimplemented from Ogre::InstanceBatch.

◆ checkSubMeshCompatibility() [3/3]

virtual bool Ogre::InstanceBatchHW_VTF::checkSubMeshCompatibility ( const SubMesh * baseSubMesh)
protectedvirtual

Returns false on errors that would prevent building this batch from the given submesh.

Reimplemented from Ogre::InstanceBatch.

◆ cleanupEmptyBatches()

void Ogre::InstanceManager::cleanupEmptyBatches ( void )

This function can be useful to improve CPU speed after having too many instances created, which where now removed, thus freeing many batches with zero used Instanced Entities However the batches aren't automatically removed from memory until the InstanceManager is destroyed, or this function is called.

This function removes those batches which are completely unused (only wasting memory).

◆ cloneMaterial()

void Ogre::BaseInstanceBatchVTF::cloneMaterial ( const MaterialPtr & material)
protected

Clones the base material so it can have it's own vertex texture, and also clones it's shadow caster materials, if it has any.

◆ convert3x4MatricesToDualQuaternions()

size_t Ogre::BaseInstanceBatchVTF::convert3x4MatricesToDualQuaternions ( float * matrices,
size_t numOfMatrices,
float * outDualQuaternions )
protected

◆ createAllInstancedEntities()

virtual void Ogre::InstanceBatch::createAllInstancedEntities ( void )
protectedvirtual

◆ createInstancedEntity() [1/2]

InstancedEntity * Ogre::InstanceBatch::createInstancedEntity ( )

Returns a pointer to a new InstancedEntity ready to use Note it's actually preallocated, so no memory allocation happens at this point.

Remarks
Returns NULL if all instances are being used

◆ createInstancedEntity() [2/2]

InstancedEntity * Ogre::InstanceManager::createInstancedEntity ( const String & materialName)

Creates an InstancedEntity based on an existing InstanceManager (.

See also
createInstanceManager)
Remarks
Return value may be null if the InstanceManger technique isn't supported Try to keep the number of entities with different materials to a minimum For more information
See also
InstancedManager
InstancedBatch,
InstancedEntity Alternatively you can call InstancedManager::createInstanceEntity using the returned pointer from createInstanceManager
Parameters
materialNameMaterial name
managerNameName of the instance manager
Returns
An InstancedEntity ready to be attached to a SceneNode

◆ createSkeletonInstance()

void Ogre::InstancedEntity::createSkeletonInstance ( )
protected

Creates/destroys our own skeleton, also tells slaves to unlink if we're destroying.

◆ createVertexSemantics() [1/3]

virtual void Ogre::BaseInstanceBatchVTF::createVertexSemantics ( VertexData * thisVertexData,
VertexData * baseVertexData,
const HWBoneIdxVec & hwBoneIdx,
const HWBoneWgtVec & hwBoneWgt )
protectedpure virtual

Creates 2 TEXCOORD semantics that will be used to sample the vertex texture.

Implemented in Ogre::InstanceBatchHW_VTF, and Ogre::InstanceBatchVTF.

◆ createVertexSemantics() [2/3]

void Ogre::InstanceBatchHW_VTF::createVertexSemantics ( VertexData * thisVertexData,
VertexData * baseVertexData,
const HWBoneIdxVec & hwBoneIdx,
const HWBoneWgtVec & hwBoneWgt )
protectedvirtual

Creates 2 TEXCOORD semantics that will be used to sample the vertex texture.

Implements Ogre::BaseInstanceBatchVTF.

◆ createVertexSemantics() [3/3]

void Ogre::InstanceBatchVTF::createVertexSemantics ( VertexData * thisVertexData,
VertexData * baseVertexData,
const HWBoneIdxVec & hwBoneIdx,
const HWBoneWgtVec & hwBoneWgt )
privatevirtual

Creates 2 TEXCOORD semantics that will be used to sample the vertex texture.

Implements Ogre::BaseInstanceBatchVTF.

◆ createVertexTexture()

void Ogre::BaseInstanceBatchVTF::createVertexTexture ( const SubMesh * baseSubMesh)
protected

Creates the vertex texture.

◆ defragmentBatchDoCull()

void Ogre::InstanceBatch::defragmentBatchDoCull ( InstancedEntityVec & usedEntities,
CustomParamsVec & usedParams )
protected
See also
_defragmentBatch This one takes the entity closest to the minimum corner of the bbox, then starts gathering entities closest to this entity. There might be much better algorithms (i.e. involving space partition), but this one is simple and works well enough

◆ defragmentBatches() [1/2]

void Ogre::InstanceManager::defragmentBatches ( bool optimizeCull,
vector< InstancedEntity * >::type & entities,
vector< Ogre::Vector4 >::type & usedParams,
InstanceBatchVec & fragmentedBatches )
private
See also
defragmentBatches overload, this takes care of an array of batches for a specific material

◆ defragmentBatches() [2/2]

void Ogre::InstanceManager::defragmentBatches ( bool optimizeCulling)

After creating many entities (which turns in many batches) and then removing entities that are in the middle of these batches, there might be many batches with many free entities.

Worst case scenario, there could be left one batch per entity. Imagine there can be 80 entities per batch, there are 80 batches, making a total of 6400 entities. Then 6320 of those entities are removed in a very specific way, which leads to having 80 batches, 80 entities, and GPU vertex shader still needs to process 6400! This is called fragmentation. This function reparents the InstancedEntities to fewer batches, in this case leaving only one batch with 80 entities

Remarks
This function takes time. Make sure to call this only when you're sure there's too much of fragmentation and you won't be creating more InstancedEntities soon Also in many cases cleanupEmptyBatches() ought to be enough Defragmentation is done per material Static batches won't be defragmented. If you want to degragment them, set them to dynamic again, and switch back to static after calling this function.
Parameters
optimizeCullingWhen true, entities close together will be reorganized in the same batch for more efficient CPU culling. This can take more CPU time. You want this to be false if you now you're entities are moving very randomly which tends them to get separated and spread all over the scene (which nullifies any CPU culling)

◆ defragmentBatchNoCull()

void Ogre::InstanceBatch::defragmentBatchNoCull ( InstancedEntityVec & usedEntities,
CustomParamsVec & usedParams )
protected

◆ deleteAllInstancedEntities()

virtual void Ogre::InstanceBatch::deleteAllInstancedEntities ( void )
protectedvirtual

◆ deleteUnusedInstancedEntities()

virtual void Ogre::InstanceBatch::deleteUnusedInstancedEntities ( void )
protectedvirtual

◆ destroySkeletonInstance()

void Ogre::InstancedEntity::destroySkeletonInstance ( )
protected

◆ findVisible()

bool Ogre::InstancedEntity::findVisible ( Camera * camera) const
protected

Returns true if this InstancedObject is visible to the current camera.

◆ forceOneWeight()

bool Ogre::BaseInstanceBatchVTF::forceOneWeight ( ) const

Definition at line 189 of file OgreInstanceBatchVTF.h.

◆ generateInstancedEntity() [1/2]

virtual InstancedEntity * Ogre::BaseInstanceBatchVTF::generateInstancedEntity ( size_t num)
protectedvirtual

◆ generateInstancedEntity() [2/2]

virtual InstancedEntity * Ogre::InstanceBatch::generateInstancedEntity ( size_t num)
protectedvirtual

Creates a new InstancedEntity instance.

Reimplemented in Ogre::BaseInstanceBatchVTF.

◆ getAllAnimationStates()

AnimationStateSet * Ogre::InstancedEntity::getAllAnimationStates ( void ) const

◆ getAnimationState()

AnimationState * Ogre::InstancedEntity::getAnimationState ( const String & name) const

◆ getBoundingBox() [1/2]

const AxisAlignedBox & Ogre::InstanceBatch::getBoundingBox ( void ) const
virtual

Retrieves the local axis-aligned bounding box for this object.

Remarks
This bounding box is in local coordinates.

Implements Ogre::MovableObject.

◆ getBoundingBox() [2/2]

const AxisAlignedBox & Ogre::InstancedEntity::getBoundingBox ( void ) const
virtual

Retrieves the local axis-aligned bounding box for this object.

Remarks
This bounding box is in local coordinates.

Implements Ogre::MovableObject.

◆ getBoundingRadius() [1/2]

Real Ogre::InstanceBatch::getBoundingRadius ( void ) const
virtual

Retrieves the radius of the origin-centered bounding sphere for this object.

Implements Ogre::MovableObject.

◆ getBoundingRadius() [2/2]

Real Ogre::InstancedEntity::getBoundingRadius ( void ) const
virtual

Retrieves the radius of the origin-centered bounding sphere for this object.

Implements Ogre::MovableObject.

◆ getCustomParam()

const Vector4 & Ogre::InstancedEntity::getCustomParam ( unsigned char idx)

◆ getFreeBatch()

InstanceBatch * Ogre::InstanceManager::getFreeBatch ( const String & materialName)
private

Finds a batch with at least one free instanced entity we can use.

If none found, creates one.

◆ getInstanceBatchIterator()

InstanceBatchIterator Ogre::InstanceManager::getInstanceBatchIterator ( const String & materialName) const

Get non-updateable iterator over instance batches for given material.

Remarks
Each InstanceBatch pointer may be modified for low level usage (i.e. setCustomParameter), but there's no synchronization mechanism when multithreading or creating more instances, that's up to the user.

Definition at line 310 of file OgreInstanceManager.h.

References OGRE_EXCEPT.

◆ getInstanceBatchMapIterator()

InstanceBatchMapIterator Ogre::InstanceManager::getInstanceBatchMapIterator ( void ) const

Get non-updateable iterator over instance batches per material.

Definition at line 301 of file OgreInstanceManager.h.

◆ getInstancedEntitiesInUse()

void Ogre::InstanceBatch::getInstancedEntitiesInUse ( InstancedEntityVec & outEntities,
CustomParamsVec & outParams )

Fills the input vector with the instances that are currently being used or were requested.

Used for defragmentation,

See also
InstanceManager::defragmentBatches

◆ getInstancingTechnique()

InstancingTechnique Ogre::InstanceManager::getInstancingTechnique ( ) const
Returns
Instancing technique this manager was created for. Can't be changed after creation

Definition at line 208 of file OgreInstanceManager.h.

◆ getLights()

const LightList & Ogre::InstanceBatch::getLights ( void ) const
virtual

Gets a list of lights, ordered relative to how close they are to this renderable.

Remarks
Directional lights, which have no position, will always be first on this list.

Implements Ogre::Renderable.

◆ getMaterial()

const MaterialPtr & Ogre::InstanceBatch::getMaterial ( void ) const
virtual

Retrieves a weak reference to the material this renderable object uses.

Remarks
Note that the Renderable also has the option to override the getTechnique method to specify a particular Technique to use instead of the best one available.

Implements Ogre::Renderable.

Definition at line 333 of file OgreInstanceBatch.h.

◆ getMaxLookupTableInstances()

virtual size_t Ogre::BaseInstanceBatchVTF::getMaxLookupTableInstances ( ) const
virtual
Returns
the maximum amount of shared transform entities when using lookup table

Definition at line 200 of file OgreInstanceBatchVTF.h.

◆ getMaxOrBestNumInstancesPerBatch()

size_t Ogre::InstanceManager::getMaxOrBestNumInstancesPerBatch ( String materialName,
size_t suggestedSize,
uint16 flags )

Calculates the maximum (or the best amount, depending on flags) of instances per batch given the suggested size for the technique this manager was created for.

Remarks
This is done automatically when creating an instanced entity, but this function in conjunction with
See also
setInstancesPerBatch allows more flexible control over the amount of instances per batch
Parameters
materialNameName of the material to base on
suggestedSizeSuggested amount of instances per batch
flagsFlags to pass to the InstanceManager.
See also
InstanceManagerFlags
Returns
The max/best amount of instances per batch given the suggested size and flags

◆ getMaxScaleCoef()

Real Ogre::InstancedEntity::getMaxScaleCoef ( ) const

Returns the maximum derived scale coefficient among the xyz values.

◆ getMovableType() [1/2]

const String & Ogre::InstanceBatch::getMovableType ( void ) const
virtual

Returns the type name of this object.

Implements Ogre::MovableObject.

◆ getMovableType() [2/2]

const String & Ogre::InstancedEntity::getMovableType ( void ) const
virtual

Returns the type name of this object.

Implements Ogre::MovableObject.

◆ getName()

const String & Ogre::InstanceManager::getName ( ) const

Definition at line 163 of file OgreInstanceManager.h.

◆ getNumCustomParams()

unsigned char Ogre::InstanceManager::getNumCustomParams ( ) const

Definition at line 204 of file OgreInstanceManager.h.

◆ getNumWorldTransforms() [1/3]

unsigned short Ogre::BaseInstanceBatchVTF::getNumWorldTransforms ( void ) const
virtual

Returns the number of world transform matrices this renderable requires.

Remarks
When a renderable uses vertex blending, it uses multiple world matrices instead of a single one. Each vertex sent to the pipeline can reference one or more matrices in this list with given weights. If a renderable does not use vertex blending this method returns 1, which is the default for simplicity.

Reimplemented from Ogre::Renderable.

◆ getNumWorldTransforms() [2/3]

unsigned short Ogre::InstanceBatchHW::getNumWorldTransforms ( void ) const
virtual

Returns the number of world transform matrices this renderable requires.

Remarks
When a renderable uses vertex blending, it uses multiple world matrices instead of a single one. Each vertex sent to the pipeline can reference one or more matrices in this list with given weights. If a renderable does not use vertex blending this method returns 1, which is the default for simplicity.

Reimplemented from Ogre::Renderable.

◆ getNumWorldTransforms() [3/3]

unsigned short Ogre::InstanceBatchShader::getNumWorldTransforms ( void ) const
virtual

Returns the number of world transform matrices this renderable requires.

Remarks
When a renderable uses vertex blending, it uses multiple world matrices instead of a single one. Each vertex sent to the pipeline can reference one or more matrices in this list with given weights. If a renderable does not use vertex blending this method returns 1, which is the default for simplicity.

Reimplemented from Ogre::Renderable.

◆ getOrientation()

const Quaternion & Ogre::InstancedEntity::getOrientation ( ) const

Retrieve the orientation.

Definition at line 235 of file OgreInstancedEntity.h.

◆ getPosition()

const Vector3 & Ogre::InstancedEntity::getPosition ( ) const

Retrieve the position.

Definition at line 230 of file OgreInstancedEntity.h.

◆ getRenderOperation()

void Ogre::InstanceBatch::getRenderOperation ( RenderOperation & op)
virtual

Gets the render operation required to send this object to the frame buffer.

Implements Ogre::Renderable.

Definition at line 335 of file OgreInstanceBatch.h.

◆ getScale()

const Vector3 & Ogre::InstancedEntity::getScale ( ) const

Retrieve the local scale.

Definition at line 240 of file OgreInstancedEntity.h.

◆ getSceneManager()

SceneManager * Ogre::InstanceManager::getSceneManager ( ) const

Definition at line 165 of file OgreInstanceManager.h.

◆ getSetting()

bool Ogre::InstanceManager::getSetting ( BatchSettingId id,
const String & materialName ) const

If settings for the given material didn't exist, default value is returned.

◆ getSkeleton()

SkeletonInstance * Ogre::InstancedEntity::getSkeleton ( void ) const
See also
Entity::getSkeleton

Definition at line 212 of file OgreInstancedEntity.h.

◆ getSquaredViewDepth() [1/2]

Real Ogre::InstanceBatch::getSquaredViewDepth ( const Camera * cam) const
virtual

Returns the camera-relative squared depth of this renderable.

Remarks
Used to sort transparent objects. Squared depth is used rather than actual depth to avoid having to perform a square root on the result.

Implements Ogre::Renderable.

◆ getSquaredViewDepth() [2/2]

Real Ogre::InstancedEntity::getSquaredViewDepth ( const Camera * cam) const

This is used by our batch owner to get the closest entity's depth, returns infinity when not attached to a scene node.

◆ getTechnique()

Technique * Ogre::InstanceBatch::getTechnique ( void ) const
virtual

Retrieves a pointer to the Material Technique this renderable object uses.

Remarks
This is to allow Renderables to use a chosen Technique if they wish, otherwise they will use the best Technique available for the Material they are using.

Reimplemented from Ogre::Renderable.

◆ getTransforms()

size_t Ogre::InstancedEntity::getTransforms ( Matrix4 * xform) const
protected

Returns number of matrices written to transform, assumes transform has enough space.

◆ getTransforms3x4()

size_t Ogre::InstancedEntity::getTransforms3x4 ( float * xform) const
protected

Returns number of 32-bit values written.

◆ getWorldTransforms() [1/3]

void Ogre::BaseInstanceBatchVTF::getWorldTransforms ( Matrix4 * xform) const
virtual

Gets the world transform matrix / matrices for this renderable object.

Remarks
If the object has any derived transforms, these are expected to be up to date as long as all the SceneNode structures have been updated before this is called.
This method will populate transform with 1 matrix if it does not use vertex blending. If it does use vertex blending it will fill the passed in pointer with an array of matrices, the length being the value returned from getNumWorldTransforms.
Note
Internal Ogre never supports non-affine matrix for world transform matrix/matrices, the behavior is undefined if returns non-affine matrix here.
See also
Matrix4::isAffine.

Implements Ogre::Renderable.

◆ getWorldTransforms() [2/3]

void Ogre::InstanceBatchHW::getWorldTransforms ( Matrix4 * xform) const
virtual

Gets the world transform matrix / matrices for this renderable object.

Remarks
If the object has any derived transforms, these are expected to be up to date as long as all the SceneNode structures have been updated before this is called.
This method will populate transform with 1 matrix if it does not use vertex blending. If it does use vertex blending it will fill the passed in pointer with an array of matrices, the length being the value returned from getNumWorldTransforms.
Note
Internal Ogre never supports non-affine matrix for world transform matrix/matrices, the behavior is undefined if returns non-affine matrix here.
See also
Matrix4::isAffine.

Implements Ogre::Renderable.

◆ getWorldTransforms() [3/3]

void Ogre::InstanceBatchShader::getWorldTransforms ( Matrix4 * xform) const
virtual

Gets the world transform matrix / matrices for this renderable object.

Remarks
If the object has any derived transforms, these are expected to be up to date as long as all the SceneNode structures have been updated before this is called.
This method will populate transform with 1 matrix if it does not use vertex blending. If it does use vertex blending it will fill the passed in pointer with an array of matrices, the length being the value returned from getNumWorldTransforms.
Note
Internal Ogre never supports non-affine matrix for world transform matrix/matrices, the behavior is undefined if returns non-affine matrix here.
See also
Matrix4::isAffine.

Implements Ogre::Renderable.

◆ hasSettings()

bool Ogre::InstanceManager::hasSettings ( const String & materialName) const

Returns true if settings were already created for the given material name.

If false is returned, it means getSetting will return default settings.

Definition at line 283 of file OgreInstanceManager.h.

◆ hasSkeleton()

bool Ogre::InstancedEntity::hasSkeleton ( void ) const
See also
Entity::hasSkeleton

Definition at line 210 of file OgreInstancedEntity.h.

◆ isBatchFull()

bool Ogre::InstanceBatch::isBatchFull ( void ) const
Returns
true if it can not create more InstancedEntities (Num InstancedEntities == mInstancesPerBatch)

Definition at line 243 of file OgreInstanceBatch.h.

◆ isBatchUnused()

bool Ogre::InstanceBatch::isBatchUnused ( void ) const

Returns true if it no instanced entity has been requested or all of them have been removed.

Definition at line 247 of file OgreInstanceBatch.h.

◆ isInScene()

virtual bool Ogre::InstancedEntity::isInScene ( void ) const
virtual

Returns true if this object is attached to a SceneNode or TagPoint, and this SceneNode / TagPoint is currently in an active part of the scene graph.

Reimplemented from Ogre::MovableObject.

Definition at line 270 of file OgreInstancedEntity.h.

◆ isInUse()

bool Ogre::InstancedEntity::isInUse ( ) const

Tells if the entity is in use.

Definition at line 251 of file OgreInstancedEntity.h.

◆ isStatic() [1/3]

virtual bool Ogre::InstanceBatch::isStatic ( ) const
virtual

Returns true if this batch was set as static.

See also
setStaticAndUpdate

Reimplemented in Ogre::InstanceBatchHW, and Ogre::InstanceBatchHW_VTF.

Definition at line 299 of file OgreInstanceBatch.h.

◆ isStatic() [2/3]

bool Ogre::InstanceBatchHW::isStatic ( ) const
virtual

Returns true if this batch was set as static.

See also
setStaticAndUpdate

Reimplemented from Ogre::InstanceBatch.

Definition at line 98 of file OgreInstanceBatchHW.h.

◆ isStatic() [3/3]

bool Ogre::InstanceBatchHW_VTF::isStatic ( ) const
virtual

Returns true if this batch was set as static.

See also
setStaticAndUpdate

Reimplemented from Ogre::InstanceBatch.

Definition at line 105 of file OgreInstanceBatchHW_VTF.h.

◆ makeMatrixCameraRelative3x4()

void Ogre::InstanceBatch::makeMatrixCameraRelative3x4 ( float * mat3x4,
size_t numFloats )
protected

Takes an array of 3x4 matrices and makes it camera relative.

Note the second argument takes number of floats in the array, not number of matrices. Assumes mCachedCamera contains the camera which is about to be rendered to.

◆ markTransformDirty()

void Ogre::InstancedEntity::markTransformDirty ( )
protected

Mark the transformation matrixes as dirty.

◆ matricesTogetherPerRow() [1/3]

virtual bool Ogre::BaseInstanceBatchVTF::matricesTogetherPerRow ( ) const
protectedpure virtual

Affects VTF texture's width dimension.

Implemented in Ogre::InstanceBatchHW_VTF, and Ogre::InstanceBatchVTF.

◆ matricesTogetherPerRow() [2/3]

virtual bool Ogre::InstanceBatchHW_VTF::matricesTogetherPerRow ( ) const
protectedvirtual

Affects VTF texture's width dimension.

Implements Ogre::BaseInstanceBatchVTF.

Definition at line 90 of file OgreInstanceBatchHW_VTF.h.

◆ matricesTogetherPerRow() [3/3]

virtual bool Ogre::InstanceBatchVTF::matricesTogetherPerRow ( ) const
privatevirtual

Affects VTF texture's width dimension.

Implements Ogre::BaseInstanceBatchVTF.

Definition at line 214 of file OgreInstanceBatchVTF.h.

◆ notifyUnlink()

void Ogre::InstancedEntity::notifyUnlink ( const InstancedEntity * slave)
protected

Called when a slave has unlinked from us.

◆ operator!=()

_OgreExport bool Ogre::operator!= ( const ShadowTextureConfig & lhs,
const ShadowTextureConfig & rhs )

◆ operator==()

_OgreExport bool Ogre::operator== ( const ShadowTextureConfig & lhs,
const ShadowTextureConfig & rhs )

◆ removeBlendData()

void Ogre::InstanceBatchHW::removeBlendData ( )
private

◆ removeInstancedEntity()

void Ogre::InstanceBatch::removeInstancedEntity ( InstancedEntity * instancedEntity)

Removes an InstancedEntity from the scene retrieved with getNewInstancedEntity, putting back into a queue.

Remarks
Throws an exception if the instanced entity wasn't created by this batch Removed instanced entities save little CPU time, but not GPU

◆ retrieveBoneIdx()

void Ogre::BaseInstanceBatchVTF::retrieveBoneIdx ( VertexData * baseVertexData,
HWBoneIdxVec & outBoneIdx )
protected

Retrieves bone data from the original sub mesh and puts it into an appropriate buffer, later to be read when creating the vertex semantics.

Assumes outBoneIdx has enough space (base submesh vertex count)

◆ retrieveBoneIdxWithWeights()

void Ogre::BaseInstanceBatchVTF::retrieveBoneIdxWithWeights ( VertexData * baseVertexData,
HWBoneIdxVec & outBoneIdx,
HWBoneWgtVec & outBoneWgt )
protected
See also
retrieveBoneIdx() Assumes outBoneIdx has enough space (twice the base submesh vertex count, one for each weight) Assumes outBoneWgt has enough space (twice the base submesh vertex count, one for each weight)

◆ setBatchesAsStaticAndUpdate()

void Ogre::InstanceManager::setBatchesAsStaticAndUpdate ( bool bStatic)

Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.

Currently only InstanceBatchHW & InstanceBatchHW_VTF support it. This option makes the batch behave pretty much like Static Geometry, but with the GPU RAM memory advantages (less VRAM, less bandwidth) and not LOD support. Very useful for billboards of trees, repeating vegetation, etc.

Remarks
This function moves a lot of processing time from the CPU to the GPU. If the GPU is already a bottleneck, you may see a decrease in performance instead! Call this function again (with bStatic=true) if you've made a change to an InstancedEntity and wish this change to take effect. Be sure to call this after you've set all your instances
See also
InstanceBatchHW::setStaticAndUpdate

◆ setBoneDualQuaternions()

void Ogre::BaseInstanceBatchVTF::setBoneDualQuaternions ( bool enable)

Definition at line 181 of file OgreInstanceBatchVTF.h.

◆ setBoneMatrixLookup()

void Ogre::BaseInstanceBatchVTF::setBoneMatrixLookup ( bool enable,
size_t maxLookupTableInstances )

Sets the state of the usage of bone matrix lookup.

Under default condition each instance entity is assigned a specific area in the vertex texture for bone matrix data. When turned on the amount of area in the vertex texture assigned for bone matrix data will be relative to the amount of unique animation states. Instanced entities sharing the same animation state will share the same area in the matrix. The specific position of each entity is placed in the vertex data and added in a second phase in the shader.

Note this feature only works in VTF_HW for now. This value needs to be set before adding any instanced entities

Definition at line 173 of file OgreInstanceBatchVTF.h.

◆ setCustomParam()

void Ogre::InstancedEntity::setCustomParam ( unsigned char idx,
const Vector4 & newParam )

Sets the custom parameter for this instance.

See also
InstanceManager::setNumCustomParams Because not all techniques support custom params, and some users may not need it while using millions of InstancedEntities, the params have been detached from InstancedEntity and stored in it's InstanceBatch instead, to reduce memory overhead.
Remarks
If this function is never called, all instances default to Vector4::ZERO. Watch out! If you destroy an instanced entity and then create it again (remember! Instanced entities are pre-allocated) it's custom param will contain the old value when it was destroyed.
Parameters
idxof the param. In the range [0; InstanceManager::getNumCustomParams())
newParamNew parameter

◆ setForceOneWeight()

void Ogre::BaseInstanceBatchVTF::setForceOneWeight ( bool enable)

Definition at line 186 of file OgreInstanceBatchVTF.h.

◆ setInstancesPerBatch()

void Ogre::InstanceManager::setInstancesPerBatch ( size_t instancesPerBatch)

Raises an exception if trying to change it after creating the first InstancedEntity.

Remarks
The actual value may be less if the technique doesn't support having so much
See also
getMaxOrBestNumInstancesPerBatches for the usefulness of this function
Parameters
instancesPerBatchNew instances per batch number

◆ setInUse()

void Ogre::InstancedEntity::setInUse ( bool used)

Sets whether the entity is in use.

◆ setMaxLookupTableInstances()

void Ogre::InstanceManager::setMaxLookupTableInstances ( size_t maxLookupTableInstances)

Sets the size of the lookup table for techniques supporting bone lookup table.

Raises an exception if trying to change it after creating the first InstancedEntity. Setting this value below the number of unique (non-sharing) entity instance animations will produce a crash during runtime. Setting this value above will increase memory consumption and reduce framerate.

Remarks
The value should be as close but not below the actual value.
Parameters
maxLookupTableInstancesNew size of the lookup table

◆ setNumCustomParams()

void Ogre::InstanceManager::setNumCustomParams ( unsigned char numCustomParams)

Sets the number of custom parameters per instance.

Some techniques (i.e. HWInstancingBasic) support this, but not all of them. They also may have limitations to the max number. All instancing implementations assume each instance param is a Vector4 (4 floats).

Remarks
This function cannot be called after the first batch has been created. Otherwise it will raise an exception. If the technique doesn't support custom params, it will raise an exception at the time of building the first InstanceBatch.

HWInstancingBasic: Each custom params adds an additional float4 TEXCOORD. HWInstancingVTF: Not implemented. (Recommendation: Implement this as an additional float4 VTF fetch) TextureVTF: Not implemented. (see HWInstancingVTF's recommendation) ShaderBased: Not supported.

Parameters
numCustomParamsNumber of custom parameters each instance will have. Default: 0

◆ setOrientation()

void Ogre::InstancedEntity::setOrientation ( const Quaternion & orientation,
bool doUpdate = true )

Set the orientation or the offset from the parent node if a parent node exists.

◆ setPosition()

void Ogre::InstancedEntity::setPosition ( const Vector3 & position,
bool doUpdate = true )

Set the position or the offset from the parent node if a parent node exists.

◆ setScale()

void Ogre::InstancedEntity::setScale ( const Vector3 & scale,
bool doUpdate = true )

Set the scale or the offset from the parent node if a parent node exists

◆ setSetting()

void Ogre::InstanceManager::setSetting ( BatchSettingId id,
bool enabled,
const String & materialName = StringUtil::BLANK )

Applies a setting for all batches using the same material_ existing ones and those that will be created in the future.

For example setSetting( BatchSetting::CAST_SHADOWS, false ) disables shadow casting for all instanced entities (
See also
MovableObject::setCastShadow)
For example setSetting( BatchSetting::SHOW_BOUNDINGBOX, true, "MyMat" ) will display the bounding box of the batch (not individual InstancedEntities) from all batches using material "MyMat"
Note
If the material name hasn't been used, the settings are still stored This allows setting up batches before they get even created.
Parameters
idSetting Id to setup,
See also
BatchSettings::BatchSettingId
Parameters
enabledBoolean value. It's meaning depends on the id.
materialNameWhen Blank, the setting is applied to all existing materials

◆ setStaticAndUpdate() [1/3]

virtual void Ogre::InstanceBatch::setStaticAndUpdate ( bool bStatic)
virtual

Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.

Currently only InstanceBatchHW & InstanceBatchHW_VTF support it. This option makes the batch behave pretty much like Static Geometry, but with the GPU RAM memory advantages (less VRAM, less bandwidth) and not LOD support. Very useful for billboards of trees, repeating vegetation, etc.

Remarks
This function moves a lot of processing time from the CPU to the GPU. If the GPU is already a bottleneck, you may see a decrease in performance instead! Call this function again (with bStatic=true) if you've made a change to an InstancedEntity and wish this change to take effect. Be sure to call this after you've set all your instances
See also
InstanceBatchHW::setStaticAndUpdate

Reimplemented in Ogre::InstanceBatchHW, and Ogre::InstanceBatchHW_VTF.

Definition at line 295 of file OgreInstanceBatch.h.

◆ setStaticAndUpdate() [2/3]

void Ogre::InstanceBatchHW::setStaticAndUpdate ( bool bStatic)
virtual
See also
InstanceBatch::setStaticAndUpdate. While this flag is true, no individual per-entity cull check is made. This means if the camera is looking at only one instance, all instances are sent to the vertex shader (unlike when this flag is false). This saves a lot of CPU power and a bit of bus bandwidth.

Reimplemented from Ogre::InstanceBatch.

◆ setStaticAndUpdate() [3/3]

void Ogre::InstanceBatchHW_VTF::setStaticAndUpdate ( bool bStatic)
virtual

See also
InstanceBatch::setStaticAndUpdate. While this flag is true, no individual per-entity cull check is made. This means if the camera is looking at only one instance, all instances are sent to the vertex shader (unlike when this flag is false). This saves a lot of CPU power and a bit of bus bandwidth.

Reimplemented from Ogre::InstanceBatch.

◆ setTransformLookupNumber()

void Ogre::InstancedEntity::setTransformLookupNumber ( uint16 num)

Sets the transformation look up number.

Definition at line 227 of file OgreInstancedEntity.h.

◆ setupHardwareSkinned()

void Ogre::InstanceBatchShader::setupHardwareSkinned ( const SubMesh * baseSubMesh,
VertexData * thisVertexData,
VertexData * baseVertexData )
private

When the mesh is (hardware) skinned, a different code path is called so that we reuse the index buffers and modify them in place.

For example Instance #2 with reference to bone #5 would have BlendIndex = 2 + 5 = 7 Everything is copied identically except the VES_BLEND_INDICES semantic

◆ setupIndices() [1/5]

virtual void Ogre::InstanceBatch::setupIndices ( const SubMesh * baseSubMesh)
protectedpure virtual

◆ setupIndices() [2/5]

void Ogre::InstanceBatchHW::setupIndices ( const SubMesh * baseSubMesh)
privatevirtual

Implements Ogre::InstanceBatch.

◆ setupIndices() [3/5]

void Ogre::InstanceBatchHW_VTF::setupIndices ( const SubMesh * baseSubMesh)
protectedvirtual

Implements Ogre::InstanceBatch.

◆ setupIndices() [4/5]

void Ogre::InstanceBatchShader::setupIndices ( const SubMesh * baseSubMesh)
privatevirtual

Implements Ogre::InstanceBatch.

◆ setupIndices() [5/5]

void Ogre::InstanceBatchVTF::setupIndices ( const SubMesh * baseSubMesh)
privatevirtual

Implements Ogre::InstanceBatch.

◆ setupMaterialToUseVTF()

void Ogre::BaseInstanceBatchVTF::setupMaterialToUseVTF ( TextureType textureType,
MaterialPtr & material )
protected

Setups the material to use a vertex texture.

◆ setupVertices() [1/5]

virtual void Ogre::InstanceBatch::setupVertices ( const SubMesh * baseSubMesh)
protectedpure virtual

◆ setupVertices() [2/5]

void Ogre::InstanceBatchHW::setupVertices ( const SubMesh * baseSubMesh)
privatevirtual

Implements Ogre::InstanceBatch.

◆ setupVertices() [3/5]

void Ogre::InstanceBatchHW_VTF::setupVertices ( const SubMesh * baseSubMesh)
protectedvirtual

Implements Ogre::InstanceBatch.

◆ setupVertices() [4/5]

void Ogre::InstanceBatchShader::setupVertices ( const SubMesh * baseSubMesh)
privatevirtual

Implements Ogre::InstanceBatch.

◆ setupVertices() [5/5]

void Ogre::InstanceBatchVTF::setupVertices ( const SubMesh * baseSubMesh)
privatevirtual

Implements Ogre::InstanceBatch.

◆ setUseOneWeight()

void Ogre::BaseInstanceBatchVTF::setUseOneWeight ( bool enable)

Definition at line 191 of file OgreInstanceBatchVTF.h.

◆ shareTransformWith()

bool Ogre::InstancedEntity::shareTransformWith ( InstancedEntity * slave)

Shares the entire transformation with another InstancedEntity.

This is useful when a mesh has more than one submeshes, therefore creating multiple InstanceManagers (one for each submesh). With this function, sharing makes the skeleton to be shared (less memory) and updated once (performance optimization). Note that one InstancedEntity (i.e. submesh 0) must be chosen as "master" which will share with the other instanced entities (i.e. submeshes 1-N) which are called "slaves"

Requirements to share trasnformations: Both InstancedEntities must have use the same skeleton An InstancedEntity can't be both "master" and "slave" at the same time
Remarks
Sharing does nothing if the original mesh doesn't have a skeleton When an InstancedEntity is removed (
See also
InstanceBatch::removeInstancedEntity), it stops sharing the transform. If the instanced entity was the master one, all it's slaves stop sharing and start having their own transform too.
Parameters
slaveThe InstancedEntity that should share with us and become our slave
Returns
true if successfully shared (may fail if they aren't skeletally animated)

◆ stopSharingTransform()

void Ogre::InstancedEntity::stopSharingTransform ( )
See also
shareTransformWith Stops sharing the transform if this is a slave, and notifies the master we're no longer a slave. If this is a master, tells all it's slave to stop sharing
Remarks
This function is automatically called in InstanceBatch::removeInstancedEntity

◆ stopSharingTransformAsSlave()

void Ogre::InstancedEntity::stopSharingTransformAsSlave ( bool notifyMaster)
protected

When this entity is a slave, stopSharingTransform delegates to this function.

nofityMaster = false is used to prevent iterator invalidation in specific cases.

◆ unlinkTransform()

void Ogre::InstancedEntity::unlinkTransform ( bool notifyMaster = true)
protected

Just unlinks, and tells our master we're no longer sharing.

◆ unshareVertices()

void Ogre::InstanceManager::unshareVertices ( const Ogre::MeshPtr & mesh)
private

Called when we you use a mesh which has shared vertices, the function creates separate vertex/index buffers and also recreates the bone assignments.

◆ updateInstanceDataBuffer()

virtual size_t Ogre::InstanceBatchHW_VTF::updateInstanceDataBuffer ( bool isFirstTime,
Camera * currentCamera )
protectedvirtual

updates the vertex buffer containing the per instance data

Parameters
[in]isFirstTimeTells if this is the first time the buffer is being updated
[in]currentCameraThe camera being used for render (valid when using bone matrix lookup)
Returns
The number of instances to be rendered

◆ updateSharedLookupIndexes()

virtual void Ogre::BaseInstanceBatchVTF::updateSharedLookupIndexes ( )
protectedvirtual

update the lookup numbers for entities with shared transforms

◆ updateTransforms()

void Ogre::InstancedEntity::updateTransforms ( )

Update the world transform and derived values.

◆ updateVertexBuffer()

size_t Ogre::InstanceBatchHW::updateVertexBuffer ( Camera * currentCamera)
private

◆ updateVertexTexture() [1/2]

void Ogre::BaseInstanceBatchVTF::updateVertexTexture ( void )
protected

Keeps filling the VTF with world matrix data.

◆ updateVertexTexture() [2/2]

size_t Ogre::InstanceBatchHW_VTF::updateVertexTexture ( Camera * currentCamera)
protected

Keeps filling the VTF with world matrix data.

Overloaded to avoid culled objects and update visible instances' animation

◆ updateVisibility()

void Ogre::InstanceBatch::updateVisibility ( void )
protected

◆ useBoneDualQuaternions()

bool Ogre::BaseInstanceBatchVTF::useBoneDualQuaternions ( ) const

Definition at line 184 of file OgreInstanceBatchVTF.h.

◆ useBoneMatrixLookup()

bool Ogre::BaseInstanceBatchVTF::useBoneMatrixLookup ( ) const

Tells whether to use bone matrix lookup.

See also
setBoneMatrixLookup()

Definition at line 179 of file OgreInstanceBatchVTF.h.

◆ useBoneWorldMatrices() [1/2]

virtual bool Ogre::BaseInstanceBatchVTF::useBoneWorldMatrices ( ) const
virtual
See also
InstanceBatch::useBoneWorldMatrices()

Reimplemented from Ogre::InstanceBatch.

Definition at line 197 of file OgreInstanceBatchVTF.h.

◆ useBoneWorldMatrices() [2/2]

virtual bool Ogre::InstanceBatch::useBoneWorldMatrices ( ) const
virtual

Tells whether world bone matrices need to be calculated.

This does not include bone matrices which are calculated regardless

Reimplemented in Ogre::BaseInstanceBatchVTF.

Definition at line 320 of file OgreInstanceBatch.h.

◆ useOneWeight()

bool Ogre::BaseInstanceBatchVTF::useOneWeight ( ) const

Definition at line 194 of file OgreInstanceBatchVTF.h.

◆ visitRenderables() [1/2]

void Ogre::InstanceBatch::visitRenderables ( Renderable::Visitor * visitor,
bool debugRenderables = false )
virtual

Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject will add to the render queue when asked, if any.

Parameters
visitorPointer to a class implementing the Renderable::Visitor interface which will be called back for each Renderable which will be queued. Bear in mind that the state of the Renderable instances may not be finalised depending on when you call this.
debugRenderablesIf false, only regular renderables will be visited (those for normal display). If true, debug renderables will be included too.

Implements Ogre::MovableObject.

◆ visitRenderables() [2/2]

void Ogre::InstancedEntity::visitRenderables ( Renderable::Visitor * visitor,
bool debugRenderables = false )
virtual

Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject will add to the render queue when asked, if any.

Parameters
visitorPointer to a class implementing the Renderable::Visitor interface which will be called back for each Renderable which will be queued. Bear in mind that the state of the Renderable instances may not be finalised depending on when you call this.
debugRenderablesIf false, only regular renderables will be visited (those for normal display). If true, debug renderables will be included too.

Implements Ogre::MovableObject.

Definition at line 207 of file OgreInstancedEntity.h.

Variable Documentation

◆ mAnimationState

AnimationStateSet* Ogre::InstancedEntity::mAnimationState
protected

Definition at line 89 of file OgreInstancedEntity.h.

◆ mBatchOwner

InstanceBatch* Ogre::InstancedEntity::mBatchOwner
protected

Definition at line 87 of file OgreInstancedEntity.h.

◆ mBatchSettings

BatchSettingsMap Ogre::InstanceManager::mBatchSettings
private

Definition at line 118 of file OgreInstanceManager.h.

◆ mBoneMatrices

Matrix4* Ogre::InstancedEntity::mBoneMatrices
protected

Definition at line 91 of file OgreInstancedEntity.h.

◆ mBoneWorldMatrices

Matrix4* Ogre::InstancedEntity::mBoneWorldMatrices
protected

Definition at line 92 of file OgreInstancedEntity.h.

◆ mBoundingRadius

Real Ogre::InstanceBatch::mBoundingRadius
protected

Definition at line 118 of file OgreInstanceBatch.h.

◆ mBoundsDirty

bool Ogre::InstanceBatch::mBoundsDirty
protected

Definition at line 119 of file OgreInstanceBatch.h.

◆ mBoundsUpdated

bool Ogre::InstanceBatch::mBoundsUpdated
protected

Definition at line 120 of file OgreInstanceBatch.h.

◆ mCachedCamera

const Camera* Ogre::InstanceBatch::mCachedCamera
mutableprotected

The camera for which the cached distance is valid.

Definition at line 133 of file OgreInstanceBatch.h.

◆ mCachedCameraDist

Real Ogre::InstanceBatch::mCachedCameraDist
mutableprotected

Cached distance to last camera for getSquaredViewDepth.

Definition at line 131 of file OgreInstanceBatch.h.

◆ mCreator

InstanceManager* Ogre::InstanceBatch::mCreator
protected

Definition at line 97 of file OgreInstanceBatch.h.

◆ mCurrentCamera

Camera* Ogre::InstanceBatch::mCurrentCamera
protected

Definition at line 121 of file OgreInstanceBatch.h.

◆ mCustomParams

CustomParamsVec Ogre::InstanceBatch::mCustomParams
protected
See also
InstanceManager::setNumCustomParams(). Because this may not even be used, our implementations keep the params separate from the InstancedEntity to lower the memory overhead. They default to Vector4::ZERO

Definition at line 114 of file OgreInstanceBatch.h.

◆ mDerivedLocalPosition

Vector3 Ogre::InstancedEntity::mDerivedLocalPosition
protected

Definition at line 112 of file OgreInstancedEntity.h.

◆ mDirtyAnimation

bool Ogre::InstanceBatch::mDirtyAnimation
protected

Definition at line 125 of file OgreInstanceBatch.h.

◆ mDirtyBatches

InstanceBatchVec Ogre::InstanceManager::mDirtyBatches
private

Definition at line 109 of file OgreInstanceManager.h.

◆ mForceOneWeight

bool Ogre::BaseInstanceBatchVTF::mForceOneWeight
protected

Definition at line 101 of file OgreInstanceBatchVTF.h.

◆ mFrameAnimationLastUpdated

unsigned long Ogre::InstancedEntity::mFrameAnimationLastUpdated
protected

Definition at line 93 of file OgreInstancedEntity.h.

◆ mFullBoundingBox

AxisAlignedBox Ogre::InstanceBatch::mFullBoundingBox
protected

This bbox contains all (visible) instanced entities.

Definition at line 117 of file OgreInstanceBatch.h.

◆ mFullLocalTransform

Matrix4 Ogre::InstancedEntity::mFullLocalTransform
protected

Full world transform.

Definition at line 120 of file OgreInstancedEntity.h.

◆ mIdCount

size_t Ogre::InstanceManager::mIdCount
private

Definition at line 107 of file OgreInstanceManager.h.

◆ mIndexToBoneMap

Mesh::IndexMap const* Ogre::InstanceBatch::mIndexToBoneMap
protected

Definition at line 102 of file OgreInstanceBatch.h.

◆ mInstanceBatches

InstanceBatchMap Ogre::InstanceManager::mInstanceBatches
private

Definition at line 106 of file OgreInstanceManager.h.

◆ mInstancedEntities

InstancedEntityVec Ogre::InstanceBatch::mInstancedEntities
protected

Definition at line 108 of file OgreInstanceBatch.h.

◆ mInstanceId

uint16 Ogre::InstancedEntity::mInstanceId
protected

Definition at line 85 of file OgreInstancedEntity.h.

◆ mInstancesPerBatch [1/2]

size_t Ogre::InstanceBatch::mInstancesPerBatch
protected

Definition at line 95 of file OgreInstanceBatch.h.

◆ mInstancesPerBatch [2/2]

size_t Ogre::InstanceManager::mInstancesPerBatch
private

Definition at line 113 of file OgreInstanceManager.h.

◆ mInstanceVertexBuffer

HardwareVertexBufferSharedPtr Ogre::InstanceBatchHW_VTF::mInstanceVertexBuffer
protected

Definition at line 66 of file OgreInstanceBatchHW_VTF.h.

◆ mInstancingFlags

uint16 Ogre::InstanceManager::mInstancingFlags
private
See also
InstanceManagerFlags

Definition at line 115 of file OgreInstanceManager.h.

◆ mInstancingTechnique

InstancingTechnique Ogre::InstanceManager::mInstancingTechnique
private

Definition at line 114 of file OgreInstanceManager.h.

◆ mInUse

bool Ogre::InstancedEntity::mInUse
protected

Definition at line 86 of file OgreInstancedEntity.h.

◆ mKeepStatic [1/2]

bool Ogre::InstanceBatchHW::mKeepStatic
private

Definition at line 63 of file OgreInstanceBatchHW.h.

◆ mKeepStatic [2/2]

bool Ogre::InstanceBatchHW_VTF::mKeepStatic
protected

Definition at line 63 of file OgreInstanceBatchHW_VTF.h.

◆ mMaterial

MaterialPtr Ogre::InstanceBatch::mMaterial
protected

Definition at line 99 of file OgreInstanceBatch.h.

◆ mMaterialLodIndex

unsigned short Ogre::InstanceBatch::mMaterialLodIndex
protected

Definition at line 123 of file OgreInstanceBatch.h.

◆ mMatricesPerInstance

size_t Ogre::BaseInstanceBatchVTF::mMatricesPerInstance
protected

Definition at line 81 of file OgreInstanceBatchVTF.h.

◆ mMatrixTexture

TexturePtr Ogre::BaseInstanceBatchVTF::mMatrixTexture
protected

Definition at line 83 of file OgreInstanceBatchVTF.h.

◆ mMaxFloatsPerLine

size_t Ogre::BaseInstanceBatchVTF::mMaxFloatsPerLine
protected

Definition at line 89 of file OgreInstanceBatchVTF.h.

◆ mMaxLookupTableInstances [1/2]

size_t Ogre::BaseInstanceBatchVTF::mMaxLookupTableInstances
protected

Definition at line 98 of file OgreInstanceBatchVTF.h.

◆ mMaxLookupTableInstances [2/2]

size_t Ogre::InstanceManager::mMaxLookupTableInstances
private

Definition at line 121 of file OgreInstanceManager.h.

◆ mMaxScaleLocal

Real Ogre::InstancedEntity::mMaxScaleLocal
protected

The maximum absolute scale for all dimension.

Definition at line 118 of file OgreInstancedEntity.h.

◆ mMeshReference [1/2]

MeshPtr Ogre::InstanceBatch::mMeshReference
protected

Definition at line 101 of file OgreInstanceBatch.h.

◆ mMeshReference [2/2]

MeshPtr Ogre::InstanceManager::mMeshReference
private

Definition at line 105 of file OgreInstanceManager.h.

◆ mName

const String Ogre::InstanceManager::mName
private

Definition at line 104 of file OgreInstanceManager.h.

◆ mNeedAnimTransformUpdate

bool Ogre::InstancedEntity::mNeedAnimTransformUpdate
protected

Tells if the animation world transform needs an update.

Definition at line 124 of file OgreInstancedEntity.h.

◆ mNeedTransformUpdate

bool Ogre::InstancedEntity::mNeedTransformUpdate
protected

Tells if mFullTransform needs an updated.

Definition at line 122 of file OgreInstancedEntity.h.

◆ mNumCustomParams

unsigned char Ogre::InstanceManager::mNumCustomParams
private

Definition at line 122 of file OgreInstanceManager.h.

◆ mNumWorldMatrices [1/2]

size_t Ogre::BaseInstanceBatchVTF::mNumWorldMatrices
protected

Definition at line 82 of file OgreInstanceBatchVTF.h.

◆ mNumWorldMatrices [2/2]

unsigned short Ogre::InstanceBatchShader::mNumWorldMatrices
private

Definition at line 68 of file OgreInstanceBatchShader.h.

◆ mOrientation

Quaternion Ogre::InstancedEntity::mOrientation
protected

Object orientation.

Definition at line 114 of file OgreInstancedEntity.h.

◆ mPosition

Vector3 Ogre::InstancedEntity::mPosition
protected

Object position.

Definition at line 111 of file OgreInstancedEntity.h.

◆ mRemoveOwnIndexData

bool Ogre::InstanceBatch::mRemoveOwnIndexData
protected

When true remove the memory of the IndexData we've created because no one else will.

Definition at line 141 of file OgreInstanceBatch.h.

◆ mRemoveOwnVertexData

bool Ogre::InstanceBatch::mRemoveOwnVertexData
protected

When true remove the memory of the VertexData we've created because no one else will.

Definition at line 139 of file OgreInstanceBatch.h.

◆ mRenderOperation

RenderOperation Ogre::InstanceBatch::mRenderOperation
protected

Definition at line 94 of file OgreInstanceBatch.h.

◆ mRowLength

size_t Ogre::BaseInstanceBatchVTF::mRowLength
protected

Definition at line 91 of file OgreInstanceBatchVTF.h.

◆ mScale

Vector3 Ogre::InstancedEntity::mScale
protected

Object scale.

Definition at line 116 of file OgreInstancedEntity.h.

◆ mSceneManager

SceneManager* Ogre::InstanceManager::mSceneManager
private

Definition at line 119 of file OgreInstanceManager.h.

◆ mSharedRenderOperation

RenderOperation Ogre::InstanceManager::mSharedRenderOperation
private

Definition at line 111 of file OgreInstanceManager.h.

◆ mSharedTransformEntity

InstancedEntity* Ogre::InstancedEntity::mSharedTransformEntity
protected

Definition at line 95 of file OgreInstancedEntity.h.

◆ mSharingPartners

InstancedEntityVec Ogre::InstancedEntity::mSharingPartners
protected

Definition at line 103 of file OgreInstancedEntity.h.

◆ mSkeletonInstance

SkeletonInstance* Ogre::InstancedEntity::mSkeletonInstance
protected

Definition at line 90 of file OgreInstancedEntity.h.

◆ msNameGenerator

NameGenerator Ogre::InstancedEntity::msNameGenerator
staticprotected

Incremented count for next name extension.

Definition at line 155 of file OgreInstancedEntity.h.

◆ mSubMeshIdx

unsigned short Ogre::InstanceManager::mSubMeshIdx
private

Definition at line 116 of file OgreInstanceManager.h.

◆ mTechnSupportsSkeletal

bool Ogre::InstanceBatch::mTechnSupportsSkeletal
protected

False if a technique doesn't support skeletal animation.

Definition at line 128 of file OgreInstanceBatch.h.

◆ mTempTransformsArray3x4

float* Ogre::BaseInstanceBatchVTF::mTempTransformsArray3x4
protected

Definition at line 94 of file OgreInstanceBatchVTF.h.

◆ mTransformLookupNumber

uint16 Ogre::InstancedEntity::mTransformLookupNumber
protected

Used in conjunction with bone matrix lookup.

Tells the number of the transform for as arranged in the vertex texture

Definition at line 99 of file OgreInstancedEntity.h.

◆ mTransformSharingDirty

bool Ogre::InstanceBatch::mTransformSharingDirty
protected

Tells that the list of entity instances with shared transforms has changed.

Definition at line 136 of file OgreInstanceBatch.h.

◆ mUnusedEntities

InstancedEntityVec Ogre::InstanceBatch::mUnusedEntities
protected

Definition at line 109 of file OgreInstanceBatch.h.

◆ mUseBoneDualQuaternions

bool Ogre::BaseInstanceBatchVTF::mUseBoneDualQuaternions
protected

Definition at line 100 of file OgreInstanceBatchVTF.h.

◆ mUseBoneMatrixLookup

bool Ogre::BaseInstanceBatchVTF::mUseBoneMatrixLookup
protected

Definition at line 97 of file OgreInstanceBatchVTF.h.

◆ mUseLocalTransform

bool Ogre::InstancedEntity::mUseLocalTransform
protected

Tells whether to use the local transform parameters.

Definition at line 126 of file OgreInstancedEntity.h.

◆ mUseOneWeight

bool Ogre::BaseInstanceBatchVTF::mUseOneWeight
protected

Definition at line 102 of file OgreInstanceBatchVTF.h.

◆ mWeightCount

size_t Ogre::BaseInstanceBatchVTF::mWeightCount
protected

Definition at line 92 of file OgreInstanceBatchVTF.h.

◆ mWidthFloatsPadding

size_t Ogre::BaseInstanceBatchVTF::mWidthFloatsPadding
protected

Definition at line 88 of file OgreInstanceBatchVTF.h.

◆ setting

bool Ogre::InstanceManager::BatchSettings::setting[NUM_SETTINGS]

Definition at line 90 of file OgreInstanceManager.h.

Friends

◆ BaseInstanceBatchVTF

friend class BaseInstanceBatchVTF
friend

Definition at line 83 of file OgreInstancedEntity.h.

◆ InstanceBatch

friend class InstanceBatch
friend

Definition at line 79 of file OgreInstancedEntity.h.

◆ InstanceBatchHW

friend class InstanceBatchHW
friend

Definition at line 81 of file OgreInstancedEntity.h.

◆ InstanceBatchHW_VTF

friend class InstanceBatchHW_VTF
friend

Definition at line 82 of file OgreInstancedEntity.h.

◆ InstanceBatchShader

friend class InstanceBatchShader
friend

Definition at line 80 of file OgreInstancedEntity.h.