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());
