Moved mask settings into ShadowSettings

This commit is contained in:
Robert Osfield
2012-07-10 15:50:46 +00:00
parent 4b220d4fd7
commit b4d397cfd7
4 changed files with 39 additions and 26 deletions

View File

@@ -28,6 +28,12 @@ class OSGSHADOW_EXPORT ShadowSettings : public osg::Object
META_Object(osgShadow, ShadowSettings);
void setReceivesShadowTraversalMask(unsigned int mask) { _receivesShadowTraversalMask = mask; }
unsigned int getReceivesShadowTraversalMask() const { return _receivesShadowTraversalMask; }
void setCastsShadowTraversalMask(unsigned int mask) { _castsShadowTraversalMask = mask; }
unsigned int getCastsShadowTraversalMask() const { return _castsShadowTraversalMask; }
/** Set the LightNum of the light in the scene to assign a shadow for.
* Default value is -1, which signifies that shadow technique should automatically select an active light
* to assign a shadow, typically this will be the first active light found. */
@@ -103,20 +109,24 @@ class OSGSHADOW_EXPORT ShadowSettings : public osg::Object
virtual ~ShadowSettings();
int _lightNum;
unsigned int _baseShadowTextureUnit;
bool _useShadowMapTextureOverride;
osg::Vec2s _textureSize;
double _minimumShadowMapNearFarRatio;
ShadowMapProjectionHint _shadowMapProjectionHint;
double _perspectiveShadowMapCutOffAngle;
unsigned int _receivesShadowTraversalMask;
unsigned int _castsShadowTraversalMask;
unsigned int _numShadowMapsPerLight;
MultipleShadowMapHint _multipleShadowMapHint;
int _lightNum;
unsigned int _baseShadowTextureUnit;
bool _useShadowMapTextureOverride;
osg::Vec2s _textureSize;
ShaderHint _shaderHint;
bool _debugDraw;
double _minimumShadowMapNearFarRatio;
ShadowMapProjectionHint _shadowMapProjectionHint;
double _perspectiveShadowMapCutOffAngle;
unsigned int _numShadowMapsPerLight;
MultipleShadowMapHint _multipleShadowMapHint;
ShaderHint _shaderHint;
bool _debugDraw;
};

View File

@@ -37,12 +37,6 @@ class OSGSHADOW_EXPORT ShadowedScene : public osg::Group
virtual void traverse(osg::NodeVisitor& nv);
void setReceivesShadowTraversalMask(unsigned int mask) { _receivesShadowTraversalMask = mask; }
unsigned int getReceivesShadowTraversalMask() const { return _receivesShadowTraversalMask; }
void setCastsShadowTraversalMask(unsigned int mask) { _castsShadowTraversalMask = mask; }
unsigned int getCastsShadowTraversalMask() const { return _castsShadowTraversalMask; }
void setShadowSettings(ShadowSettings* ss);
ShadowSettings* getShadowSettings() { return _shadowSettings.get(); }
const ShadowSettings* getShadowSettings() const { return _shadowSettings.get(); }
@@ -65,13 +59,22 @@ class OSGSHADOW_EXPORT ShadowedScene : public osg::Group
* for all graphics contexts. */
virtual void releaseGLObjects(osg::State* = 0) const;
public:
/** deprecated, moved to ShadowSettings.*/
void setReceivesShadowTraversalMask(unsigned int mask) { if (_shadowSettings.valid()) _shadowSettings->setReceivesShadowTraversalMask(mask); }
/** deprecated, moved to ShadowSettings.*/
unsigned int getReceivesShadowTraversalMask() const { return _shadowSettings.valid() ? _shadowSettings->getReceivesShadowTraversalMask() : 0xffffffff; }
/** deprecated, moved to ShadowSettings.*/
void setCastsShadowTraversalMask(unsigned int mask) { if (_shadowSettings.valid()) _shadowSettings->setCastsShadowTraversalMask(mask); }
/** deprecated, moved to ShadowSettings.*/
unsigned int getCastsShadowTraversalMask() const { return _shadowSettings.valid() ? _shadowSettings->getCastsShadowTraversalMask() : 0xffffffff; }
protected:
virtual ~ShadowedScene();
unsigned int _receivesShadowTraversalMask;
unsigned int _castsShadowTraversalMask;
osg::ref_ptr<ShadowSettings> _shadowSettings;
osg::ref_ptr<ShadowTechnique> _shadowTechnique;

View File

@@ -16,6 +16,8 @@
using namespace osgShadow;
ShadowSettings::ShadowSettings():
_receivesShadowTraversalMask(0xffffffff),
_castsShadowTraversalMask(0xffffffff),
_lightNum(-1),
_baseShadowTextureUnit(1),
_useShadowMapTextureOverride(true),
@@ -33,6 +35,8 @@ ShadowSettings::ShadowSettings():
ShadowSettings::ShadowSettings(const ShadowSettings& ss, const osg::CopyOp& copyop):
Object(ss,copyop),
_receivesShadowTraversalMask(ss._receivesShadowTraversalMask),
_castsShadowTraversalMask(ss._castsShadowTraversalMask),
_lightNum(ss._lightNum),
_baseShadowTextureUnit(ss._baseShadowTextureUnit),
_useShadowMapTextureOverride(ss._useShadowMapTextureOverride),

View File

@@ -21,9 +21,7 @@
using namespace osgShadow;
ShadowedScene::ShadowedScene(ShadowTechnique* st):
_receivesShadowTraversalMask(0xffffffff),
_castsShadowTraversalMask(0xffffffff)
ShadowedScene::ShadowedScene(ShadowTechnique* st)
{
setNumChildrenRequiringUpdateTraversal(1);
@@ -33,9 +31,7 @@ ShadowedScene::ShadowedScene(ShadowTechnique* st):
}
ShadowedScene::ShadowedScene(const ShadowedScene& ss, const osg::CopyOp& copyop):
osg::Group(ss,copyop),
_receivesShadowTraversalMask(ss._receivesShadowTraversalMask),
_castsShadowTraversalMask(ss._castsShadowTraversalMask)
osg::Group(ss,copyop)
{
setNumChildrenRequiringUpdateTraversal(getNumChildrenRequiringUpdateTraversal()+1);