![]() |
OGRE
2.1.0unstable
Object-Oriented Graphics Rendering Engine
|
Namespaces | |
Ogre::SceneFlags | |
Ogre::v1 | |
Ogre::VisibilityFlags | |
Classes | |
class | Ogre::AxisAlignedBoxSceneQuery |
Specialises the SceneQuery class for querying within an axis aligned box. More... | |
struct | Ogre::BuildLightListRequest |
class | Ogre::Camera |
A viewpoint from which the scene will be rendered. More... | |
class | Ogre::CompositorManager2 |
Main system for managing Render Targets through the use of nodes. More... | |
class | Ogre::CompositorPassProvider |
Base class that users can derive from in order to implement custom passes for the compositor. More... | |
struct | Ogre::CullFrustumRequest |
All variables are read-only for the worker threads. 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::DefaultSceneFormatListener |
Default implementation that prevents a SceneNode from being exported if the only attached objects. 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::FocusedShadowCameraSetup |
Implements the uniform shadow mapping algorithm in focused mode. More... | |
struct | Ogre::InstanceBatchCullRequest |
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::Item |
Defines an instance of a discrete, movable object based on a Mesh. More... | |
class | Ogre::ItemFactory |
FItemy object for creating Item instances. 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::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::NullEntity |
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::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::RenderableAnimated |
class | Ogre::SceneFormatBase |
class | Ogre::SceneFormatExporter |
class | Ogre::SceneFormatImporter |
class | Ogre::SceneFormatListener |
Override this listener if you want to filter which objects get exported. 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::ShadowVolumeExtrudeProgram |
Static class containing source for vertex programs for extruding shadow volumes. 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::SubItem |
Utility class which defines the sub-parts of an Item. More... | |
struct | Ogre::UpdateLodRequest |
struct | Ogre::UpdateTransformRequest |
class | Ogre::UserObjectBindings |
Class that provides convenient interface to establish a linkage between custom user application objects and Ogre core classes. More... | |
class | Ogre::v1::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::v1::Entity |
Defines an instance of a discrete, movable object based on a Mesh. More... | |
class | Ogre::v1::EntityFactory |
Factory object for creating Entity instances. More... | |
class | Ogre::v1::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::v1::InstanceBatchHW |
This is technique requires true instancing hardware support. More... | |
class | Ogre::v1::InstanceBatchHW_VTF |
Instancing implementation using vertex texture through Vertex Texture Fetch (VTF) and hardware instancing. More... | |
class | Ogre::v1::InstanceBatchShader |
This is the same technique the old "InstancedGeometry" implementation used (with improvements). More... | |
class | Ogre::v1::InstanceBatchVTF |
class | Ogre::v1::InstancedEntity |
class | Ogre::v1::InstanceManager |
This is the main starting point for the new instancing system. More... | |
struct | Ogre::v1::InstanceManagerCmp |
class | Ogre::v1::ManualObject |
Class providing a much simplified interface to generating manual objects with custom geometry. More... | |
class | Ogre::v1::ManualObjectFactory |
Factory object for creating ManualObject instances. More... | |
class | Ogre::v1::OldNode |
Class representing a general-purpose OldNode an articulated scene graph. More... | |
class | Ogre::v1::OldSkeletonInstance |
A OldSkeletonInstance is a single instance of a Skeleton used by a world object. More... | |
class | Ogre::v1::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 'depth_write off' materials. More... | |
class | Ogre::v1::Rectangle2DFactory |
Factory object for creating Entity instances. More... | |
class | Ogre::v1::SimpleRenderable |
Simple implementation of MovableObject and Renderable for single-part custom objects. More... | |
class | Ogre::v1::StaticGeometry |
Pre-transforms and batches up meshes for efficient use as static geometry in a scene. More... | |
class | Ogre::v1::SubEntity |
Utility class which defines the sub-parts of an Entity. More... | |
class | Ogre::v1::WireBoundingBox |
Allows the rendering of a wireframe bounding box. More... | |
struct | Ogre::ViewPoint |
Structure for holding a position & orientation pair. More... | |
Functions | |
Ogre::v1::BaseInstanceBatchVTF::BaseInstanceBatchVTF (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap) | |
Ogre::v1::InstanceManager::BatchSettings::BatchSettings () | |
Ogre::v1::InstanceBatch::InstanceBatch (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap) | |
Ogre::v1::InstanceBatchHW::InstanceBatchHW (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap) | |
Ogre::v1::InstanceBatchHW_VTF::InstanceBatchHW_VTF (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap) | |
Ogre::v1::InstanceBatchShader::InstanceBatchShader (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap) | |
Ogre::v1::InstanceBatchVTF::InstanceBatchVTF (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap) | |
Ogre::v1::InstancedEntity::InstancedEntity (IdType id, ObjectMemoryManager *objectMemoryManager, InstanceBatch *batchOwner, uint32 instanceID, BoneMemoryManager *boneMemoryManager, InstancedEntity *sharedTransformEntity=NULL) | |
Ogre::v1::InstanceManager::InstanceManager (IdString customName, SceneManager *sceneManager, const String &meshName, const String &groupName, InstancingTechnique instancingTechnique, uint16 instancingFlags, size_t instancesPerBatch, unsigned short subMeshIdx, bool useBoneMatrixLookup=false) | |
Ogre::v1::InstanceBatchHW_VTF::SendAllAnimatedTransformsToTexture::SendAllAnimatedTransformsToTexture (float *RESTRICT_ALIAS dstPtr, size_t floatsPerEntity, size_t entitiesPerPadding, size_t widthFloatsPadding, const Mesh::IndexMap *indexMap) | |
Ogre::v1::InstanceBatchHW_VTF::SendAllDualQuatTexture::SendAllDualQuatTexture (float *RESTRICT_ALIAS dstPtr, size_t floatsPerEntity, size_t entitiesPerPadding, size_t widthFloatsPadding, const Mesh::IndexMap *indexMap) | |
Ogre::v1::InstanceBatchHW_VTF::SendAllLUTToTexture::SendAllLUTToTexture (float *RESTRICT_ALIAS dstPtr, size_t floatsPerEntity, size_t entitiesPerPadding, size_t widthFloatsPadding, const Mesh::IndexMap *indexMap, size_t numLutEntries) | |
Ogre::v1::InstanceBatchHW_VTF::SendAllSingleTransformsToTexture::SendAllSingleTransformsToTexture (float *RESTRICT_ALIAS dstPtr, size_t floatsPerEntity, size_t entitiesPerPadding, size_t widthFloatsPadding) | |
Ogre::v1::InstanceBatchHW_VTF::TransformsToTexture::TransformsToTexture (float *RESTRICT_ALIAS dstPtr, size_t floatsPerEntity, size_t entitiesPerPadding, size_t widthFloatsPadding) | |
virtual | Ogre::v1::BaseInstanceBatchVTF::~BaseInstanceBatchVTF () |
virtual | Ogre::v1::InstanceBatch::~InstanceBatch () |
virtual | Ogre::v1::InstanceBatchHW::~InstanceBatchHW () |
virtual | Ogre::v1::InstanceBatchHW_VTF::~InstanceBatchHW_VTF () |
virtual | Ogre::v1::InstanceBatchShader::~InstanceBatchShader () |
virtual | Ogre::v1::InstanceBatchVTF::~InstanceBatchVTF () |
virtual | Ogre::v1::InstancedEntity::~InstancedEntity () |
virtual | Ogre::v1::InstanceManager::~InstanceManager () |
void | Ogre::v1::InstanceManager::_addDirtyStaticBatch (InstanceBatch *dirtyBatch) |
Called by an InstanceBatch when it requests their bounds to be updated for proper culling. More... | |
void | Ogre::v1::InstanceManager::_addToDynamicBatchList (InstanceBatch *dynamicBatch) |
Kees the batch in the dynamic batch list so that it gets updated every frame. More... | |
void | Ogre::v1::InstanceBatchHW_VTF::_boundsDirty (void) |
void | Ogre::v1::InstanceBatch::_defragmentBatch (bool optimizeCulling, InstancedEntityVec &usedEntities, CustomParamsVec &usedParams) |
void | Ogre::v1::InstanceBatch::_defragmentBatchDiscard (void) |
const Vector4 & | Ogre::v1::InstanceBatch::_getCustomParam (InstancedEntity *instancedEntity, unsigned char idx) |
const Mesh::IndexMap * | Ogre::v1::InstanceBatch::_getIndexToBoneMap () const |
MeshPtr & | Ogre::v1::InstanceBatch::_getMeshRef () |
const Ogre::v1::MeshPtr & | Ogre::v1::InstanceBatch::_getMeshReference (void) const |
InstanceBatch * | Ogre::v1::InstancedEntity::_getOwner () const |
void | Ogre::v1::InstanceBatch::_markTransformSharingDirty () |
Tells that the list of entity instances with shared transforms has changed. More... | |
virtual void | Ogre::v1::InstancedEntity::_notifyAttached (Node *parent) |
Overloaded so we can register ourselves for updating our animations. More... | |
virtual void | Ogre::v1::InstancedEntity::_notifyParentNodeMemoryChanged (void) |
Node::_callMemoryChangeListeners More... | |
virtual void | Ogre::v1::InstancedEntity::_notifyStaticDirty (void) const |
Called by SceneManager when it is telling we're a static MovableObject being dirty Don't call this directly. More... | |
virtual void | Ogre::v1::InstanceBatch::_notifyStaticDirty (void) |
Called by InstancedEntity(s) or directly to tell us we need to update the bounds Should only useful if this batch is static. More... | |
void | Ogre::v1::InstanceManager::_removeFromDynamicBatchList (InstanceBatch *batch) |
Called when a previously dynamic InstanceBatch went static (. More... | |
void | Ogre::v1::InstanceBatch::_setCustomParam (InstancedEntity *instancedEntity, unsigned char idx, const Vector4 &newParam) |
void | Ogre::v1::InstanceBatch::_setInstancesPerBatch (size_t instancesPerBatch) |
Raises an exception if trying to change it after being built. More... | |
SkeletalAnimationMode | Ogre::v1::InstanceBatch::_supportsSkeletalAnimation () const |
Returns true if this technique supports skeletal animation. More... | |
void | Ogre::v1::InstanceBatch::_updateBounds (void) |
void | Ogre::v1::InstanceManager::_updateDirtyBatches (void) |
Called by SceneManager every frame. More... | |
void | Ogre::v1::InstanceManager::_updateDirtyBatchesThread (size_t threadIdx) |
Called by SceneManager every frame from multiple threads. More... | |
void | Ogre::v1::InstanceBatch::_updateEntitiesBoundsThread (size_t threadIdx) |
Updates the bounds of only our entities from multiple threads. More... | |
virtual void | Ogre::v1::InstanceBatchHW::_updateRenderQueue (RenderQueue *queue, Camera *camera, const Camera *lodCamera) |
Overloaded to avoid updating skeletons (which we don't support), check visibility on a per unit basis and finally updated the vertex buffer. More... | |
void | Ogre::v1::BaseInstanceBatchVTF::_updateRenderQueue (RenderQueue *queue, Camera *camera, const Camera *lodCamera) |
Overloaded to be able to updated the vertex texture. More... | |
virtual void | Ogre::v1::InstanceBatchHW_VTF::_updateRenderQueue (RenderQueue *queue, Camera *camera, const Camera *lodCamera) |
Overloaded to visibility on a per unit basis and finally updated the vertex texture. More... | |
void | Ogre::v1::InstancedEntity::_updateRenderQueue (RenderQueue *queue, Camera *camera, const Camera *lodCamera) |
Do nothing, InstanceBatch takes care of this. More... | |
virtual RenderOperation | Ogre::v1::InstanceBatch::build (const SubMesh *baseSubMesh) |
Constructs all the data needed to use this batch, as well as the InstanceEntities. More... | |
void | Ogre::v1::InstanceBatchHW::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation) |
void | Ogre::v1::InstanceBatchShader::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation) |
void | Ogre::v1::BaseInstanceBatchVTF::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation) |
virtual void | Ogre::v1::InstanceBatch::buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation) |
Instancing consumes significantly more GPU memory than regular rendering methods. More... | |
size_t | Ogre::v1::InstanceBatchHW::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const |
size_t | Ogre::v1::InstanceBatchShader::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const |
size_t | Ogre::v1::InstanceBatchHW_VTF::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const |
size_t | Ogre::v1::InstanceBatchVTF::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const |
virtual size_t | Ogre::v1::InstanceBatch::calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const =0 |
Some techniques have a limit on how many instances can be done. More... | |
void | Ogre::v1::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. More... | |
InstancedEntity * | Ogre::v1::InstanceManager::createInstancedEntity (const String &materialName, SceneMemoryMgrTypes sceneType=SCENE_DYNAMIC) |
Creates an InstancedEntity based on an existing InstanceManager (. More... | |
InstancedEntity * | Ogre::v1::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. More... | |
void | Ogre::v1::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. More... | |
bool | Ogre::v1::BaseInstanceBatchVTF::forceOneWeight () const |
const AxisAlignedBox & | Ogre::v1::InstancedEntity::getBoundingBox (void) const |
const Vector4 & | Ogre::v1::InstancedEntity::getCustomParam (unsigned char idx) |
InstanceBatchIterator | Ogre::v1::InstanceManager::getInstanceBatchIterator (const String &materialName, SceneMemoryMgrTypes sceneType) const |
Get non-updateable iterator over instance batches for given material. More... | |
InstanceBatchMapIterator | Ogre::v1::InstanceManager::getInstanceBatchMapIterator (void) const |
Get non-updateable iterator over instance batches per material. More... | |
void | Ogre::v1::InstanceBatch::getInstancedEntitiesInUse (InstancedEntityVec &outEntities, CustomParamsVec &outParams) |
Fills the input vector with the instances that are currently being used or were requested. More... | |
InstancingTechnique | Ogre::v1::InstanceManager::getInstancingTechnique () const |
const LightList & | Ogre::v1::InstanceBatch::getLights (void) const |
virtual size_t | Ogre::v1::BaseInstanceBatchVTF::getMaxLookupTableInstances () const |
size_t | Ogre::v1::InstanceManager::getMaxOrBestNumInstancesPerBatch (const 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. More... | |
const String & | Ogre::v1::InstancedEntity::getMovableType (void) const |
Returns the type name of this object. More... | |
const String & | Ogre::v1::InstanceBatch::getMovableType (void) const |
const IdString | Ogre::v1::InstanceManager::getName () const |
unsigned char | Ogre::v1::InstanceManager::getNumCustomParams () const |
unsigned short | Ogre::v1::InstanceBatchHW::getNumWorldTransforms (void) const |
Returns the number of world transform matrices this renderable requires. More... | |
unsigned short | Ogre::v1::InstanceBatchShader::getNumWorldTransforms (void) const |
Returns the number of world transform matrices this renderable requires. More... | |
unsigned short | Ogre::v1::BaseInstanceBatchVTF::getNumWorldTransforms (void) const |
Returns the number of world transform matrices this renderable requires. More... | |
void | Ogre::v1::InstanceBatch::getRenderOperation (RenderOperation &op, bool casterPass) |
SceneManager * | Ogre::v1::InstanceManager::getSceneManager () const |
bool | Ogre::v1::InstanceManager::getSetting (BatchSettingId id, IdString materialName) const |
If settings for the given material didn't exist, default value is returned. More... | |
SkeletonInstance * | Ogre::v1::InstancedEntity::getSkeleton (void) const |
Real | Ogre::v1::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. More... | |
Real | Ogre::v1::InstanceBatch::getSquaredViewDepth (const Camera *cam) const |
void | Ogre::v1::InstanceBatchHW::getWorldTransforms (Matrix4 *xform) const |
Gets the world transform matrix / matrices for this renderable object. More... | |
void | Ogre::v1::InstanceBatchShader::getWorldTransforms (Matrix4 *xform) const |
Gets the world transform matrix / matrices for this renderable object. More... | |
void | Ogre::v1::BaseInstanceBatchVTF::getWorldTransforms (Matrix4 *xform) const |
Gets the world transform matrix / matrices for this renderable object. More... | |
bool | Ogre::v1::InstanceManager::hasSettings (IdString materialName) const |
Returns true if settings were already created for the given material name. More... | |
bool | Ogre::v1::InstancedEntity::hasSkeleton (void) const |
virtual void | Ogre::v1::InstanceBatchHW::instanceBatchCullFrustumThreaded (const Camera *frustum, const Camera *lodCamera, uint32 combinedVisibilityFlags) |
virtual void | Ogre::v1::InstanceBatchHW_VTF::instanceBatchCullFrustumThreaded (const Camera *frustum, const Camera *lodCamera, uint32 combinedVisibilityFlags) |
bool | Ogre::v1::InstanceBatch::isBatchFull (void) const |
bool | Ogre::v1::InstanceBatch::isBatchUnused (void) const |
Returns true if it no instanced entity has been requested or all of them have been removed. More... | |
virtual bool | Ogre::v1::InstancedEntity::isInScene (void) const |
bool | Ogre::v1::InstancedEntity::isInUse () const |
Tells if the entity is in use. More... | |
FORCEINLINE void | Ogre::v1::InstanceBatchHW_VTF::SendAllSingleTransformsToTexture::operator() (const MovableObject *mo) |
FORCEINLINE void | Ogre::v1::InstanceBatchHW_VTF::SendAllAnimatedTransformsToTexture::operator() (const MovableObject *mo) |
FORCEINLINE void | Ogre::v1::InstanceBatchHW_VTF::SendAllLUTToTexture::operator() (const MovableObject *mo) |
FORCEINLINE void | Ogre::v1::InstanceBatchHW_VTF::SendAllDualQuatTexture::operator() (const MovableObject *mo) |
bool | Ogre::v1::InstanceManagerCmp::operator() (const InstanceManager *a, const InstanceManager *b) const |
bool | Ogre::v1::InstanceManagerCmp::operator() (const InstanceManager *a, IdString name) const |
bool | Ogre::v1::InstanceManagerCmp::operator() (IdString name, const InstanceManager *a) const |
void | Ogre::v1::InstanceBatch::removeInstancedEntity (InstancedEntity *instancedEntity) |
Removes an InstancedEntity from the scene retrieved with getNewInstancedEntity, putting back into a queue. More... | |
void | Ogre::v1::InstanceManager::setBatchesAsStatic (bool bStatic) |
Tells this batch to stop updating animations, positions, rotations, and display all it's active instances. More... | |
void | Ogre::v1::BaseInstanceBatchVTF::setBoneDualQuaternions (bool enable) |
void | Ogre::v1::BaseInstanceBatchVTF::setBoneMatrixLookup (bool enable, size_t maxLookupTableInstances) |
Sets the state of the usage of bone matrix lookup. More... | |
void | Ogre::v1::InstancedEntity::setCustomParam (unsigned char idx, const Vector4 &newParam) |
Sets the custom parameter for this instance. More... | |
void | Ogre::v1::BaseInstanceBatchVTF::setForceOneWeight (bool enable) |
void | Ogre::v1::InstanceManager::setInstancesPerBatch (size_t instancesPerBatch) |
Raises an exception if trying to change it after creating the first InstancedEntity. More... | |
void | Ogre::v1::InstanceManager::setMaxLookupTableInstances (size_t maxLookupTableInstances) |
Sets the size of the lookup table for techniques supporting bone lookup table. More... | |
void | Ogre::v1::InstanceManager::setNumCustomParams (unsigned char numCustomParams) |
Sets the number of custom parameters per instance. More... | |
void | Ogre::v1::InstanceManager::setSetting (BatchSettingId id, bool enabled, IdString materialName=IdString()) |
Applies a setting for all batches using the same material_ existing ones and those that will be created in the future. More... | |
bool | Ogre::v1::InstanceBatch::setStatic (bool bStatic) |
Tells this batch to stop updating animations, positions, rotations, and display all it's active instances. More... | |
void | Ogre::v1::InstancedEntity::setTransformLookupNumber (uint16 num) |
Sets the transformation look up number. More... | |
void | Ogre::v1::BaseInstanceBatchVTF::setUseOneWeight (bool enable) |
bool | Ogre::v1::InstancedEntity::shareTransformWith (InstancedEntity *slave) |
Shares the entire transformation with another InstancedEntity. More... | |
void | Ogre::v1::InstancedEntity::stopSharingTransform () |
bool | Ogre::v1::BaseInstanceBatchVTF::useBoneDualQuaternions () const |
bool | Ogre::v1::BaseInstanceBatchVTF::useBoneMatrixLookup () const |
Tells whether to use bone matrix lookup. More... | |
bool | Ogre::v1::BaseInstanceBatchVTF::useOneWeight () const |
typedef vector<Vector4>::type Ogre::v1::InstanceBatch::CustomParamsVec |
typedef ConstVectorIterator<InstanceBatchVec> Ogre::v1::InstanceManager::InstanceBatchIterator |
typedef ConstMapIterator<InstanceBatchMap> Ogre::v1::InstanceManager::InstanceBatchMapIterator |
typedef vector<InstancedEntity*>::type Ogre::v1::InstanceBatch::InstancedEntityVec |
typedef vector<RaySceneQueryResultEntry>::type Ogre::RaySceneQueryResult |
typedef FastArray< Renderable * > Ogre::RenderableArray |
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.
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 |
enum Ogre::FaceGroupType |
Enumerator | |
---|---|
ShaderBased | Any SM 2.0+.
|
TextureVTF | Needs Vertex Texture Fetch & SM 3.0+.
|
HWInstancingBasic | Needs SM 3.0+ and HW instancing support.
|
HWInstancingVTF | Needs SM 3.0+, HW instancing support & VTF.
|
InstancingTechniquesCount |
There are two Instancing techniques that perform culling of their own: HW Basic HW VTF Frustum culling is highly parallelizable & scalable.
However, we first cull InstanceBatches & regular entities, then ask the culled InstanceBatches to perform their culling to the InstancedEntities they own. This results performance boost for skipping large amounts of instanced entities when the whole batch isn't visible. However, this also means threading frustum culling of instanced entities got harder.
Sync every time an InstanceBatchHW or InstanceBatchHW_VTF tries to frustum cull to delegate the job on worker threads. Considering there could be hundreds of InstanceBatches, this would cause a huge amount of thread synchronization overhead & context switches. This approach is not taken by Ogre.
Each thread after having culled all InstancedBatches & Entities, will parse the culled list to ask all MovableObjects to perform culling of their own. Entities will ignore this call (however they add to a small overhead for traversing them and calling a virtual function) while InstanceBatchHW & InstanceBatchHW_VTF will perform their own culling from within the multiple threads. This approach scales well with cores and only visible batches. However load balancing may be an issue for certain scenes: eg. an InstanceBatch with 5000 InstancedEntities in one thread, while the other three threads get one InstanceBatch each with 50 InstancedEntities. The first thread will have considerably more work to do than the other three. This approach is a good balance when compared to the first two. This is the approach taken by Ogre when INSTANCING_CULLING_THREADED is on
Don't multithread instanced entitites' frustum culling. Only the InstanceBatch & Entity's frustum culling will be threaded. This is what happens when INSTANCING_CULLING_SINGLE is on.
Whether INSTANCING_CULLING_THREADED improves or degrades performance depends highly on your scene.
When to use INSTANCING_CULLING_THREADED? If your scene makes intensive use of HW Basic and/or HW VTF instancing techniques. Note that threaded culling is performed in SCENE_STATIC instances too. The most advantage is seen when the instances per batch is very high and when doing many PASS_SCENE, which require frustum culling multiple times per frame (eg. pssm shadows, multiple light sources with shadows, very advanced compositing, etc)
Note that you can switch between methods at any time at runtime.
Enumerator | |
---|---|
INSTANCING_CULLING_SINGLETHREAD | |
INSTANCING_CULLING_THREADED |
enum Ogre::SceneType |
Ogre::v1::BaseInstanceBatchVTF::BaseInstanceBatchVTF | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceManager * | creator, | ||
MeshPtr & | meshReference, | ||
const MaterialPtr & | material, | ||
size_t | instancesPerBatch, | ||
const Mesh::IndexMap * | indexToBoneMap | ||
) |
|
inline |
Ogre::v1::InstanceBatch::InstanceBatch | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceManager * | creator, | ||
MeshPtr & | meshReference, | ||
const MaterialPtr & | material, | ||
size_t | instancesPerBatch, | ||
const Mesh::IndexMap * | indexToBoneMap | ||
) |
Ogre::v1::InstanceBatchHW::InstanceBatchHW | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceManager * | creator, | ||
MeshPtr & | meshReference, | ||
const MaterialPtr & | material, | ||
size_t | instancesPerBatch, | ||
const Mesh::IndexMap * | indexToBoneMap | ||
) |
Ogre::v1::InstanceBatchHW_VTF::InstanceBatchHW_VTF | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceManager * | creator, | ||
MeshPtr & | meshReference, | ||
const MaterialPtr & | material, | ||
size_t | instancesPerBatch, | ||
const Mesh::IndexMap * | indexToBoneMap | ||
) |
Ogre::v1::InstanceBatchShader::InstanceBatchShader | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceManager * | creator, | ||
MeshPtr & | meshReference, | ||
const MaterialPtr & | material, | ||
size_t | instancesPerBatch, | ||
const Mesh::IndexMap * | indexToBoneMap | ||
) |
Ogre::v1::InstanceBatchVTF::InstanceBatchVTF | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceManager * | creator, | ||
MeshPtr & | meshReference, | ||
const MaterialPtr & | material, | ||
size_t | instancesPerBatch, | ||
const Mesh::IndexMap * | indexToBoneMap | ||
) |
Ogre::v1::InstancedEntity::InstancedEntity | ( | IdType | id, |
ObjectMemoryManager * | objectMemoryManager, | ||
InstanceBatch * | batchOwner, | ||
uint32 | instanceID, | ||
BoneMemoryManager * | boneMemoryManager, | ||
InstancedEntity * | sharedTransformEntity = NULL |
||
) |
Ogre::v1::InstanceManager::InstanceManager | ( | IdString | customName, |
SceneManager * | sceneManager, | ||
const String & | meshName, | ||
const String & | groupName, | ||
InstancingTechnique | instancingTechnique, | ||
uint16 | instancingFlags, | ||
size_t | instancesPerBatch, | ||
unsigned short | subMeshIdx, | ||
bool | useBoneMatrixLookup = false |
||
) |
|
inline |
References FORCEINLINE.
|
inline |
References FORCEINLINE.
|
inline |
References FORCEINLINE.
|
inline |
References FORCEINLINE.
|
inline |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
void Ogre::v1::InstanceManager::_addDirtyStaticBatch | ( | InstanceBatch * | dirtyBatch | ) |
Called by an InstanceBatch when it requests their bounds to be updated for proper culling.
dirtyBatch | The batch which is dirty, usually same as caller. |
void Ogre::v1::InstanceManager::_addToDynamicBatchList | ( | InstanceBatch * | dynamicBatch | ) |
Kees the batch in the dynamic batch list so that it gets updated every frame.
_removeFromDynamicBatchList
dynamicBatch | The batch which is now static or unused, usually same as caller. |
void Ogre::v1::InstanceBatchHW_VTF::_boundsDirty | ( | void | ) |
void Ogre::v1::InstanceBatch::_defragmentBatch | ( | bool | optimizeCulling, |
InstancedEntityVec & | usedEntities, | ||
CustomParamsVec & | usedParams | ||
) |
optimizeCulling | true will call the DoCull version, false the NoCull |
usedEntities | Array of InstancedEntities to parent with this batch. Those reparented are removed from this input vector |
usedParams | Array of Custom parameters correlated with the InstancedEntities in usedEntities. They follow the fate of the entities in that vector. |
void Ogre::v1::InstanceBatch::_defragmentBatchDiscard | ( | void | ) |
const Vector4& Ogre::v1::InstanceBatch::_getCustomParam | ( | InstancedEntity * | instancedEntity, |
unsigned char | idx | ||
) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Tells that the list of entity instances with shared transforms has changed.
|
virtual |
Overloaded so we can register ourselves for updating our animations.
Reimplemented from Ogre::MovableObject.
|
virtual |
Node::_callMemoryChangeListeners
Reimplemented from Ogre::MovableObject.
|
virtual |
Called by SceneManager when it is telling we're a static MovableObject being dirty Don't call this directly.
Reimplemented from Ogre::MovableObject.
|
virtual |
Called by InstancedEntity(s) or directly to tell us we need to update the bounds Should only useful if this batch is static.
void Ogre::v1::InstanceManager::_removeFromDynamicBatchList | ( | InstanceBatch * | batch | ) |
Called when a previously dynamic InstanceBatch went static (.
batch | The batch which is now static or unused, usually same as caller. |
void Ogre::v1::InstanceBatch::_setCustomParam | ( | InstancedEntity * | instancedEntity, |
unsigned char | idx, | ||
const Vector4 & | newParam | ||
) |
void Ogre::v1::InstanceBatch::_setInstancesPerBatch | ( | size_t | instancesPerBatch | ) |
Raises an exception if trying to change it after being built.
|
inline |
Returns true if this technique supports skeletal animation.
void Ogre::v1::InstanceBatch::_updateBounds | ( | void | ) |
void Ogre::v1::InstanceManager::_updateDirtyBatches | ( | void | ) |
Called by SceneManager every frame.
void Ogre::v1::InstanceManager::_updateDirtyBatchesThread | ( | size_t | threadIdx | ) |
Called by SceneManager every frame from multiple threads.
void Ogre::v1::InstanceBatch::_updateEntitiesBoundsThread | ( | size_t | threadIdx | ) |
Updates the bounds of only our entities from multiple threads.
To be called before _updateBounds (which is single threaded).
threadIdx | The index of this thread, must be unique for each thread |
|
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::MovableObject.
|
virtual |
Overloaded to be able to updated the vertex texture.
Reimplemented from Ogre::MovableObject.
|
virtual |
Overloaded to visibility on a per unit basis and finally updated the vertex texture.
Reimplemented from Ogre::MovableObject.
|
inlinevirtual |
Do nothing, InstanceBatch takes care of this.
Reimplemented from Ogre::MovableObject.
|
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.
baseSubMesh | A sub mesh which the instances will be based upon from. |
|
virtual |
Reimplemented from Ogre::v1::InstanceBatch.
|
virtual |
Reimplemented from Ogre::v1::InstanceBatch.
|
virtual |
Reimplemented from Ogre::v1::InstanceBatch.
|
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.
renderOperation | The RenderOp to reference. |
Reimplemented in Ogre::v1::BaseInstanceBatchVTF, Ogre::v1::InstanceBatchShader, and Ogre::v1::InstanceBatchHW.
|
virtual |
Implements Ogre::v1::InstanceBatch.
|
virtual |
Implements Ogre::v1::InstanceBatch.
|
virtual |
Implements Ogre::v1::InstanceBatch.
|
virtual |
Implements Ogre::v1::InstanceBatch.
|
pure virtual |
Some techniques have a limit on how many instances can be done.
Sometimes even depends on the material being used.
baseSubMesh | The base submesh that will be using to build it. |
flags | Flags to pass to the InstanceManager. |
Implemented in Ogre::v1::InstanceBatchVTF, Ogre::v1::InstanceBatchHW_VTF, Ogre::v1::InstanceBatchShader, and Ogre::v1::InstanceBatchHW.
void Ogre::v1::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).
InstancedEntity* Ogre::v1::InstanceManager::createInstancedEntity | ( | const String & | materialName, |
SceneMemoryMgrTypes | sceneType = SCENE_DYNAMIC |
||
) |
Creates an InstancedEntity based on an existing InstanceManager (.
materialName | Material name |
managerName | Name of the instance manager |
InstancedEntity* Ogre::v1::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.
void Ogre::v1::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
optimizeCulling | When 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) |
|
inline |
const AxisAlignedBox& Ogre::v1::InstancedEntity::getBoundingBox | ( | void | ) | const |
const Vector4& Ogre::v1::InstancedEntity::getCustomParam | ( | unsigned char | idx | ) |
InstanceBatchIterator Ogre::v1::InstanceManager::getInstanceBatchIterator | ( | const String & | materialName, |
SceneMemoryMgrTypes | sceneType | ||
) | const |
Get non-updateable iterator over instance batches for given material.
|
inline |
Get non-updateable iterator over instance batches per material.
void Ogre::v1::InstanceBatch::getInstancedEntitiesInUse | ( | InstancedEntityVec & | outEntities, |
CustomParamsVec & | outParams | ||
) |
Fills the input vector with the instances that are currently being used or were requested.
Used for defragmentation,
|
inline |
References Ogre::SCENE_DYNAMIC.
|
virtual |
Implements Ogre::Renderable.
|
inlinevirtual |
size_t Ogre::v1::InstanceManager::getMaxOrBestNumInstancesPerBatch | ( | const 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.
materialName | Name of the material to base on |
suggestedSize | Suggested amount of instances per batch |
flags | Flags to pass to the InstanceManager. |
|
virtual |
Returns the type name of this object.
Implements Ogre::MovableObject.
|
virtual |
Implements Ogre::MovableObject.
|
inline |
Referenced by Ogre::v1::InstanceManagerCmp::operator()().
|
inline |
|
virtual |
Returns the number of world transform matrices this renderable requires.
Reimplemented from Ogre::Renderable.
|
virtual |
Returns the number of world transform matrices this renderable requires.
Reimplemented from Ogre::Renderable.
|
virtual |
Returns the number of world transform matrices this renderable requires.
Reimplemented from Ogre::Renderable.
|
inlinevirtual |
Implements Ogre::Renderable.
References Ogre::Renderable::getUserAny(), and Ogre::Renderable::setUserAny().
|
inline |
bool Ogre::v1::InstanceManager::getSetting | ( | BatchSettingId | id, |
IdString | materialName | ||
) | const |
If settings for the given material didn't exist, default value is returned.
|
inline |
This is used by our batch owner to get the closest entity's depth, returns infinity when not attached to a scene node.
|
virtual |
Gets the world transform matrix / matrices for this renderable object.
Implements Ogre::Renderable.
|
virtual |
Gets the world transform matrix / matrices for this renderable object.
Implements Ogre::Renderable.
|
virtual |
Gets the world transform matrix / matrices for this renderable object.
Implements Ogre::Renderable.
|
inline |
Returns true if settings were already created for the given material name.
If false is returned, it means getSetting will return default settings.
|
inline |
|
inlinevirtual |
|
inlinevirtual |
|
inline |
|
inline |
Returns true if it no instanced entity has been requested or all of them have been removed.
|
inlinevirtual |
|
inline |
Tells if the entity is in use.
FORCEINLINE void Ogre::v1::InstanceBatchHW_VTF::SendAllSingleTransformsToTexture::operator() | ( | const MovableObject * | mo | ) |
FORCEINLINE void Ogre::v1::InstanceBatchHW_VTF::SendAllAnimatedTransformsToTexture::operator() | ( | const MovableObject * | mo | ) |
FORCEINLINE void Ogre::v1::InstanceBatchHW_VTF::SendAllLUTToTexture::operator() | ( | const MovableObject * | mo | ) |
FORCEINLINE void Ogre::v1::InstanceBatchHW_VTF::SendAllDualQuatTexture::operator() | ( | const MovableObject * | mo | ) |
|
inline |
References Ogre::v1::InstanceManager::getName().
|
inline |
References Ogre::v1::InstanceManager::getName().
|
inline |
References Ogre::v1::InstanceManager::getName().
void Ogre::v1::InstanceBatch::removeInstancedEntity | ( | InstancedEntity * | instancedEntity | ) |
Removes an InstancedEntity from the scene retrieved with getNewInstancedEntity, putting back into a queue.
void Ogre::v1::InstanceManager::setBatchesAsStatic | ( | bool | bStatic | ) |
Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.
Some implementations allow to keep culling individual instances while others may not. This option makes the batch behave pretty much like Static Geometry, plust the GPU RAM memory advantages (less VRAM, less bandwidth) but no LOD support. Very useful for billboards of trees, repeating vegetation, modular buildings, etc.
|
inline |
|
inline |
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
void Ogre::v1::InstancedEntity::setCustomParam | ( | unsigned char | idx, |
const Vector4 & | newParam | ||
) |
Sets the custom parameter for this instance.
idx | of the param. In the range [0; InstanceManager::getNumCustomParams()) |
newParam | New parameter |
|
inline |
void Ogre::v1::InstanceManager::setInstancesPerBatch | ( | size_t | instancesPerBatch | ) |
Raises an exception if trying to change it after creating the first InstancedEntity.
instancesPerBatch | New instances per batch number |
void Ogre::v1::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.
maxLookupTableInstances | New size of the lookup table |
void Ogre::v1::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).
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.
numCustomParams | Number of custom parameters each instance will have. Default: 0 |
void Ogre::v1::InstanceManager::setSetting | ( | BatchSettingId | id, |
bool | enabled, | ||
IdString | materialName = IdString() |
||
) |
Applies a setting for all batches using the same material_ existing ones and those that will be created in the future.
id | Setting Id to setup, |
enabled | Boolean value. It's meaning depends on the id. |
materialName | When Blank, the setting is applied to all existing materials |
bool Ogre::v1::InstanceBatch::setStatic | ( | bool | bStatic | ) |
Tells this batch to stop updating animations, positions, rotations, and display all it's active instances.
Some implementations allow to keep culling individual instances while others may not. This option makes the batch behave pretty much like Static Geometry, plust the GPU RAM memory advantages (less VRAM, less bandwidth) but no LOD support. Very useful for billboards of trees, repeating vegetation, modular buildings, etc.
|
inline |
Sets the transformation look up number.
|
inline |
bool Ogre::v1::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"
slave | The InstancedEntity that should share with us and become our slave |
void Ogre::v1::InstancedEntity::stopSharingTransform | ( | ) |
|
inline |
|
inline |
Tells whether to use bone matrix lookup.
|
inline |
Mesh::IndexMap::const_iterator Ogre::v1::InstanceBatchHW_VTF::SendAllAnimatedTransformsToTexture::boneIdxEnd |
Mesh::IndexMap::const_iterator Ogre::v1::InstanceBatchHW_VTF::SendAllLUTToTexture::boneIdxEnd |
Mesh::IndexMap::const_iterator Ogre::v1::InstanceBatchHW_VTF::SendAllDualQuatTexture::boneIdxEnd |
Mesh::IndexMap::const_iterator Ogre::v1::InstanceBatchHW_VTF::SendAllAnimatedTransformsToTexture::boneIdxStart |
Mesh::IndexMap::const_iterator Ogre::v1::InstanceBatchHW_VTF::SendAllLUTToTexture::boneIdxStart |
Mesh::IndexMap::const_iterator Ogre::v1::InstanceBatchHW_VTF::SendAllDualQuatTexture::boneIdxStart |
float* RESTRICT_ALIAS Ogre::v1::InstanceBatchHW_VTF::TransformsToTexture::mDest |
size_t Ogre::v1::InstanceBatchHW_VTF::TransformsToTexture::mEntitiesPerPadding |
size_t Ogre::v1::InstanceBatchHW_VTF::TransformsToTexture::mFloatsPerEntity |
size_t Ogre::v1::InstanceBatchHW_VTF::SendAllSingleTransformsToTexture::mInstancesWritten |
size_t Ogre::v1::InstanceBatchHW_VTF::SendAllAnimatedTransformsToTexture::mInstancesWritten |
size_t Ogre::v1::InstanceBatchHW_VTF::SendAllDualQuatTexture::mInstancesWritten |
size_t Ogre::v1::InstanceBatchHW_VTF::TransformsToTexture::mWidthFloatsPadding |
vector<bool>::type Ogre::v1::InstanceBatchHW_VTF::SendAllLUTToTexture::mWrittenPositions |
bool Ogre::v1::InstanceManager::BatchSettings::setting[NUM_SETTINGS] |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |