28 #ifndef __ShadowCaster_H__
29 #define __ShadowCaster_H__
73 void getWorldTransforms(
Matrix4* xform)
const = 0;
122 virtual bool getCastShadows(
void)
const = 0;
125 virtual EdgeData* getEdgeList(
void) = 0;
127 virtual bool hasEdgeList(
void) = 0;
130 virtual const AxisAlignedBox& getWorldBoundingBox(
bool derive =
false)
const = 0;
157 bool extrudeVertices,
Real extrusionDistance,
unsigned long flags = 0 ) = 0;
179 size_t originalVertexCount,
const Vector4& lightPos,
Real extrudeDist);
181 virtual Real getPointExtrusionDistance(
const Light* l)
const = 0;
184 Real getExtrusionDistance(
const Vector3& objectPos,
const Light* light)
const;
192 virtual void updateEdgeListLightFacing(
EdgeData* edgeData,
208 virtual void generateShadowVolume(
EdgeData* edgeData,
218 Real extrudeDist)
const;
A viewpoint from which the scene will be rendered.
Class encapsulating a standard 4x4 homogeneous matrix.
void setMaterial(const MaterialPtr &mat)
Set the material to be used by the shadow, should be set by the caller before adding to a render queu...
float Real
Software floating point type.
ShadowRenderable * mLightCap
ShadowRenderableFlags
A set of flags that can be used to influence ShadowRenderable creation.
Shared pointer implementation used to share index buffers.
A 3D box aligned with the x/y/z axes.
Abstract class defining the interface all renderable objects must implement.
Shared pointer implementation used to share index buffers.
Representation of a dynamic light source in the scene.
virtual bool isVisible(void) const
Should this ShadowRenderable be treated as visible?
RenderOperation * getRenderOperationForUpdate(void)
Get the internal render operation for set up.
ShadowTechnique
An enumeration of broad shadow techniques.
VectorIterator< ShadowRenderableList > ShadowRenderableListIterator
Class which represents the renderable aspects of a set of shadow volume faces.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Real getSquaredViewDepth(const Camera *) const
Overridden from Renderable.
virtual ~ShadowRenderable()
const MaterialPtr & getMaterial(void) const
Overridden from Renderable.
Standard 3-dimensional vector.
bool isLightCapSeparate(void) const
Does this renderable require a separate light cap?
'New' rendering operation using vertex buffers.
This class contains the information required to describe the edge connectivity of a given set of vert...
For shadow volume techniques only, indicates volume is extruded to infinity.
RenderOperation mRenderOp
For shadow volume techniques only, generate a dark cap on the volume.
4-dimensional homogeneous vector.
Specialisation of SharedPtr to allow SharedPtr to be assigned to MaterialPtr.
This class defines the interface that must be implemented by shadow casters.
Concrete IteratorWrapper for nonconst access to the underlying container.
void getRenderOperation(RenderOperation &op)
Overridden from Renderable.
For shadow volume techniques only, generate a light cap on the volume.
ShadowRenderable * getLightCapRenderable(void)
Get the light cap version of this renderable.
vector< ShadowRenderable * >::type ShadowRenderableList