OGRE
1.12.13
Object-Oriented Graphics Rendering Engine
|
This is technique requires true instancing hardware support. More...
#include <OgreInstanceBatchHW.h>
Public Member Functions | |
InstanceBatchHW (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName) | |
virtual | ~InstanceBatchHW () |
void | _boundsDirty (void) |
Overloaded so that we don't perform needless updates when in static mode. More... | |
virtual void | _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. More... | |
void | buildFrom (const SubMesh *baseSubMesh, const RenderOperation &renderOperation) |
size_t | calculateMaxNumInstances (const SubMesh *baseSubMesh, uint16 flags) const |
unsigned short | getNumWorldTransforms (void) const |
Returns the number of world transform matrices this renderable requires. More... | |
void | getWorldTransforms (Matrix4 *xform) const |
Gets the world transform matrix / matrices for this renderable object. More... | |
bool | isStatic () const |
Returns true if this batch was set as static. More... | |
void | setStaticAndUpdate (bool bStatic) |
Public Member Functions inherited from Ogre::InstanceBatch | |
InstanceBatch (InstanceManager *creator, MeshPtr &meshReference, const MaterialPtr &material, size_t instancesPerBatch, const Mesh::IndexMap *indexToBoneMap, const String &batchName) | |
virtual | ~InstanceBatch () |
void | _defragmentBatch (bool optimizeCulling, InstancedEntityVec &usedEntities, CustomParamsVec &usedParams) |
void | _defragmentBatchDiscard (void) |
const Vector4 & | _getCustomParam (InstancedEntity *instancedEntity, unsigned char idx) |
const Mesh::IndexMap * | _getIndexToBoneMap () const |
MeshPtr & | _getMeshRef () |
const Ogre::MeshPtr & | _getMeshReference (void) const |
void | _markTransformSharingDirty () |
Tells that the list of entity instances with shared transforms has changed. More... | |
void | _notifyCurrentCamera (Camera *cam) |
Internal method to notify the object of the camera to be used for the next rendering operation. More... | |
void | _setCustomParam (InstancedEntity *instancedEntity, unsigned char idx, const Vector4 &newParam) |
void | _setInstancesPerBatch (size_t instancesPerBatch) |
Raises an exception if trying to change it after being built. More... | |
bool | _supportsSkeletalAnimation () const |
Returns true if this technique supports skeletal animation. More... | |
void | _updateBounds (void) |
virtual RenderOperation | build (const SubMesh *baseSubMesh) |
Constructs all the data needed to use this batch, as well as the InstanceEntities. More... | |
InstancedEntity * | 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... | |
const AxisAlignedBox & | getBoundingBox (void) const |
Retrieves the local axis-aligned bounding box for this object. More... | |
Real | getBoundingRadius (void) const |
Retrieves the radius of the origin-centered bounding sphere for this object. More... | |
void | getInstancedEntitiesInUse (InstancedEntityVec &outEntities, CustomParamsVec &outParams) |
Fills the input vector with the instances that are currently being used or were requested. More... | |
const LightList & | getLights (void) const |
Gets a list of lights, ordered relative to how close they are to this renderable. More... | |
const MaterialPtr & | getMaterial (void) const |
Retrieves a weak reference to the material this renderable object uses. More... | |
const String & | getMovableType (void) const |
Returns the type name of this object. More... | |
void | getRenderOperation (RenderOperation &op) |
Gets the render operation required to send this object to the frame buffer. More... | |
Real | getSquaredViewDepth (const Camera *cam) const |
Returns the squared distance between the camera and this renderable. More... | |
Technique * | getTechnique (void) const |
Retrieves a pointer to the Material Technique this renderable object uses. More... | |
const Any & | getUserAny (void) const |
bool | isBatchFull (void) const |
bool | isBatchUnused (void) const |
Returns true if it no instanced entity has been requested or all of them have been removed. More... | |
void | removeInstancedEntity (InstancedEntity *instancedEntity) |
Removes an InstancedEntity from the scene retrieved with getNewInstancedEntity, putting back into a queue. More... | |
void | setUserAny (const Any &anything) |
virtual bool | useBoneWorldMatrices () const |
Tells whether world bone matrices need to be calculated. More... | |
void | 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. More... | |
Public Member Functions inherited from Ogre::Renderable | |
Renderable () | |
virtual | ~Renderable () |
Virtual destructor needed as class has virtual methods. More... | |
virtual void | _updateCustomGpuParameter (const GpuProgramParameters::AutoConstantEntry &constantEntry, GpuProgramParameters *params) const |
Update a custom GpuProgramParameters constant which is derived from information only this Renderable knows. More... | |
virtual bool | getCastsShadows (void) const |
Method which reports whether this renderable would normally cast a shadow. More... | |
const Vector4 & | getCustomParameter (size_t index) const |
Gets the custom value associated with this Renderable at the given index. More... | |
bool | getPolygonModeOverrideable (void) const |
Gets whether this renderable's chosen detail level can be overridden (downgraded) by the camera setting. More... | |
const RenderSystemDataPtr & | getRenderSystemData () const |
bool | getUseIdentityProjection (void) const |
Returns whether or not to use an 'identity' projection. More... | |
bool | getUseIdentityView (void) const |
Returns whether or not to use an 'identity' view. More... | |
const Any & | getUserAny (void) const |
UserObjectBindings & | getUserObjectBindings () |
Return an instance of user objects binding associated with this class. More... | |
const UserObjectBindings & | getUserObjectBindings () const |
Return an instance of user objects binding associated with this class. More... | |
bool | hasCustomParameter (size_t index) const |
Checks whether a custom value is associated with this Renderable at the given index. More... | |
virtual void | postRender (SceneManager *sm, RenderSystem *rsys) |
Called immediately after the Renderable has been rendered. More... | |
virtual bool | preRender (SceneManager *sm, RenderSystem *rsys) |
Called just prior to the Renderable being rendered. More... | |
void | removeCustomParameter (size_t index) |
Removes a custom value which is associated with this Renderable at the given index. More... | |
void | setCustomParameter (size_t index, const Vector4 &value) |
Sets a custom parameter for this Renderable, which may be used to drive calculations for this specific Renderable, like GPU program parameters. More... | |
void | setPolygonModeOverrideable (bool override) |
Sets whether this renderable's chosen detail level can be overridden (downgraded) by the camera setting. More... | |
void | setRenderSystemData (RenderSystemDataPtr val) const |
void | setUseIdentityProjection (bool useIdentityProjection) |
Sets whether or not to use an 'identity' projection. More... | |
void | setUseIdentityView (bool useIdentityView) |
Sets whether or not to use an 'identity' view. More... | |
void | setUserAny (const Any &anything) |
Public Member Functions inherited from Ogre::MovableObject | |
MovableObject () | |
Constructor. More... | |
MovableObject (const String &name) | |
Named constructor. More... | |
virtual | ~MovableObject () |
Virtual destructor - read Scott Meyers if you don't know why this is needed. More... | |
MovableObjectFactory * | _getCreator (void) const |
Get the creator of this object, if any (internal use only) More... | |
LightList * | _getLightList () |
Returns a pointer to the current list of lights for this object. More... | |
SceneManager * | _getManager (void) const |
Get the manager of this object, if any (internal use only) More... | |
virtual const Affine3 & | _getParentNodeFullTransform (void) const |
Return the full transformation of the parent sceneNode or the attachingPoint node. More... | |
virtual void | _notifyAttached (Node *parent, bool isTagPoint=false) |
Internal method called to notify the object that it has been attached to a node. More... | |
virtual void | _notifyCreator (MovableObjectFactory *fact) |
Notify the object of it's creator (internal use only) More... | |
virtual void | _notifyManager (SceneManager *man) |
Notify the object of it's manager (internal use only) More... | |
virtual void | _notifyMoved (void) |
Internal method called to notify the object that it has been moved. More... | |
virtual void | _releaseManualHardwareResources () |
Notifies the movable object that hardware resources were lost. More... | |
virtual void | _restoreManualHardwareResources () |
Notifies the movable object that hardware resources should be restored. More... | |
void | addQueryFlags (uint32 flags) |
As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this object. More... | |
void | addVisibilityFlags (uint32 flags) |
As setVisibilityFlags, except the flags passed as parameters are appended to the existing flags on this object. More... | |
void | detachFromParent (void) |
Detaches an object from a parent SceneNode or TagPoint, if attached. More... | |
Real | getBoundingRadiusScaled () const |
as getBoundingRadius, but with scaling applied More... | |
bool | getCastShadows (void) const |
Returns whether shadow casting is enabled for this object. More... | |
const AxisAlignedBox & | getDarkCapBounds (const Light &light, Real dirLightExtrusionDist) const override |
Gets the world space bounding box of the dark cap, as extruded using the light provided. More... | |
EdgeData * | getEdgeList (void) |
Returns details of the edges which might be used to determine a silhouette. More... | |
const AxisAlignedBox & | getLightCapBounds (void) const override |
Gets the world space bounding box of the light cap. More... | |
uint32 | getLightMask () const |
Get a bitwise mask which will filter the lights affecting this object. More... | |
Listener * | getListener (void) const |
Gets the current listener for this object. More... | |
const String & | getName (void) const |
Returns the name of this object. More... | |
Node * | getParentNode (void) const |
Returns the node to which this object is attached. More... | |
SceneNode * | getParentSceneNode (void) const |
Returns the scene node to which this object is attached. More... | |
Real | getPointExtrusionDistance (const Light *l) const |
Get the distance to extrude for a point/spot light. More... | |
virtual uint32 | getQueryFlags (void) const |
Returns the query flags relevant for this object. More... | |
bool | getReceivesShadows () |
Returns whether the Material of any Renderable that this MovableObject will add to the render queue will receive shadows. More... | |
Real | getRenderingDistance (void) const |
Gets the distance at which batches are no longer rendered. More... | |
Real | getRenderingMinPixelSize () const |
Returns the minimum pixel size an object needs to be in both screen axes in order to be rendered. More... | |
uint8 | getRenderQueueGroup (void) const |
Gets the queue group for this entity. More... | |
const ShadowRenderableList & | getShadowVolumeRenderableList (ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, size_t *indexBufferUsedSize, bool extrudeVertices, Real extrusionDist, unsigned long flags=0) |
Define a default implementation of method from ShadowCaster which implements no shadows. More... | |
virtual uint32 | getTypeFlags (void) const |
Get the 'type flags' for this MovableObject. More... | |
const Any & | getUserAny (void) const |
UserObjectBindings & | getUserObjectBindings () |
Return an instance of user objects binding associated with this class. More... | |
const UserObjectBindings & | getUserObjectBindings () const |
Return an instance of user objects binding associated with this class. More... | |
virtual uint32 | getVisibilityFlags (void) const |
Returns the visibility flags relevant for this object. More... | |
bool | getVisible (void) const |
Gets this object whether to be visible or not, if it has a renderable component. More... | |
virtual const AxisAlignedBox & | getWorldBoundingBox (bool derive=false) const |
Retrieves the axis-aligned bounding box for this object in world coordinates. More... | |
virtual const Sphere & | getWorldBoundingSphere (bool derive=false) const |
Retrieves the worldspace bounding sphere for this object. More... | |
bool | isAttached (void) const |
Returns true if this object is attached to a SceneNode or TagPoint. More... | |
bool | isDebugDisplayEnabled (void) const |
Gets whether debug display of this object is enabled. More... | |
virtual bool | 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. More... | |
bool | isParentTagPoint () const |
Gets whether the parent node is a TagPoint (or a SceneNode) More... | |
virtual bool | isVisible (void) const |
Returns whether or not this object is supposed to be visible or not. More... | |
const LightList & | queryLights (void) const |
Gets a list of lights, ordered relative to how close they are to this movable object. More... | |
void | removeQueryFlags (uint32 flags) |
As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this object. More... | |
void | removeVisibilityFlags (uint32 flags) |
As setVisibilityFlags, except the flags passed as parameters are removed from the existing flags on this object. More... | |
void | setCastShadows (bool enabled) |
Sets whether or not this object will cast shadows. More... | |
void | setDebugDisplayEnabled (bool enabled) |
Sets whether or not the debug display of this object is enabled. More... | |
void | setLightMask (uint32 lightMask) |
Set a bitwise mask which will filter the lights affecting this object. More... | |
void | setListener (Listener *listener) |
Sets a listener for this object. More... | |
void | setQueryFlags (uint32 flags) |
Sets the query flags for this object. More... | |
void | setRenderingDistance (Real dist) |
Sets the distance at which the object is no longer rendered. More... | |
void | setRenderingMinPixelSize (Real pixelSize) |
Sets the minimum pixel size an object needs to be in both screen axes in order to be rendered. More... | |
virtual void | setRenderQueueGroup (uint8 queueID) |
Sets the render queue group this entity will be rendered through. More... | |
virtual void | setRenderQueueGroupAndPriority (uint8 queueID, ushort priority) |
Sets the render queue group and group priority this entity will be rendered through. More... | |
void | setUserAny (const Any &anything) |
void | setVisibilityFlags (uint32 flags) |
Sets the visibility flags for this object. More... | |
void | setVisible (bool visible) |
Tells this object whether to be visible or not, if it has a renderable component. More... | |
Public Member Functions inherited from Ogre::ShadowCaster | |
virtual | ~ShadowCaster () |
virtual ShadowRenderableListIterator | getShadowVolumeRenderableIterator (ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, size_t *indexBufferUsedSize, bool extrudeVertices, Real extrusionDistance, unsigned long flags=0) |
bool | hasEdgeList () |
Returns whether the object has a valid edge list. More... | |
Public Member Functions inherited from Ogre::AnimableObject | |
AnimableObject () | |
virtual | ~AnimableObject () |
virtual AnimableValuePtr | createAnimableValue (const String &valueName) |
Create a reference-counted AnimableValuePtr for the named value. More... | |
const StringVector & | getAnimableValueNames (void) const |
Gets a list of animable value names for this object. More... | |
Additional Inherited Members | |
Public Types inherited from Ogre::InstanceBatch | |
typedef std::vector< Vector4 > | CustomParamsVec |
typedef std::vector< InstancedEntity * > | InstancedEntityVec |
Public Types inherited from Ogre::Renderable | |
enum | { DEFAULT_PRIORITY = 100 } |
typedef SharedPtr< RenderSystemData > | RenderSystemDataPtr |
Public Types inherited from Ogre::ShadowCaster | |
typedef std::vector< ShadowRenderable * > | ShadowRenderableList |
typedef VectorIterator< ShadowRenderableList > | ShadowRenderableListIterator |
Static Public Member Functions inherited from Ogre::MovableObject | |
static uint32 | getDefaultQueryFlags () |
Get the default query flags for all future MovableObject instances. More... | |
static uint32 | getDefaultVisibilityFlags () |
Get the default visibility flags for all future MovableObject instances. More... | |
static void | setDefaultQueryFlags (uint32 flags) |
Set the default query flags for all future MovableObject instances. More... | |
static void | setDefaultVisibilityFlags (uint32 flags) |
Set the default visibility flags for all future MovableObject instances. More... | |
Static Public Member Functions inherited from Ogre::ShadowCaster | |
static void | clearShadowRenderableList (ShadowRenderableList &shadowRenderables) |
Common implementation of releasing shadow renderables. More... | |
static void | extrudeVertices (const HardwareVertexBufferSharedPtr &vertexBuffer, size_t originalVertexCount, const Vector4 &lightPos, Real extrudeDist) |
Utility method for extruding vertices based on a light. More... | |
This is technique requires true instancing hardware support.
Basically it creates a cloned vertex buffer from the original, with an extra buffer containing 3 additional TEXCOORDS (12 bytes) repeated as much as the instance count. That will be used for each instance data.