Show
Ignore:
Timestamp:
09/07/11 17:55:54 (3 years ago)
Author:
robert
Message:

Moved ViewDependetShadowMap? parameter settings into a dedicated ShadowSettings? object in prep for making it possible to scale the API to handle multiple lights and multiple shadow maps per light.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osgshadow/osgshadow.cpp

    r12780 r12782  
    599599                if (geometry) 
    600600                { 
    601                     OSG_NOTICE<<"geometry->setUseVertexBufferObjects(true);"<<std::endl; 
    602601                    geometry->setUseVertexBufferObjects(true); 
    603602                } 
     
    641640        cessnaNode->addUpdateCallback( createAnimationPathCallback(50.0f, 6.0f) ); 
    642641        cessnaNode->setNodeMask( CastsShadowTraversalMask ); 
     642 
     643        // cessna is really poorly optimized so fix this by optimizing the mesh and use VBO's. 
     644        osgUtil::Optimizer optimizer; 
     645        optimizer.optimize(cessnaNode.get(), osgUtil::Optimizer::INDEX_MESH | 
     646                                             osgUtil::Optimizer::VERTEX_POSTTRANSFORM | 
     647                                             osgUtil::Optimizer::VERTEX_PRETRANSFORM); 
     648 
     649        UseVBOVisitor useVBOVisitor; 
     650        cessnaNode->accept(useVBOVisitor); 
     651 
    643652 
    644653        osg::ref_ptr<osg::Group> shadowRoot = new osg::Group; 
     
    655664        } 
    656665 
    657         // cessna is really poorly optimized so fix this by optimizing the mesh and use VBO's. 
    658         osgUtil::Optimizer optimizer; 
    659         optimizer.optimize(shadowRoot.get(), osgUtil::Optimizer::INDEX_MESH | 
    660                                              osgUtil::Optimizer::VERTEX_POSTTRANSFORM | 
    661                                              osgUtil::Optimizer::VERTEX_PRETRANSFORM); 
    662  
    663         UseVBOVisitor useVBOVisitor; 
    664         shadowRoot->accept(useVBOVisitor); 
    665666 
    666667        return shadowRoot.release(); 
     
    918919    else if( arguments.read("--vdsm") ) 
    919920    { 
    920         osg::ref_ptr<osgShadow::ViewDependentShadowMap> vdsm = new osgShadow::ViewDependentShadowMap; 
    921         while( arguments.read("--debugHUD") ) vdsm->setDebugDraw( true ); 
    922  
    923         if (arguments.read("--persp")) vdsm->setShadowMapProjectionHint(osgShadow::ViewDependentShadowMap::PERSPECTIVE_SHADOW_MAP); 
    924         if (arguments.read("--ortho")) vdsm->setShadowMapProjectionHint(osgShadow::ViewDependentShadowMap::ORTHOGRAPHIC_SHADOW_MAP); 
     921        osgShadow::ShadowSettings* settings = new osgShadow::ShadowSettings; 
     922        shadowedScene->setShadowSettings(settings); 
     923 
     924        while( arguments.read("--debugHUD") ) settings->setDebugDraw( true ); 
     925        if (arguments.read("--persp")) settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::PERSPECTIVE_SHADOW_MAP); 
     926        if (arguments.read("--ortho")) settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::ORTHOGRAPHIC_SHADOW_MAP); 
    925927 
    926928        unsigned int unit=1; 
    927         if (arguments.read("--unit",unit)) vdsm->setBaseShadowTextureUnit(unit); 
     929        if (arguments.read("--unit",unit)) settings->setBaseShadowTextureUnit(unit); 
    928930         
    929931        double n=0.0; 
    930         if (arguments.read("-n",n)) vdsm->setMinimumShadowMapNearFarRatio(n); 
    931  
     932        if (arguments.read("-n",n)) settings->setMinimumShadowMapNearFarRatio(n); 
     933 
     934        osg::ref_ptr<osgShadow::ViewDependentShadowMap> vdsm = new osgShadow::ViewDependentShadowMap; 
    932935        shadowedScene->setShadowTechnique(vdsm.get()); 
    933936    }