28 #ifndef __ShadowCaster_H__
29 #define __ShadowCaster_H__
72 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;
163 bool extrudeVertices,
Real extrusionDistance,
unsigned long flags = 0 ) = 0;
189 size_t originalVertexCount,
const Vector4& lightPos,
Real extrudeDist);
191 virtual Real getPointExtrusionDistance(
const Light* l)
const = 0;
194 Real getExtrusionDistance(
const Vector3& objectPos,
const Light* light)
const;
203 virtual void updateEdgeListLightFacing(
EdgeData* edgeData,
228 virtual void generateShadowVolume(
EdgeData* edgeData,
241 Real extrudeDist)
const;
250 #endif // __ShadowCaster_H__
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 vertex buffers.
A 3D box aligned with the x/y/z axes.
Abstract class defining the interface all renderable objects must implement.
ShadowRenderable()
Used only if isLightCapSeparate == true.
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
Returns the camera-relative squared depth of this renderable.
virtual ~ShadowRenderable()
const MaterialPtr & getMaterial(void) const
Retrieves a weak reference to the material this renderable object uses.
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.
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)
Gets the render operation required to send this object to the frame buffer.
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