Added prelimanary support for parallel split shadow maps into ViewDependentShadowMap.

This commit is contained in:
Robert Osfield
2011-11-22 21:55:30 +00:00
parent 116b9a978c
commit 92ed903a7f
4 changed files with 379 additions and 53 deletions

View File

@@ -72,6 +72,20 @@ class OSGSHADOW_EXPORT ShadowSettings : public osg::Object
void setPerspectiveShadowMapCutOffAngle(double angle) { _perspectiveShadowMapCutOffAngle = angle; }
double getPerspectiveShadowMapCutOffAngle() const { return _perspectiveShadowMapCutOffAngle; }
void setNumShadowMapsPerLight(unsigned int numShadowMaps) { _numShadowMapsPerLight = numShadowMaps; }
unsigned int getNumShadowMapsPerLight() const { return _numShadowMapsPerLight; }
enum MultipleShadowMapHint
{
PARALLEL_SPLIT,
CASCADED
};
void setMultipleShadowMapHint(MultipleShadowMapHint hint) { _multipleShadowMapHint = hint; }
MultipleShadowMapHint getMultipleShadowMapHint() const { return _multipleShadowMapHint; }
enum ShaderHint
{
NO_SHADERS,
@@ -97,6 +111,10 @@ class OSGSHADOW_EXPORT ShadowSettings : public osg::Object
double _minimumShadowMapNearFarRatio;
ShadowMapProjectionHint _shadowMapProjectionHint;
double _perspectiveShadowMapCutOffAngle;
unsigned int _numShadowMapsPerLight;
MultipleShadowMapHint _multipleShadowMapHint;
ShaderHint _shaderHint;
bool _debugDraw;

View File

@@ -159,7 +159,7 @@ class OSGSHADOW_EXPORT ViewDependentShadowMap : public ShadowTechnique
virtual osg::Polytope computeLightViewFrustumPolytope(Frustum& frustum, LightData& positionedLight);
virtual bool computeShadowCameraSettings(Frustum& frustum, LightData& positionedLight, osg::Camera* camera);
virtual bool computeShadowCameraSettings(Frustum& frustum, LightData& positionedLight, osg::Matrixd& projectionMatrix, osg::Matrixd& viewMatrix);
virtual bool adjustPerspectiveShadowMapCameraSettings(osgUtil::RenderStage* renderStage, Frustum& frustum, LightData& positionedLight, osg::Camera* camera);