OGRE
1.12.13
Object-Oriented Graphics Rendering Engine
|
This class defines the interface that must be implemented by shadow casters. More...
#include <OgreShadowCaster.h>
Public Types | |
typedef std::vector< ShadowRenderable * > | ShadowRenderableList |
typedef VectorIterator< ShadowRenderableList > | ShadowRenderableListIterator |
Public Member Functions | |
virtual | ~ShadowCaster () |
virtual bool | getCastShadows (void) const =0 |
Returns whether or not this object currently casts a shadow. More... | |
virtual const AxisAlignedBox & | getDarkCapBounds (const Light &light, Real dirLightExtrusionDist) const =0 |
Gets the world space bounding box of the dark cap, as extruded using the light provided. More... | |
virtual EdgeData * | getEdgeList (void)=0 |
Returns details of the edges which might be used to determine a silhouette. More... | |
virtual const AxisAlignedBox & | getLightCapBounds (void) const =0 |
Gets the world space bounding box of the light cap. More... | |
virtual Real | getPointExtrusionDistance (const Light *l) const =0 |
Get the distance to extrude for a point/spot light. More... | |
virtual ShadowRenderableListIterator | getShadowVolumeRenderableIterator (ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, size_t *indexBufferUsedSize, bool extrudeVertices, Real extrusionDistance, unsigned long flags=0) |
virtual const ShadowRenderableList & | getShadowVolumeRenderableList (ShadowTechnique shadowTechnique, const Light *light, HardwareIndexBufferSharedPtr *indexBuffer, size_t *indexBufferUsedSize, bool extrudeVertices, Real extrusionDistance, unsigned long flags=0) |
Gets an list of the renderables required to render the shadow volume. More... | |
virtual const AxisAlignedBox & | getWorldBoundingBox (bool derive=false) const =0 |
Get the world bounding box of the caster. More... | |
bool | hasEdgeList () |
Returns whether the object has a valid edge list. More... | |
Static Public Member Functions | |
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 class defines the interface that must be implemented by shadow casters.
typedef std::vector<ShadowRenderable*> Ogre::ShadowCaster::ShadowRenderableList |
|
inlinevirtual |
|
pure virtual |
Returns whether or not this object currently casts a shadow.
Implemented in Ogre::MovableObject.
|
pure virtual |
Returns details of the edges which might be used to determine a silhouette.
Implemented in Ogre::Entity, Ogre::ManualObject, Ogre::StaticGeometry::Region, and Ogre::MovableObject.
|
inline |
Returns whether the object has a valid edge list.
|
pure virtual |
Get the world bounding box of the caster.
Implemented in Ogre::Entity, Ogre::MovableObject, and Ogre::PortalBase.
|
pure virtual |
Gets the world space bounding box of the light cap.
Implemented in Ogre::MovableObject.
|
pure virtual |
Gets the world space bounding box of the dark cap, as extruded using the light provided.
Implemented in Ogre::MovableObject.
|
inlinevirtual |
Gets an list of the renderables required to render the shadow volume.
shadowTechnique | The technique being used to generate the shadow. |
light | The light to generate the shadow from. |
indexBuffer | The index buffer to build the renderables into, the current contents are assumed to be disposable. |
indexBufferUsedSize | If the rest of buffer is enough than it would be locked with HBL_NO_OVERWRITE semantic and indexBufferUsedSize would be increased, otherwise HBL_DISCARD would be used and indexBufferUsedSize would be reset. |
extrudeVertices | If true , this means this class should extrude the vertices of the back of the volume in software. If false, it will not be done (a vertex program is assumed). |
extrusionDistance | The distance to extrude the shadow volume. |
flags | Technique-specific flags, see ShadowRenderableFlags. |
Reimplemented in Ogre::Entity, Ogre::StaticGeometry::Region, Ogre::ManualObject, and Ogre::MovableObject.
|
inlinevirtual |
|
static |
Common implementation of releasing shadow renderables.
|
static |
Utility method for extruding vertices based on a light.
vertexBuffer | The vertex buffer containing ONLY xyz position values, which must be originalVertexCount * 2 * 3 floats long. |
originalVertexCount | The count of the original number of vertices, i.e. the number in the mesh, not counting the doubling which has already been done (by VertexData::prepareForShadowVolume) to provide the extruded area of the buffer. |
lightPos | 4D light position in object space, when w=0.0f this represents a directional light. |
extrudeDist | The distance to extrude. |
Get the distance to extrude for a point/spot light.
Implemented in Ogre::MovableObject.