osg中针对复杂模型,大场景,shadowTexture效果不好,需要用ParallelSplitShadowMap
用的时候,如果效果不好的话,尝试调下纹理大小 ,如:pssm->setTextureResolution(4096);
int mapcount = 4;
osg::ref_ptr<osgShadow::ParallelSplitShadowMap> pssm = new osgShadow::ParallelSplitShadowMap(NULL, mapcount);
double polyoffsetfactor = pssm->getPolygonOffset().x();
double polyoffsetunit = pssm->getPolygonOffset().y();
pssm->setPolygonOffset(osg::Vec2(polyoffsetfactor, polyoffsetunit));
pssm->setTextureResolution(4096);
pssm->setFragmentShaderGenerator(new MyFragmentShaderGenerator);
osg::ref_ptr<osgShadow::ShadowedScene> shadowedScene = new osgShadow::ShadowedScene;
osgShadow::ShadowSettings* settings = shadowedScene->getShadowSettings();
settings->setReceivesShadowTraversalMask(ReceivesShadowTraversalMask);
settings->setCastsShadowTraversalMask(CastsShadowTraversalMask);
shadowedScene->setShadowTechnique(pssm.get());