28 #ifndef __ShadowCaster_H__
29 #define __ShadowCaster_H__
72 void getWorldTransforms(
Matrix4* xform)
const = 0;
114 virtual bool getCastShadows(
void)
const = 0;
117 virtual EdgeData* getEdgeList(
void) = 0;
119 virtual bool hasEdgeList(
void) = 0;
122 virtual const AxisAlignedBox& getWorldBoundingBox(
bool derive =
false)
const = 0;
149 bool extrudeVertices,
Real extrusionDistance,
unsigned long flags = 0 ) = 0;
171 size_t originalVertexCount,
const Vector4& lightPos,
Real extrudeDist);
173 virtual Real getPointExtrusionDistance(
const Light* l)
const = 0;
176 Real getExtrusionDistance(
const Vector3& objectPos,
const Light* light)
const;
184 virtual void updateEdgeListLightFacing(
EdgeData* edgeData,
200 virtual void generateShadowVolume(
EdgeData* edgeData,
210 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