Show
Ignore:
Timestamp:
03/21/12 18:36:20 (2 years ago)
Author:
robert
Message:

Ran script to remove trailing spaces and tabs

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgShadow/DebugShadowMap.cpp

    r12292 r13041  
    1 /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield  
     1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield 
    22 * 
    3  * This library is open source and may be redistributed and/or modified under   
    4  * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or  
     3 * This library is open source and may be redistributed and/or modified under 
     4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or 
    55 * (at your option) any later version.  The full license is in LICENSE file 
    66 * included with this distribution, and on the openscenegraph.org website. 
    7  *  
     7 * 
    88 * This library is distributed in the hope that it will be useful, 
    99 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
    10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
     10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    1111 * OpenSceneGraph Public License for more details. 
    1212 * 
     
    3636#define DEFAULT_DEBUG_HUD_ORIGIN_Y 8 
    3737 
    38 DebugShadowMap::DebugShadowMap():  
     38DebugShadowMap::DebugShadowMap(): 
    3939    BaseClass(), 
    4040    _hudSize( 2, 2 ), 
    4141    _hudOrigin( -1, -1 ), 
    4242    _viewportSize( DEFAULT_DEBUG_HUD_SIZE_X, DEFAULT_DEBUG_HUD_SIZE_Y ), 
    43     _viewportOrigin( DEFAULT_DEBUG_HUD_ORIGIN_X, DEFAULT_DEBUG_HUD_ORIGIN_Y ),  
     43    _viewportOrigin( DEFAULT_DEBUG_HUD_ORIGIN_X, DEFAULT_DEBUG_HUD_ORIGIN_Y ), 
    4444    _orthoSize( 2, 2 ), 
    4545    _orthoOrigin( -1, -1 ), 
    4646    _doDebugDraw( false ) 
    4747{ 
    48      
     48 
    4949    // Why this fancy 24 bit depth to 24 bit rainbow colors shader ? 
    5050    // 
    51     // Depth values cannot be easily cast on color component because they are:  
    52     // a) 24 or 32 bit and we loose lots of precision when cast on 8 bit  
     51    // Depth values cannot be easily cast on color component because they are: 
     52    // a) 24 or 32 bit and we loose lots of precision when cast on 8 bit 
    5353    // b) depth value distribution is non linear due to projection division 
    5454    // when cast on componenent color there is usually very minor shade variety 
    5555    // and its often difficult to notice that there is anything in the buffer 
    56     //  
    57     // Shader looks complex but it is used only for debug head-up rectangle  
    58     // so performance impact is not significant.   
    59      
     56    // 
     57    // Shader looks complex but it is used only for debug head-up rectangle 
     58    // so performance impact is not significant. 
     59 
    6060    _depthColorFragmentShader = new osg::Shader( osg::Shader::FRAGMENT, 
    61 #if 0  
     61#if 0 
    6262        "uniform sampler2D texture;                                              \n" 
    6363        "                                                                        \n" 
     
    6666        "    float f = texture2D( texture, vec3( gl_TexCoord[0].xy, 1.0).xy ).r; \n" 
    6767        "    gl_FragColor =  vec4( 0.0, 1.0 - f,  0.5 - f, 0.5 );                \n" 
    68         "}                                                                       \n"           
    69 #else  
     68        "}                                                                       \n" 
     69#else 
    7070        "uniform sampler2D texture;                                              \n" 
    7171        "                                                                        \n" 
     
    7575        "                                                                        \n" 
    7676        "    f = 256.0 * f;                                                      \n" 
    77         "    float fC = floor( f ) / 256.0;                                      \n"  
     77        "    float fC = floor( f ) / 256.0;                                      \n" 
    7878        "                                                                        \n" 
    7979        "    f = 256.0 * fract( f );                                             \n" 
    80         "    float fS = floor( f ) / 256.0;                                      \n"   
     80        "    float fS = floor( f ) / 256.0;                                      \n" 
    8181        "                                                                        \n" 
    8282        "    f = 256.0 * fract( f );                                             \n" 
     
    8989        "                     abs( fC - 0.333333 ),                              \n" 
    9090        "                     abs( fC - 0.666667 ) );                            \n" 
    91         "                                                                        \n"    
     91        "                                                                        \n" 
    9292        "    rgb = min( vec3( 1.0, 1.0, 1.0 ), 3.0 * rgb );                      \n" 
    9393        "                                                                        \n" 
    9494        "    float fMax = max( max( rgb.r, rgb.g ), rgb.b );                     \n" 
    95         "    fMax = 1.0 / fMax;                                                  \n"   
     95        "    fMax = 1.0 / fMax;                                                  \n" 
    9696        "                                                                        \n" 
    9797        "    vec3 color = fMax * rgb;                                            \n" 
    9898        "                                                                        \n" 
    9999        "    gl_FragColor =  vec4( fS + fH * color, 1 ) * gl_Color;              \n" 
    100         "}                                                                       \n"   
    101 #endif 
    102     ); // end _depthColorFragmentShader  
     100        "}                                                                       \n" 
     101#endif 
     102    ); // end _depthColorFragmentShader 
    103103} 
    104104 
     
    109109    _hudOrigin( copy._hudOrigin ), 
    110110    _viewportSize( copy._viewportSize ), 
    111     _viewportOrigin( copy._viewportOrigin ),  
     111    _viewportOrigin( copy._viewportOrigin ), 
    112112    _orthoSize( copy._viewportOrigin ), 
    113113    _orthoOrigin( copy._viewportOrigin ), 
     
    120120} 
    121121 
    122 DebugShadowMap::~DebugShadowMap()  
     122DebugShadowMap::~DebugShadowMap() 
    123123{ 
    124124} 
     
    145145    result = bb.center() != bb_prev.center() || bb.radius() != bb_prev.radius(); 
    146146    if( result ) 
    147         std::cout << "Box<" << name << "> ("  
     147        std::cout << "Box<" << name << "> (" 
    148148                  << ( bb._max._v[0] + bb._min._v[0] ) * 0.5 << " " 
    149                   << ( bb._max._v[1] + bb._min._v[1] ) * 0.5 << " "  
     149                  << ( bb._max._v[1] + bb._min._v[1] ) * 0.5 << " " 
    150150                  << ( bb._max._v[2] + bb._min._v[2] ) * 0.5 << ") [" 
    151151                  << ( bb._max._v[0] - bb._min._v[0] ) << " " 
     
    171171 
    172172    if( result ) { 
    173         std::cout << "Polytope<" << name  
     173        std::cout << "Polytope<" << name 
    174174                  << "> size(" << p.getPlaneList().size() << ")" 
    175175                  << std::endl; 
     
    180180                if( p.getPlaneList()[i] != p_prev.getPlaneList()[i] ) 
    181181                { 
    182                     std::cout << "Plane<" << i  
    183                         << "> ("  
     182                    std::cout << "Plane<" << i 
     183                        << "> (" 
    184184                        << p.getPlaneList()[i].asVec4()[0] << ", " 
    185185                        << p.getPlaneList()[i].asVec4()[1] << ", " 
    186186                        << p.getPlaneList()[i].asVec4()[2] << ", " 
    187187                        << p.getPlaneList()[i].asVec4()[3] << ")" 
    188                         << std::endl;                     
     188                        << std::endl; 
    189189                } 
    190190            } 
     
    209209 
    210210    if( result ) 
    211         std::cout << "Matrix<" << name << "> " << std::endl  
     211        std::cout << "Matrix<" << name << "> " << std::endl 
    212212            <<"[ " << m(0,0) << " " << m(0,1) << " " << m(0,2) << " " << m(0,3) << " ]  " << std::endl 
    213213            <<"[ " << m(1,0) << " " << m(1,1) << " " << m(1,2) << " " << m(1,3) << " ]  " << std::endl 
     
    221221 
    222222void DebugShadowMap::ViewData::setDebugPolytope 
    223     ( const char * name, const ConvexPolyhedron & polytope,  
     223    ( const char * name, const ConvexPolyhedron & polytope, 
    224224      osg::Vec4 colorOutline, osg::Vec4 colorInside ) 
    225225{ 
    226226    if( !getDebugDraw() ) return; 
    227227 
    228     if( &polytope == NULL ) { // delete         
     228    if( &polytope == NULL ) { // delete 
    229229        PolytopeGeometry & pg = _polytopeGeometryMap[ std::string( name ) ]; 
    230230        for( unsigned int i = 0; i < VECTOR_LENGTH( pg._geometry ) ; i++ ) 
     
    257257            } 
    258258 
    259             if( _geode[i].valid() &&  
     259            if( _geode[i].valid() && 
    260260                  !_geode[i]->containsDrawable( pg._geometry[i].get() ) ) { 
    261                         osg::Geode::DrawableList & dl =  
     261                        osg::Geode::DrawableList & dl = 
    262262                           const_cast< osg::Geode::DrawableList &> 
    263263                              ( _geode[i]->getDrawableList() ); 
    264264                        dl.insert( dl.begin(), pg._geometry[i].get() ); 
    265             }             
    266         }        
     265            } 
     266        } 
    267267    } 
    268268} 
     
    275275 
    276276    const int num = 2; // = VECTOR_LENGTH( PolytopeGeometry::_geometry ); 
    277      
    278     osg::Matrix     
    279         transform[ num ] =  
    280             { viewCam->getViewMatrix() *  
     277 
     278    osg::Matrix 
     279        transform[ num ] = 
     280            { viewCam->getViewMatrix() * 
    281281                // use near far clamped projection ( precomputed in cullDebugGeometry ) 
    282282                ( _viewCamera==viewCam ? _viewProjection : viewCam->getProjectionMatrix() ), 
    283               shadowCam->getViewMatrix() * shadowCam->getProjectionMatrix() },  
    284         inverse[ num ] =  
     283              shadowCam->getViewMatrix() * shadowCam->getProjectionMatrix() }, 
     284        inverse[ num ] = 
    285285            { osg::Matrix::inverse( transform[0] ), 
    286286              osg::Matrix::inverse( transform[1] ) }; 
     
    293293        frustum[i].transform( inverse[i], transform[i] ); 
    294294#else 
    295         frustum[i].transform  
     295        frustum[i].transform 
    296296            ( osg::Matrix::inverse( camera[i]->getProjectionMatrix() ), 
    297297              camera[i]->getProjectionMatrix() ); 
    298         frustum[i].transform  
     298        frustum[i].transform 
    299299            ( osg::Matrix::inverse( camera[i]->getViewMatrix() ), 
    300300              camera[i]->getViewMatrix() ); 
    301 #endif         
     301#endif 
    302302    }; 
    303303#else 
     
    321321        { 
    322322 
    323             ConvexPolyhedron cp( pg._polytope );         
     323            ConvexPolyhedron cp( pg._polytope ); 
    324324            cp.cut( frustum[i] ); 
    325325            cp.transform( transform[i], inverse[i] ); 
     
    332332 
    333333void DebugShadowMap::ViewData::cullDebugGeometry( ) 
    334 {    
     334{ 
    335335    if( !getDebugDraw() ) return; 
    336336    if( !_camera.valid() ) return; 
    337337 
    338     // View camera may use clamping projection matrix after traversal.  
     338    // View camera may use clamping projection matrix after traversal. 
    339339    // Since we need to know exact matrix for drawing the frusta, 
    340     // we have to compute it here in exactly the same way as cull visitor  
     340    // we have to compute it here in exactly the same way as cull visitor 
    341341    // will after cull traversal completes view camera subgraph. 
    342342    { 
     
    347347 
    348348            // Redo steps from CullVisitor::popProjectionMatrix() 
    349             // which clamps projection matrix when Camera & Projection  
     349            // which clamps projection matrix when Camera & Projection 
    350350            // completes traversal of their children 
    351351 
    352             // We have to do this now manually  
    353             // because we did not complete camera traversal yet but  
     352            // We have to do this now manually 
     353            // because we did not complete camera traversal yet but 
    354354            // we need to know how this clamped projection matrix will be 
    355355 
    356356            _cv->computeNearPlane(); 
    357          
     357 
    358358            osgUtil::CullVisitor::value_type n = _cv->getCalculatedNearPlane(); 
    359359            osgUtil::CullVisitor::value_type f = _cv->getCalculatedFarPlane(); 
     
    363363        } 
    364364    } 
    365      
     365 
    366366    updateDebugGeometry( _viewCamera.get(), _camera.get() ); 
    367      
    368 #if 1 // Add geometries of polytopes to main cam Render Stage  
     367 
     368#if 1 // Add geometries of polytopes to main cam Render Stage 
    369369    _transform[0]->accept( *_cv ); 
    370370#else 
     
    401401    { 
    402402        // view can be a slave that covers only a fraction of the screen 
    403         // so adjust debug hud location to proper viewport location  
     403        // so adjust debug hud location to proper viewport location 
    404404        _viewportOrigin[0] += vp->x(); 
    405405        _viewportOrigin[1] += vp->y(); 
     
    414414    _orthoSize                = st->_orthoSize; 
    415415    _orthoOrigin              = st->_orthoOrigin; 
    416      
     416 
    417417    _depthColorFragmentShader = st->_depthColorFragmentShader; 
    418418 
     
    421421    _geode[0] = new osg::Geode; 
    422422    _geode[1] = new osg::Geode; 
    423      
     423 
    424424    _cameraDebugHUD           = NULL;//Force debug HUD rebuild ( if needed ) 
    425425} 
     
    427427 
    428428// Callback used by debugging hud to display Shadow Map to color buffer 
    429 // Had to do it this way because OSG does not allow to use  
    430 // the same GL Texture Id with different glTexParams.  
    431 // Callback simply turns compare mode off via GL while rendering hud and  
    432 // restores it before rendering the scene with shadows.  
    433 class DebugShadowMap::DrawableDrawWithDepthShadowComparisonOffCallback:  
     429// Had to do it this way because OSG does not allow to use 
     430// the same GL Texture Id with different glTexParams. 
     431// Callback simply turns compare mode off via GL while rendering hud and 
     432// restores it before rendering the scene with shadows. 
     433class DebugShadowMap::DrawableDrawWithDepthShadowComparisonOffCallback: 
    434434    public osg::Drawable::DrawCallback 
    435435{ 
    436436public: 
    437     DrawableDrawWithDepthShadowComparisonOffCallback( osg::Texture *pTex )  
     437    DrawableDrawWithDepthShadowComparisonOffCallback( osg::Texture *pTex ) 
    438438        : _pTexture( pTex ) 
    439439    { 
     
    451451 
    452452        // Turn it back on 
    453         glTexParameteri( _pTexture->getTextureTarget(), GL_TEXTURE_COMPARE_MODE_ARB,  
    454             GL_COMPARE_R_TO_TEXTURE_ARB );             
     453        glTexParameteri( _pTexture->getTextureTarget(), GL_TEXTURE_COMPARE_MODE_ARB, 
     454            GL_COMPARE_R_TO_TEXTURE_ARB ); 
    455455    } 
    456456 
     
    460460void DebugShadowMap::ViewData::dump( const std::string & filename ) 
    461461{ 
    462     osg::ref_ptr< osg::Group > root = new osg::Group;     
     462    osg::ref_ptr< osg::Group > root = new osg::Group; 
    463463    osgUtil::CullVisitor * cv = _cv.get(); 
    464464 
     
    487487        { 
    488488 
    489             ConvexPolyhedron cp( pg._polytope );         
     489            ConvexPolyhedron cp( pg._polytope ); 
    490490 
    491491            pg._geometry[i] = cp.buildGeometry 
     
    505505 
    506506void DebugShadowMap::ViewData::createDebugHUD( ) 
    507 {     
     507{ 
    508508    _cameraDebugHUD = new osg::Camera; 
    509509 
     
    519519    } 
    520520 
    521     { // Initialize hud camera     
     521    { // Initialize hud camera 
    522522        osg::Camera * camera = _cameraDebugHUD.get(); 
    523523        camera->setComputeNearFarMode(osg::Camera::DO_NOT_COMPUTE_NEAR_FAR); 
     
    527527                             _viewportSize[0], _viewportSize[1] ); 
    528528 
    529         camera->setProjectionMatrixAsOrtho(  
    530                 _orthoOrigin[0], _orthoOrigin[0] + _orthoSize[0],  
     529        camera->setProjectionMatrixAsOrtho( 
     530                _orthoOrigin[0], _orthoOrigin[0] + _orthoSize[0], 
    531531                _orthoOrigin[1], _orthoOrigin[1] + _orthoSize[1], 
    532                 -10, 10 );    
     532                -10, 10 ); 
    533533 
    534534        camera->setClearMask(GL_DEPTH_BUFFER_BIT); 
     
    541541        _cameraDebugHUD->addChild(geode); 
    542542 
    543         // finally create and attach hud geometry  
     543        // finally create and attach hud geometry 
    544544        osg::Geometry* geometry = osg::createTexturedQuadGeometry 
    545545            ( osg::Vec3(_hudOrigin[0],_hudOrigin[1],0), 
    546               osg::Vec3(_hudSize[0],0,0),  
     546              osg::Vec3(_hudSize[0],0,0), 
    547547              osg::Vec3(0,_hudSize[1],0) ); 
    548      
     548 
    549549        osg::StateSet* stateset = _cameraDebugHUD->getOrCreateStateSet(); 
    550550        stateset->setTextureAttribute(0,_texture.get(),osg::StateAttribute::ON ); 
     
    554554            ( new osg::Depth( osg::Depth::ALWAYS, 0, 1, false ) ); 
    555555        stateset->setMode(GL_BLEND,osg::StateAttribute::ON); 
    556      
     556 
    557557        osg::Program* program = new osg::Program; 
    558558        program->addShader( _depthColorFragmentShader.get() ); 
     
    573573        stateset->setMode(GL_BLEND, osg::StateAttribute::ON); 
    574574        stateset->setMode(GL_CULL_FACE, osg::StateAttribute::OFF); 
    575         stateset->setAttribute( new osg::Program() );            
     575        stateset->setAttribute( new osg::Program() ); 
    576576        stateset->setAttributeAndModes 
    577577            ( new osg::Depth( osg::Depth::LEQUAL, 0, 1, false ) ); 
     
    586586 
    587587        _transform[1]->setMatrix 
    588             ( osg::Matrix::translate( 1, 1, 0 ) *  
     588            ( osg::Matrix::translate( 1, 1, 0 ) * 
    589589              osg::Matrix::scale( 0.5, 0.5, 1 ) * 
    590               osg::Matrix::scale( _hudSize[0], _hudSize[1], 1 ) *  
     590              osg::Matrix::scale( _hudSize[0], _hudSize[1], 1 ) * 
    591591              osg::Matrix::translate( _hudOrigin[0], _hudOrigin[1], 0 ) ); 
    592592 
     
    598598     ( const osg::Matrix & mvpwView, 
    599599       const osg::Matrix & mvpwShadow, 
    600        const osg::Vec3d & vWorld,  
     600       const osg::Vec3d & vWorld, 
    601601       const osg::Vec3d & vDelta ) 
    602602{ 
     
    609609    osg::Vec3d dV = vV1 - vV0; 
    610610    osg::Vec3d dS = vS1 - vS0; 
    611      
     611 
    612612    return osg::Vec3( dS[0] / dV[0], dS[1] / dV[1], dS[2] / dV[2] ); 
    613613} 
    614614 
    615615void DebugShadowMap::ViewData::displayShadowTexelToPixelErrors 
    616   ( const osg::Camera* viewCamera,  
    617     const osg::Camera* shadowCamera,  
     616  ( const osg::Camera* viewCamera, 
     617    const osg::Camera* shadowCamera, 
    618618    const ConvexPolyhedron* hull ) 
    619619{ 
     
    628628        shadowCamera->getViewport()->computeWindowMatrix(); 
    629629 
    630     osg::BoundingBox bb =  
     630    osg::BoundingBox bb = 
    631631        hull->computeBoundingBox( viewCamera->getViewMatrix() ); 
    632632 
     
    644644        << "ne=(" << vne[0] << "," << vne[1] << "," << vne[2] << ")  " 
    645645        << "fe=(" << vfe[0] << "," << vfe[1] << "," << vfe[2] << ")  " 
    646         << "me=(" << vme[0] << "," << vme[1] << "," << vme[2] << ")  "  
     646        << "me=(" << vme[0] << "," << vme[1] << "," << vme[2] << ")  " 
    647647        << "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b" 
    648648        << "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"