vtkShadowMapPass Class Reference

#include <vtkShadowMapPass.h>

Inheritance diagram for vtkShadowMapPass:

Inheritance graph
[legend]
Collaboration diagram for vtkShadowMapPass:

Collaboration graph
[legend]

List of all members.


Detailed Description

Implement a shadow mapping render pass.

Render the opaque polygonal geometry of a scene with shadow maps (a technique to render hard shadows in hardware).

This pass expects an initialized depth buffer and color buffer. Initialized buffers means they have been cleared with farest z-value and background color/gradient/transparent color. An opaque pass may have been performed right after the initialization.

Its delegate is usually set to a vtkOpaquePass.

Implementation:
The first pass of the algorithm is to generate a shadow map per light (depth map from the light point of view) by rendering the opaque objects with the OCCLUDER property keys. The second pass is to render the opaque objects with the RECEIVER keys.
See also:
vtkRenderPass, vtkOpaquePass
Tests:
vtkShadowMapPass (Tests)

Definition at line 62 of file vtkShadowMapPass.h.


Public Types

typedef vtkRenderPass Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
virtual void Render (const vtkRenderState *s)
void ReleaseGraphicsResources (vtkWindow *w)
virtual vtkRenderPassGetOpaquePass ()
virtual void SetOpaquePass (vtkRenderPass *opaquePass)
virtual void SetResolution (unsigned int)
virtual unsigned int GetResolution ()
virtual void SetPolygonOffsetFactor (float)
virtual float GetPolygonOffsetFactor ()
virtual void SetPolygonOffsetUnits (float)
virtual float GetPolygonOffsetUnits ()

Static Public Member Functions

static vtkShadowMapPassNew ()
static int IsTypeOf (const char *type)
static vtkShadowMapPassSafeDownCast (vtkObject *o)
static vtkInformationIntegerKeyOCCLUDER ()
static vtkInformationIntegerKeyRECEIVER ()

Protected Member Functions

 vtkShadowMapPass ()
virtual ~vtkShadowMapPass ()
void BuildCameraLight (vtkLight *light, vtkCamera *camera)
void BuildSpotLightIntensityMap ()
void CheckSupport (vtkOpenGLRenderWindow *w)

Protected Attributes

vtkRenderPassOpaquePass
unsigned int Resolution
float PolygonOffsetFactor
float PolygonOffsetUnits
vtkFrameBufferObjectFrameBufferObject
vtkShadowMapPassTextures * ShadowMaps
vtkShadowMapPassLightCameras * LightCameras
vtkShaderProgram2Program
vtkTextureObjectIntensityMap
vtkSampleFunctionIntensitySource
vtkImageExportIntensityExporter
vtkImplicitHaloHalo
vtkTimeStamp LastRenderTime

Member Typedef Documentation

Reimplemented from vtkRenderPass.

Definition at line 66 of file vtkShadowMapPass.h.


Constructor & Destructor Documentation

vtkShadowMapPass::vtkShadowMapPass (  )  [protected]

Default constructor. DelegatetPass is set to NULL.

virtual vtkShadowMapPass::~vtkShadowMapPass (  )  [protected, virtual]

Destructor.


Member Function Documentation

static vtkShadowMapPass* vtkShadowMapPass::New (  )  [static]

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkObject.

virtual const char* vtkShadowMapPass::GetClassName (  )  [virtual]

Reimplemented from vtkRenderPass.

static int vtkShadowMapPass::IsTypeOf ( const char *  name  )  [static]

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkRenderPass.

virtual int vtkShadowMapPass::IsA ( const char *  name  )  [virtual]

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeRevisionMacro found in vtkSetGet.h.

Reimplemented from vtkRenderPass.

static vtkShadowMapPass* vtkShadowMapPass::SafeDownCast ( vtkObject o  )  [static]

Reimplemented from vtkRenderPass.

void vtkShadowMapPass::PrintSelf ( ostream &  os,
vtkIndent  indent 
) [virtual]

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkRenderPass.

static vtkInformationIntegerKey* vtkShadowMapPass::OCCLUDER (  )  [static]

If this key exists on the PropertyKeys of a prop, the prop is viewed as a light occluder (ie it casts shadows). This key is not mutually exclusive with the RECEIVER() key.

static vtkInformationIntegerKey* vtkShadowMapPass::RECEIVER (  )  [static]

virtual void vtkShadowMapPass::Render ( const vtkRenderState s  )  [virtual]

Perform rendering according to a render state s.

Precondition:
s_exists: s!=0

Implements vtkRenderPass.

void vtkShadowMapPass::ReleaseGraphicsResources ( vtkWindow w  )  [virtual]

Release graphics resources and ask components to release their own resources.

Precondition:
w_exists: w!=0

Reimplemented from vtkRenderPass.

virtual vtkRenderPass* vtkShadowMapPass::GetOpaquePass (  )  [virtual]

Delegate for rendering the opaque polygonal geometry. If it is NULL, nothing will be rendered and a warning will be emitted. It is usually set to a vtkTranslucentPass. Initial value is a NULL pointer.

