#include <MRenderShadowData.h>
The shadow map can be changed by instanciating a MRenderCallback and overriding shadowCastCallback(). When this is invoked, a MRenderShadowData is passed as an argument; the depthMaps and midDistMaps members can then be changed by this API. Methods and data are provided to assist in transforming back and forth from world space to z buffer space. Paint Effects and Fur are two examples which use this mechanism to change the shadow map.
To prevent self shadowing, Maya uses a mid distance map to resolve the ambiguity. Details of this technique can be obtained from Graphics Gems III, "The Shadow Depth Map Revisited".
Public Types | |
enum | LightType { kInvalid, kPoint, kDirectional, kSpot } |
Light Types. More... | |
Public Member Functions | |
MRenderShadowData () | |
void | worldToZbuffer (const MFloatPoint &worldPoint, MFloatPoint &screenPoint) const |
void | zbufferToWorld (const MFloatPoint &screenPoint, MFloatPoint &worldPoint) const |
Public Attributes | |
bool | perspective |
set if the light has a perspective projection | |
bool | useMidDistMap |
set if the light generates a depth and midDist map | |
LightType | lightType |
the type of light the shadow map is generated for | |
unsigned short | shadowResX |
the x resolution of shadow map | |
unsigned short | shadowResY |
the y resolution of the shadow map | |
MFloatPoint | lightPosition |
position of the light in world space | |
MFloatMatrix | projectionMatrix |
projection matrix for the light | |
MFloatMatrix | perspectiveMatrix |
perspective matrix for the light | |
float * | depthMaps |
the output depth map | |
float * | midDistMaps |
the output mid distance map |
MRenderShadowData::MRenderShadowData | ( | ) |
Default Constructor
void MRenderShadowData::worldToZbuffer | ( | const MFloatPoint & | inPoint, | |
MFloatPoint & | outPoint | |||
) | const |
Converts world space point to shadow map. Shadow depth is stored in inPoint.z
[in] | inPoint | The original point in world space |
[out] | outPoint | The converted point in shadow map |
void MRenderShadowData::zbufferToWorld | ( | const MFloatPoint & | inPoint, | |
MFloatPoint & | outPoint | |||
) | const |
Converts shadow map point to world space. Shadow depth is stored in inPoint.z.
[in] | inPoint | The original point in shadow map |
[out] | outPoint | The converted point in world space |
Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. | Generated with 1.5.6 |