#include <OgreShadowCameraSetupLiSPSM.h>
Public Member Functions | |
| LiSPSMShadowCameraSetup (void) | |
| Default constructor. | |
| virtual | ~LiSPSMShadowCameraSetup (void) |
| Default destructor. | |
| virtual void | getShadowCamera (const SceneManager *sm, const Camera *cam, const Viewport *vp, const Light *light, Camera *texCam) const |
| Returns a LiSPSM shadow camera. | |
| virtual void | setOptimalAdjustFactor (Real n) |
| Adjusts the parameter n to produce optimal shadows. | |
| virtual Real | getOptimalAdjustFactor () const |
| Get the parameter n used to produce optimal shadows. | |
| virtual void | setUseSimpleOptimalAdjust (bool s) |
| Sets whether or not to use a slightly simpler version of the camera near point derivation (default is true). | |
| virtual bool | getUseSimpleOptimalAdjust () const |
| Gets whether or not to use a slightly simpler version of the camera near point derivation (default is true). | |
| void | setUseAggressiveFocusRegion (bool aggressive) |
| Sets whether or not to use the more agressive approach to deciding on the focus region or not. | |
| bool | getUseAggressiveFocusRegion () const |
Protected Member Functions | |
| Matrix4 | calculateLiSPSM (const Matrix4 &lightSpace, const PointListBody &bodyB, const PointListBody &bodyLVS, const SceneManager &sm, const Camera &cam, const Light &light) const |
| Calculates the LiSPSM projection matrix P. | |
| Real | calculateNOpt (const Matrix4 &lightSpace, const AxisAlignedBox &bodyBABB_ls, const PointListBody &bodyLVS, const Camera &cam) const |
| Calculates the distance between camera position and near clipping plane. | |
| Real | calculateNOptSimple (const PointListBody &bodyLVS, const Camera &cam) const |
| Calculates a simpler version than the one above. | |
| Vector3 | calculateZ0_ls (const Matrix4 &lightSpace, const Vector3 &e, Real bodyB_zMax_ls, const Camera &cam) const |
| Calculates the visible point on the near plane for the n_opt calculation. | |
| Matrix4 | buildFrustumProjection (Real left, Real right, Real bottom, Real top, Real near, Real far) const |
| Builds a frustum matrix. | |
| void | calculateShadowMappingMatrix (const SceneManager &sm, const Camera &cam, const Light &light, Matrix4 *out_view, Matrix4 *out_proj, Camera *out_cam) const |
| Calculates the standard shadow mapping matrix. | |
| void | calculateB (const SceneManager &sm, const Camera &cam, const Light &light, const AxisAlignedBox &sceneBB, PointListBody *out_bodyB) const |
| Calculates the intersection bodyB. | |
| void | calculateLVS (const SceneManager &sm, const Camera &cam, const Light &light, const AxisAlignedBox &sceneBB, PointListBody *out_LVS) const |
| Calculates the bodyLVS. | |
| Vector3 | getLSProjViewDir (const Matrix4 &lightSpace, const Camera &cam, const PointListBody &bodyLVS) const |
| Returns the projection view direction. | |
| Vector3 | getNearCameraPoint_ws (const Matrix4 &viewMatrix, const PointListBody &bodyLVS) const |
| Returns a valid near-point seen by the camera. | |
| Matrix4 | transformToUnitCube (const Matrix4 &m, const PointListBody &body) const |
| Transforms a given body to the unit cube (-1,-1,-1) / (+1,+1,+1) with a specific shadow matrix enabled. | |
| Matrix4 | buildViewMatrix (const Vector3 &pos, const Vector3 &dir, const Vector3 &up) const |
| Builds a view matrix. | |
Protected Attributes | |
| Real | mOptAdjustFactor |
| Warp factor adjustment. | |
| bool | mUseSimpleNOpt |
| Use simple nopt derivation? | |
| Frustum * | mTempFrustum |
| Temporary preallocated frustum to set up a projection matrix in calculateShadowMappingMatrix(). | |
| Camera * | mLightFrustumCamera |
| Temporary preallocated camera to set up a light frustum for clipping in calculateB. | |
| bool | mLightFrustumCameraCalculated |
| bool | mUseAggressiveRegion |
| Use tighter focus region? | |
| ConvexBody | mBodyB |
| PointListBody | mPointListBodyB |
| PointListBody | mPointListBodyLVS |
Static Protected Attributes | |
| static const Matrix4 | msNormalToLightSpace |
| Transform to or from light space as defined by Wimmer et al. | |
| static const Matrix4 | msLightSpaceToNormal |
More information can be found on the webpage of the TU Wien: http://www.cg.tuwien.ac.at/research/vr/lispsm/
Original implementation by Matthias Fink <matthias.fink@web.de>, 2006.
Definition at line 93 of file OgreShadowCameraSetupLiSPSM.h.
| Ogre::LiSPSMShadowCameraSetup::LiSPSMShadowCameraSetup | ( | void | ) |
Default constructor.
| virtual Ogre::LiSPSMShadowCameraSetup::~LiSPSMShadowCameraSetup | ( | void | ) | [virtual] |
Default destructor.
| Matrix4 Ogre::LiSPSMShadowCameraSetup::calculateLiSPSM | ( | const Matrix4 & | lightSpace, | |
| const PointListBody & | bodyB, | |||
| const PointListBody & | bodyLVS, | |||
| const SceneManager & | sm, | |||
| const Camera & | cam, | |||
| const Light & | light | |||
| ) | const [protected] |
Calculates the LiSPSM projection matrix P.
| lightSpace,: | matrix of the light space transformation | |
| bodyB,: | intersection body B | |
| bodyLVS,: | intersection body LVS (relevant space in front of the camera) | |
| sm,: | scene manager | |
| cam,: | currently active camera | |
| light,: | currently active light |
| Real Ogre::LiSPSMShadowCameraSetup::calculateNOpt | ( | const Matrix4 & | lightSpace, | |
| const AxisAlignedBox & | bodyBABB_ls, | |||
| const PointListBody & | bodyLVS, | |||
| const Camera & | cam | |||
| ) | const [protected] |
Calculates the distance between camera position and near clipping plane.
Parameters: d: distance between the near and the far clipping plane z0: located on the near clipping plane of the intersection body b z1: located on the far clipping plane with the same x/y values as z0
| lightSpace,: | matrix of the light space transformation | |
| bodyBABB_ls,: | bounding box of the tranformed (light space) bodyB | |
| bodyLVS,: | point list of the bodyLVS which describes the scene space which is in front of the light and the camera | |
| cam,: | currently active camera |
| Real Ogre::LiSPSMShadowCameraSetup::calculateNOptSimple | ( | const PointListBody & | bodyLVS, | |
| const Camera & | cam | |||
| ) | const [protected] |
Calculates a simpler version than the one above.
| Vector3 Ogre::LiSPSMShadowCameraSetup::calculateZ0_ls | ( | const Matrix4 & | lightSpace, | |
| const Vector3 & | e, | |||
| Real | bodyB_zMax_ls, | |||
| const Camera & | cam | |||
| ) | const [protected] |
Calculates the visible point on the near plane for the n_opt calculation.
| lightSpace,: | matrix of the light space transformation | |
| e,: | the LiSPSM parameter e is located near or on the near clipping plane of the LiSPSM frustum C | |
| bodyB_zMax_ls,: | maximum z-value of the light space bodyB bounding box | |
| cam,: | currently active camera |
| Matrix4 Ogre::LiSPSMShadowCameraSetup::buildFrustumProjection | ( | Real | left, | |
| Real | right, | |||
| Real | bottom, | |||
| Real | top, | |||
| Real | near, | |||
| Real | far | |||
| ) | const [protected] |
Builds a frustum matrix.
| virtual void Ogre::LiSPSMShadowCameraSetup::getShadowCamera | ( | const SceneManager * | sm, | |
| const Camera * | cam, | |||
| const Viewport * | vp, | |||
| const Light * | light, | |||
| Camera * | texCam | |||
| ) | const [virtual] |
Returns a LiSPSM shadow camera.
Reimplemented from Ogre::FocusedShadowCameraSetup.
| virtual void Ogre::LiSPSMShadowCameraSetup::setOptimalAdjustFactor | ( | Real | n | ) | [virtual] |
Adjusts the parameter n to produce optimal shadows.
| n | The adjustment factor - default is 0.1f. |
Definition at line 207 of file OgreShadowCameraSetupLiSPSM.h.
| virtual Real Ogre::LiSPSMShadowCameraSetup::getOptimalAdjustFactor | ( | ) | const [virtual] |
Get the parameter n used to produce optimal shadows.
Definition at line 211 of file OgreShadowCameraSetupLiSPSM.h.
| virtual void Ogre::LiSPSMShadowCameraSetup::setUseSimpleOptimalAdjust | ( | bool | s | ) | [virtual] |
Sets whether or not to use a slightly simpler version of the camera near point derivation (default is true).
Definition at line 215 of file OgreShadowCameraSetupLiSPSM.h.
| virtual bool Ogre::LiSPSMShadowCameraSetup::getUseSimpleOptimalAdjust | ( | ) | const [virtual] |
Gets whether or not to use a slightly simpler version of the camera near point derivation (default is true).
Definition at line 219 of file OgreShadowCameraSetupLiSPSM.h.
| void Ogre::FocusedShadowCameraSetup::calculateShadowMappingMatrix | ( | const SceneManager & | sm, | |
| const Camera & | cam, | |||
| const Light & | light, | |||
| Matrix4 * | out_view, | |||
| Matrix4 * | out_proj, | |||
| Camera * | out_cam | |||
| ) | const [protected, inherited] |
Calculates the standard shadow mapping matrix.
| sm,: | scene manager | |
| cam,: | currently active camera | |
| light,: | currently active light | |
| out_view,: | calculated uniform view shadow mapping matrix (may be NULL) | |
| out_proj,: | calculated uniform projection shadow mapping matrix (may be NULL) | |
| out_cam,: | calculated uniform shadow camera (may be NULL) |
| void Ogre::FocusedShadowCameraSetup::calculateB | ( | const SceneManager & | sm, | |
| const Camera & | cam, | |||
| const Light & | light, | |||
| const AxisAlignedBox & | sceneBB, | |||
| PointListBody * | out_bodyB | |||
| ) | const [protected, inherited] |
Calculates the intersection bodyB.
| sm,: | scene manager | |
| cam,: | currently active camera | |
| light,: | currently active light | |
| sceneBB,: | scene bounding box for clipping operations | |
| out_bodyB,: | final intersection bodyB point list |
| void Ogre::FocusedShadowCameraSetup::calculateLVS | ( | const SceneManager & | sm, | |
| const Camera & | cam, | |||
| const Light & | light, | |||
| const AxisAlignedBox & | sceneBB, | |||
| PointListBody * | out_LVS | |||
| ) | const [protected, inherited] |
Calculates the bodyLVS.
| scene,: | holds all potential occluders / receivers as one single bounding box of the currently active scene node | |
| cam,: | current viewer camera | |
| light,: | current light | |
| out_LVS,: | intersection body LVS (world coordinates) |
| Vector3 Ogre::FocusedShadowCameraSetup::getLSProjViewDir | ( | const Matrix4 & | lightSpace, | |
| const Camera & | cam, | |||
| const PointListBody & | bodyLVS | |||
| ) | const [protected, inherited] |
Returns the projection view direction.
| lightSpace,: | matrix of the light space transformation | |
| cam,: | current viewer camera | |
| bodyLVS,: | intersection body LVS (relevant space in front of the camera) |
| Vector3 Ogre::FocusedShadowCameraSetup::getNearCameraPoint_ws | ( | const Matrix4 & | viewMatrix, | |
| const PointListBody & | bodyLVS | |||
| ) | const [protected, inherited] |
Returns a valid near-point seen by the camera.
| viewMatrix,: | view matrix of the current camera | |
| bodyLVS,: | intersection body LVS (relevant space in front of the camera) |
| Matrix4 Ogre::FocusedShadowCameraSetup::transformToUnitCube | ( | const Matrix4 & | m, | |
| const PointListBody & | body | |||
| ) | const [protected, inherited] |
Transforms a given body to the unit cube (-1,-1,-1) / (+1,+1,+1) with a specific shadow matrix enabled.
| m,: | transformation matrix applied on the point list body | |
| body,: | contains the points of the extends of all valid scene elements which are mapped to the unit cube |
| Matrix4 Ogre::FocusedShadowCameraSetup::buildViewMatrix | ( | const Vector3 & | pos, | |
| const Vector3 & | dir, | |||
| const Vector3 & | up | |||
| ) | const [protected, inherited] |
Builds a view matrix.
| void Ogre::FocusedShadowCameraSetup::setUseAggressiveFocusRegion | ( | bool | aggressive | ) | [inherited] |
Sets whether or not to use the more agressive approach to deciding on the focus region or not.
| aggressive | True to use the more agressive approach, false otherwise. |
Definition at line 272 of file OgreShadowCameraSetupFocused.h.
| bool Ogre::FocusedShadowCameraSetup::getUseAggressiveFocusRegion | ( | ) | const [inherited] |
Definition at line 274 of file OgreShadowCameraSetupFocused.h.
Real Ogre::LiSPSMShadowCameraSetup::mOptAdjustFactor [protected] |
bool Ogre::LiSPSMShadowCameraSetup::mUseSimpleNOpt [protected] |
const Matrix4 Ogre::FocusedShadowCameraSetup::msNormalToLightSpace [static, protected, inherited] |
Transform to or from light space as defined by Wimmer et al.
Definition at line 62 of file OgreShadowCameraSetupFocused.h.
const Matrix4 Ogre::FocusedShadowCameraSetup::msLightSpaceToNormal [static, protected, inherited] |
Definition at line 63 of file OgreShadowCameraSetupFocused.h.
Frustum* Ogre::FocusedShadowCameraSetup::mTempFrustum [protected, inherited] |
Temporary preallocated frustum to set up a projection matrix in calculateShadowMappingMatrix().
Definition at line 68 of file OgreShadowCameraSetupFocused.h.
Camera* Ogre::FocusedShadowCameraSetup::mLightFrustumCamera [protected, inherited] |
Temporary preallocated camera to set up a light frustum for clipping in calculateB.
Definition at line 72 of file OgreShadowCameraSetupFocused.h.
bool Ogre::FocusedShadowCameraSetup::mLightFrustumCameraCalculated [mutable, protected, inherited] |
Definition at line 73 of file OgreShadowCameraSetupFocused.h.
bool Ogre::FocusedShadowCameraSetup::mUseAggressiveRegion [protected, inherited] |
ConvexBody Ogre::FocusedShadowCameraSetup::mBodyB [mutable, protected, inherited] |
Definition at line 139 of file OgreShadowCameraSetupFocused.h.
PointListBody Ogre::FocusedShadowCameraSetup::mPointListBodyB [mutable, protected, inherited] |
Definition at line 140 of file OgreShadowCameraSetupFocused.h.
PointListBody Ogre::FocusedShadowCameraSetup::mPointListBodyLVS [mutable, protected, inherited] |
Definition at line 141 of file OgreShadowCameraSetupFocused.h.
Copyright © 2000-2005 by The OGRE Team

This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Mon Jun 16 12:53:36 2008