virtual void vtkShadowMapPass::SetOpaquePass ( vtkRenderPass opaquePass  )  [virtual]

Delegate for rendering the opaque polygonal geometry. If it is NULL, nothing will be rendered and a warning will be emitted. It is usually set to a vtkTranslucentPass. Initial value is a NULL pointer.

virtual void vtkShadowMapPass::SetResolution ( unsigned  int  )  [virtual]

Set/Get the number of pixels in each dimension of the shadow maps (shadow maps are square). Initial value is 256. The greater the better. Resolution does not have to be a power-of-two value.

virtual unsigned int vtkShadowMapPass::GetResolution (  )  [virtual]

Set/Get the number of pixels in each dimension of the shadow maps (shadow maps are square). Initial value is 256. The greater the better. Resolution does not have to be a power-of-two value.

virtual void vtkShadowMapPass::SetPolygonOffsetFactor ( float   )  [virtual]

Factor used to scale the maximum depth slope of a polygon (definition from OpenGL 2.1 spec section 3.5.5 "Depth Offset" page 112). This is used during the creation the shadow maps (not during mapping of the shadow maps onto the geometry) Play with this value and PolygonOffsetUnits to solve self-shadowing. Valid values can be either positive or negative. Initial value is 1.1f (recommended by the nVidia presentation about Shadow Mapping by Cass Everitt). 3.1f works well with the regression test.

virtual float vtkShadowMapPass::GetPolygonOffsetFactor (  )  [virtual]

Factor used to scale the maximum depth slope of a polygon (definition from OpenGL 2.1 spec section 3.5.5 "Depth Offset" page 112). This is used during the creation the shadow maps (not during mapping of the shadow maps onto the geometry) Play with this value and PolygonOffsetUnits to solve self-shadowing. Valid values can be either positive or negative. Initial value is 1.1f (recommended by the nVidia presentation about Shadow Mapping by Cass Everitt). 3.1f works well with the regression test.

virtual void vtkShadowMapPass::SetPolygonOffsetUnits ( float   )  [virtual]

Factor used to scale an implementation dependent constant that relates to the usable resolution of the depth buffer (definition from OpenGL 2.1 spec section 3.5.5 "Depth Offset" page 112). This is used during the creation the shadow maps (not during mapping of the shadow maps onto the geometry) Play with this value and PolygonOffsetFactor to solve self-shadowing. Valid values can be either positive or negative. Initial value is 4.0f (recommended by the nVidia presentation about Shadow Mapping by Cass Everitt). 10.0f works well with the regression test.

virtual float vtkShadowMapPass::GetPolygonOffsetUnits (  )  [virtual]

Factor used to scale an implementation dependent constant that relates to the usable resolution of the depth buffer (definition from OpenGL 2.1 spec section 3.5.5 "Depth Offset" page 112). This is used during the creation the shadow maps (not during mapping of the shadow maps onto the geometry) Play with this value and PolygonOffsetFactor to solve self-shadowing. Valid values can be either positive or negative. Initial value is 4.0f (recommended by the nVidia presentation about Shadow Mapping by Cass Everitt). 10.0f works well with the regression test.

void vtkShadowMapPass::BuildCameraLight ( vtkLight light,
vtkCamera camera 
) [protected]

Build a camera from spot light parameters.

Precondition:
light_exists: light!=0

light_is_spotlight: light->LightTypeIsSceneLight() && light->GetPositional() && light->GetConeAngle()<180.0

camera_exists: camera!=0

void vtkShadowMapPass::BuildSpotLightIntensityMap (  )  [protected]

Build the intensity map.

void vtkShadowMapPass::CheckSupport ( vtkOpenGLRenderWindow w  )  [protected]

Check if shadow mapping is supported by the current OpenGL context.

Precondition:
w_exists: w!=0


Member Data Documentation

Definition at line 150 of file vtkShadowMapPass.h.

unsigned int vtkShadowMapPass::Resolution [protected]

Definition at line 151 of file vtkShadowMapPass.h.

Definition at line 153 of file vtkShadowMapPass.h.

Definition at line 154 of file vtkShadowMapPass.h.

Graphics resources.

Definition at line 157 of file vtkShadowMapPass.h.

vtkShadowMapPassTextures* vtkShadowMapPass::ShadowMaps [protected]

Definition at line 159 of file vtkShadowMapPass.h.

vtkShadowMapPassLightCameras* vtkShadowMapPass::LightCameras [protected]

Definition at line 160 of file vtkShadowMapPass.h.

Definition at line 161 of file vtkShadowMapPass.h.

Definition at line 163 of file vtkShadowMapPass.h.

Definition at line 166 of file vtkShadowMapPass.h.

Definition at line 167 of file vtkShadowMapPass.h.

Definition at line 168 of file vtkShadowMapPass.h.

Definition at line 170 of file vtkShadowMapPass.h.


The documentation for this class was generated from the following file:

Generated on Wed Jun 3 19:33:55 2009 for VTK by  doxygen 1.5.6