Ogre Version: 13.6
Operating System: windows
Render System: dx9c
Hi,
I was using 13.1 and updated Ogre to 13.6 today.
I'm using LiSPSM shadows in my engine and don't have any shadows anymore. I know LiSPSM is improved with the last update but is there something I need to change to make it work again?
What I'm doing:
Code: Select all
struct shadowListener: public Ogre::ShadowTextureListener
{
// this is a callback we'll be using to set up our shadow camera
void shadowTextureCasterPreViewProj(Ogre::Light *light, Ogre::Camera *cam, size_t)
{
float range = light->getAttenuationRange();
cam->setNearClipDistance(0.01);
cam->setFarClipDistance(range);
}
void shadowTexturesUpdated(size_t) {}
void shadowTextureReceiverPreViewProj(Ogre::Light*, Ogre::Frustum*) {}
void preFindVisibleObjects(Ogre::SceneManager*, Ogre::SceneManager::IlluminationRenderStage, Ogre::Viewport*) {}
void postFindVisibleObjects(Ogre::SceneManager*, Ogre::SceneManager::IlluminationRenderStage, Ogre::Viewport*) {}
} shadowCameraUpdaterPlay;
Code: Select all
void playState::initShadows()
{
// we'll be self shadowing
mSceneMgr->setShadowTextureSelfShadow(true);
mSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED);
mSceneMgr->setShadowTextureCount(1);
mSceneMgr->setShadowDirLightTextureOffset( 0.2 );
mSceneMgr->setShadowDirectionalLightExtrusionDistance(400);
mSceneMgr->setShadowFarDistance(200);
// the size, too (1024 looks good with 3x3 or more filtering)
mSceneMgr->setShadowTextureSize(game->shadowTextureSize);
mSceneMgr->setShadowTexturePixelFormat(Ogre::PF_FLOAT32_GR);
mSceneMgr->setShadowCasterRenderBackFaces(false);
Ogre::TexturePtr tex = mSceneMgr->getShadowTexture(0);
Ogre::Viewport *vpo = tex->getBuffer()->getRenderTarget()->getViewport(0);
vpo->setBackgroundColour(Ogre::ColourValue(1, 1, 1, 1));
vpo->setClearEveryFrame(true);
camSetup = OGRE_NEW Ogre::LiSPSMShadowCameraSetup;
camSetup->create(200, true, Ogre::Degree(5));
camSetup->setCameraLightDirectionThreshold(Ogre::Degree(5));
camSetup->setUseAggressiveFocusRegion(true);
camSetup->setOptimalAdjustFactor((Ogre::Real) 200);
mSceneMgr->setShadowFarDistance(270); //200 - bigger for 45 degrees
mSceneMgr->setShadowCameraSetup(Ogre::ShadowCameraSetupPtr(camSetup));
// and add the shader listener
mSceneMgr->addShadowTextureListener(&shadowCameraUpdaterPlay);
}