mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-03 16:39:41 +00:00
Enable shadow casting for terrain
Add a check to TerrainDrawable to make sure shadows are only drawn once, not once per blending pass
This commit is contained in:
parent
8141ee47d5
commit
ceaf0ee409
2 changed files with 7 additions and 1 deletions
|
@ -206,7 +206,7 @@ namespace MWRender
|
||||||
|
|
||||||
osgShadow::ShadowSettings* settings = shadowedScene->getShadowSettings();
|
osgShadow::ShadowSettings* settings = shadowedScene->getShadowSettings();
|
||||||
settings->setLightNum(0);
|
settings->setLightNum(0);
|
||||||
settings->setCastsShadowTraversalMask(Mask_Scene|Mask_Actor|Mask_Player);
|
settings->setCastsShadowTraversalMask(Mask_Scene|Mask_Actor|Mask_Player|Mask_Terrain);
|
||||||
settings->setReceivesShadowTraversalMask(~0u);
|
settings->setReceivesShadowTraversalMask(~0u);
|
||||||
|
|
||||||
//settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::PERSPECTIVE_SHADOW_MAP);
|
//settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::PERSPECTIVE_SHADOW_MAP);
|
||||||
|
|
|
@ -51,6 +51,12 @@ void TerrainDrawable::cull(osgUtil::CullVisitor *cv)
|
||||||
if (osg::isNaN(depth))
|
if (osg::isNaN(depth))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (cv->getCurrentCamera()->getName() == "ShadowCamera")
|
||||||
|
{
|
||||||
|
cv->addDrawableAndDepth(this, &matrix, depth);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
bool pushedLight = mLightListCallback && mLightListCallback->pushLightState(this, cv);
|
bool pushedLight = mLightListCallback && mLightListCallback->pushLightState(this, cv);
|
||||||
|
|
||||||
for (PassVector::const_iterator it = mPasses.begin(); it != mPasses.end(); ++it)
|
for (PassVector::const_iterator it = mPasses.begin(); it != mPasses.end(); ++it)
|
||||||
|
|
Loading…
Reference in a new issue