This class defines the interface that must be implemented by shadow casters.
More...
#include <OgreShadowCaster.h>
|
virtual void | extrudeBounds (AxisAlignedBox &box, const Vector4 &lightPos, Real extrudeDist) const |
| Utility method for extruding a bounding box. More...
|
|
virtual void | generateShadowVolume (EdgeData *edgeData, const HardwareIndexBufferSharedPtr &indexBuffer, size_t &indexBufferUsedSize, const Light *light, ShadowRenderableList &shadowRenderables, unsigned long flags) |
| Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it. More...
|
|
Real | getExtrusionDistance (const Vector3 &objectPos, const Light *light) const |
| Helper method for calculating extrusion distance. More...
|
|
virtual void | updateEdgeListLightFacing (EdgeData *edgeData, const Vector4 &lightPos) |
| Tells the caster to perform the tasks necessary to update the edge data's light listing. More...
|
|
This class defines the interface that must be implemented by shadow casters.
Definition at line 117 of file OgreShadowCaster.h.
virtual Ogre::ShadowCaster::~ShadowCaster |
( |
| ) |
|
|
inlinevirtual |
Utility method for extruding a bounding box.
- Parameters
-
box | Original bounding box, will be updated in-place. |
lightPos | 4D light position in object space, when w=0.0f this represents a directional light. |
extrudeDist | The distance to extrude. |
Utility method for extruding vertices based on a light.
- Parameters
-
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. |
Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it.
- Parameters
-
edgeData | The edge information to use. |
indexBuffer | The buffer into which to write data into; current contents are assumed to be discardable. |
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. |
light | The light, mainly for type info as silhouette calculations should already have been done in updateEdgeListLightFacing |
shadowRenderables | A list of shadow renderables which has already been constructed but will need populating with details of the index ranges to be used. |
flags | Additional controller flags, see ShadowRenderableFlags. |
virtual bool Ogre::ShadowCaster::getCastShadows |
( |
void |
| ) |
const |
|
pure virtual |
virtual const AxisAlignedBox& Ogre::ShadowCaster::getDarkCapBounds |
( |
const Light & |
light, |
|
|
Real |
dirLightExtrusionDist |
|
) |
| const |
|
pure virtual |
Gets the world space bounding box of the dark cap, as extruded using the light provided.
Implemented in Ogre::MovableObject.
virtual EdgeData* Ogre::ShadowCaster::getEdgeList |
( |
void |
| ) |
|
|
pure virtual |
Real Ogre::ShadowCaster::getExtrusionDistance |
( |
const Vector3 & |
objectPos, |
|
|
const Light * |
light |
|
) |
| const |
|
protected |
Helper method for calculating extrusion distance.
virtual const AxisAlignedBox& Ogre::ShadowCaster::getLightCapBounds |
( |
void |
| ) |
const |
|
pure virtual |
virtual Real Ogre::ShadowCaster::getPointExtrusionDistance |
( |
const Light * |
l | ) |
const |
|
pure virtual |
Gets an iterator over the renderables required to render the shadow volume.
- Parameters
-
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. |
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. |
Implemented in Ogre::Entity, Ogre::MovableObject, Ogre::StaticGeometry::Region, and Ogre::ManualObject.
virtual const AxisAlignedBox& Ogre::ShadowCaster::getWorldBoundingBox |
( |
bool |
derive = false | ) |
const |
|
pure virtual |
virtual bool Ogre::ShadowCaster::hasEdgeList |
( |
void |
| ) |
|
|
pure virtual |
virtual void Ogre::ShadowCaster::updateEdgeListLightFacing |
( |
EdgeData * |
edgeData, |
|
|
const Vector4 & |
lightPos |
|
) |
| |
|
protectedvirtual |
Tells the caster to perform the tasks necessary to update the edge data's light listing.
Can be overridden if the subclass needs to do additional things.
- Parameters
-
edgeData | The edge information to update. |
lightPos | 4D vector representing the light, a directional light has w=0.0. |
The documentation for this class was generated from the following file: