![]() |
OGRE 14.3
Object-Oriented Graphics Rendering Engine
|
Parallel Split Shadow Map (PSSM) shadow camera setup. More...
#include <OgreShadowCameraSetupPSSM.h>
Public Types | |
typedef std::vector< Real > | OptimalAdjustFactorList |
typedef std::vector< Real > | SplitPointList |
Public Member Functions | |
PSSMShadowCameraSetup () | |
virtual | ~PSSMShadowCameraSetup () |
void | calculateSplitPoints (uint splitCount, Real nearDist, Real farDist, Real lambda=0.95f) |
Calculate a new splitting scheme. | |
Real | getOptimalAdjustFactor () const override |
Overridden, recommended internal use only since depends on current iteration. | |
Real | getOptimalAdjustFactor (size_t splitIndex) const |
Returns the optimal adjust factor for a given split. | |
void | getShadowCamera (const Ogre::SceneManager *sm, const Ogre::Camera *cam, const Ogre::Viewport *vp, const Ogre::Light *light, Ogre::Camera *texCam, size_t iteration) const override |
Returns a LiSPSM shadow camera with PSSM splits base on iteration. | |
uint | getSplitCount () const |
Get the number of splits. | |
Real | getSplitPadding () const |
Get the padding factor to apply to the near & far distances when matching up splits to one another, to avoid 'cracks'. | |
const SplitPointList & | getSplitPoints () const |
Returns the calculated split points. | |
void | setOptimalAdjustFactor (size_t splitIndex, Real factor) |
Set the LiSPSM optimal adjust factor for a given split (call after configuring splits). | |
void | setSplitPadding (Real pad) |
Set the padding factor to apply to the near & far distances when matching up splits to one another, to avoid 'cracks'. | |
void | setSplitPoints (const SplitPointList &newSplitPoints) |
Manually configure a new splitting scheme. | |
![]() | |
LiSPSMShadowCameraSetup (Real n=0.1f, bool useSimpleNOpt=true, Degree angle=Radian(0.451f)) | |
virtual | ~LiSPSMShadowCameraSetup () |
virtual Degree | getCameraLightDirectionThreshold () const |
Sets the threshold between the camera and the light direction below which the LiSPSM projection is 'flattened', since coincident light and camera projections cause problems with the perspective skew. | |
virtual bool | getUseSimpleOptimalAdjust () const |
Gets whether or not to use a slightly simpler version of the camera near point derivation (default is true) | |
void | setCameraLightDirectionThreshold (Degree angle) |
Sets the threshold between the camera and the light direction below which the LiSPSM projection is 'flattened', since coincident light and camera projections cause problems with the perspective skew. | |
virtual void | setUseSimpleOptimalAdjust (bool s) |
Sets whether or not to use a slightly simpler version of the camera near point derivation (default is true) | |
![]() | |
FocusedShadowCameraSetup (bool useAggressiveRegion=true) | |
~FocusedShadowCameraSetup () | |
bool | getUseAggressiveFocusRegion () const |
void | setUseAggressiveFocusRegion (bool aggressive) |
Sets whether or not to use the more aggressive approach to deciding on the focus region or not. | |
![]() | |
DefaultShadowCameraSetup () | |
virtual | ~DefaultShadowCameraSetup () |
![]() | |
virtual | ~ShadowCameraSetup () |
Need virtual destructor in case subclasses use it. | |
Static Public Member Functions | |
static ShadowCameraSetupPtr | create () |
Constructor, defaults to 3 splits. | |
![]() | |
static ShadowCameraSetupPtr | create (Real n=0.1f, bool useSimpleNOpt=true, Degree angle=Radian(0.451f)) |
![]() | |
static ShadowCameraSetupPtr | create (bool useAggressiveRegion=true) |
Create an instance. | |
![]() | |
static ShadowCameraSetupPtr | create () |
Parallel Split Shadow Map (PSSM) shadow camera setup.
A PSSM shadow system uses multiple shadow maps per light and maps each texture into a region of space, progressing away from the camera. As such it is most appropriate for directional light setups. This particular version also uses LiSPSM projection for each split to maximise the quality.
typedef std::vector<Real> Ogre::PSSMShadowCameraSetup::SplitPointList |
Ogre::PSSMShadowCameraSetup::PSSMShadowCameraSetup | ( | ) |
|
virtual |
|
inlinestatic |
Constructor, defaults to 3 splits.
void Ogre::PSSMShadowCameraSetup::calculateSplitPoints | ( | uint | splitCount, |
Real | nearDist, | ||
Real | farDist, | ||
Real | lambda = 0.95f |
||
) |
Calculate a new splitting scheme.
splitCount | The number of splits to use |
nearDist | The near plane to use for the first split |
farDist | The far plane to use for the last split |
lambda | Factor to use to reduce the split size |
void Ogre::PSSMShadowCameraSetup::setSplitPoints | ( | const SplitPointList & | newSplitPoints | ) |
Manually configure a new splitting scheme.
newSplitPoints | A list which is splitCount + 1 entries long, containing the split points. The first value is the near point, the last value is the far point, and each value in between is both a far point of the previous split, and a near point for the next one. |
Set the LiSPSM optimal adjust factor for a given split (call after configuring splits).
Set the padding factor to apply to the near & far distances when matching up splits to one another, to avoid 'cracks'.
|
inline |
Get the padding factor to apply to the near & far distances when matching up splits to one another, to avoid 'cracks'.
|
inline |
Get the number of splits.
|
overridevirtual |
Returns a LiSPSM shadow camera with PSSM splits base on iteration.
Reimplemented from Ogre::LiSPSMShadowCameraSetup.
|
inline |
Returns the calculated split points.
Returns the optimal adjust factor for a given split.
|
overridevirtual |
Overridden, recommended internal use only since depends on current iteration.
Reimplemented from Ogre::LiSPSMShadowCameraSetup.