Ignore:
Timestamp:
10/10/06 09:05:48 (18 years ago)
Author:
mattausch
Message:

added demo hack

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreOcclusionCullingSceneManager.cpp

    r1595 r1597  
    168168        // ignore 
    169169    } 
     170 
    170171        // add bounding boxes of rendered objects 
    171172        if (0) 
     
    175176        } 
    176177 
    177         MovableObjectsMap::const_iterator mit, mit_end = mViewCellsGeometry.end(); 
    178 /* 
    179         for (mit = mViewCellsGeometry.begin(); mit != mit_end; ++ mit) 
    180         { 
    181                 (*mit).second->_updateRenderQueue(getRenderQueue()); 
    182         } 
    183 */       
    184  
    185         if (mRenderNodesForViz || mRenderNodesContentForViz) 
     178        // set old view cell geometry to invisible 
     179    if (mCurrentViewCell && mCurrentViewCell->GetMesh()) 
     180        { 
     181                const int id = mCurrentViewCell->GetId(); 
     182                mViewCellsGeometry[id]->_updateRenderQueue(getRenderQueue()); 
     183        } 
     184 
     185    if (mRenderNodesForViz || mRenderNodesContentForViz) 
    186186        { 
    187187                // HACK: change node material so it is better suited for visualization 
     
    195195                        if (mRenderNodesForViz) 
    196196                        { 
    197                                 // render the leaf nodes 
     197                                // render the visible leaf nodes 
    198198                                if ((*it)->numAttachedObjects() &&  
    199199                                        !(*it)->numChildren() &&  
     
    201201                                        (*it)->getAttachedObject(0)->isVisible()) 
    202202                                { 
    203                                         getRenderQueue()->addRenderable((*it)); 
     203                                        //getRenderQueue()->addRenderable((*it)); 
     204                                        (*it)->_addToRenderQueue(cam, getRenderQueue(), false); 
    204205                                } 
    205206 
    206                                 // addbounding boxes instead of node itself 
     207                                // add bounding boxes instead of node itself 
    207208                                //(*it)->_addBoundingBoxToQueue(getRenderQueue()); 
    208209                        } 
    209210 
    210211                        // add renderables itself 
    211                         if (mRenderNodesContentForViz)  
     212                        if (0 && mRenderNodesContentForViz)  
    212213                        { 
    213214                                (*it)->_addToRenderQueue(cam, getRenderQueue(), false); 
     
    296297                                                                                                                bool onlyShadowCasters) 
    297298{ 
     299        /////////// 
     300        //-- set visibility according to pvs of current view cell 
     301 
     302        UpdatePvs(cam); 
     303 
    298304        if (mNormalExecution) 
    299305        { 
     
    311317        else  
    312318        {        
    313                 // for hierarchical culling, we interleave identification  
     319                // hierarchical culling interleaves identification  
    314320                // and rendering of objects in _renderVisibibleObjects 
    315321 
    316322                // for the shadow pass we use only standard rendering 
    317                 // because of low occlusion 
     323                // because shadows have low occlusion snyway 
    318324                if (mShadowTechnique == SHADOWTYPE_TEXTURE_MODULATIVE &&  
    319325                        mIlluminationStage == IRS_RENDER_TO_TEXTURE) 
     
    324330                // only shadow casters will be rendered in shadow texture pass 
    325331                if (0) mHierarchyInterface->SetOnlyShadowCasters(onlyShadowCasters); 
    326  
    327                 /////////// 
    328                 //-- apply view cell pvs 
    329                 UpdatePvs(cam); 
    330332        } 
    331333                 
     
    453455                        } 
    454456                } 
     457                /*const bool mVisualizeViewCells = true; 
     458                if (mVisualizeViewCells) 
     459                { 
     460                        MovableObjectsMap::const_iterator mit, mit_end = mViewCellsGeometry.end(); 
     461                         
     462                        for (mit = mViewCellsGeometry.begin(); mit != mit_end; ++ mit) 
     463                        { 
     464                                (*mit).second->_updateRenderQueue(getRenderQueue()); 
     465                        }        
     466                }*/ 
    455467 
    456468                ///////////// 
    457469                //-- now we can render all remaining queue objects 
    458470                //-- used for depth pass, transparents, overlay 
    459                 clearSpecialCaseRenderQueues(); 
     471 
     472        clearSpecialCaseRenderQueues(); 
    460473 
    461474                TerrainSceneManager::_renderVisibleObjects(); 
     
    714727                        // Do transparents (always descending) 
    715728                        renderObjects(pPriorityGrp->getTransparents(),  
    716                         QueuedRenderableCollection::OM_SORT_DESCENDING, true); 
     729                                QueuedRenderableCollection::OM_SORT_DESCENDING, true); 
    717730                } 
    718731 
     
    10291042                   // Sort the queue first 
    10301043                   pPriorityGrp->sort(mCameraInProgress); 
    1031  
    10321044                   // Do (shadowable) solids 
    10331045                   OctreeSceneManager::renderObjects(pPriorityGrp->getSolidsBasic(), om, true); 
     
    11181130 
    11191131        mElementaryViewCell = newElementary; 
    1120         LogManager::getSingleton().logMessage("unloading"); 
    1121          
    1122                 std::stringstream d; 
    1123                 d << "here2 " << mViewCellsGeometry.size(); 
    1124                 LogManager::getSingleton().logMessage(d.str()); 
     1132         
    11251133 
    11261134        ////////////// 
     
    11281136 
    11291137        ApplyViewCellPvs(mCurrentViewCell, false); 
    1130  
    1131         // set old view cell geometry to invisible 
    1132     if (mCurrentViewCell && mCurrentViewCell->GetMesh()) 
    1133         { 
    1134                 const int id = mCurrentViewCell->GetId(); 
    1135                  
    1136                 std::stringstream str; 
    1137                 str << "id : " << id << " of " << mViewCellsGeometry.size(); 
    1138                 LogManager::getSingleton().logMessage(str.str()); 
    1139  
    1140                 mViewCellsGeometry[id]->setVisible(false); 
    1141         } 
    11421138 
    11431139        // the new view cell 
     
    11551151        else 
    11561152        { 
    1157                 viewCell = newElementary;LogManager::getSingleton().logMessage("here55"); 
     1153                viewCell = newElementary; 
    11581154        } 
    11591155 
    11601156        /////////////// 
    11611157        //-- load new pvs 
    1162  
    1163         // set new view cell geometry to invisible 
    1164         if (viewCell && viewCell->GetMesh()) 
    1165         { 
    1166                 const int id = viewCell->GetId(); 
    1167                  
    1168                 std::stringstream str; 
    1169                 str << "id : " << id << " of " << mViewCellsGeometry.size(); 
    1170                 LogManager::getSingleton().logMessage(str.str()); 
    1171  
    1172                 mViewCellsGeometry[id]->setVisible(false); 
    1173         } 
    11741158 
    11751159        ApplyViewCellPvs(viewCell, true); 
     
    12001184 
    12011185                std::stringstream str; 
    1202                 str << "id : " << viewCell->GetId(); 
    1203  
     1186                str << "processing view cell with id : " << viewCell->GetId(); 
     1187                LogManager::getSingleton().logMessage(str.str()); 
    12041188                ManualObject *manual = OgreTypeConverter::ConvertToOgre(viewCell->GetMesh(), this); 
    12051189                mViewCellsGeometry[viewCell->GetId()] = manual; 
     
    12071191                // attach to scene node 
    12081192                getRootSceneNode()->createChildSceneNode()->attachObject(manual); 
    1209                  
     1193                manual->setQueryFlags(0); // returned by no query 
    12101194                // initialy set to invisible 
    1211                 manual->setVisible(false); 
     1195                //manual->setVisible(false); 
    12121196        } 
    12131197} 
Note: See TracChangeset for help on using the changeset viewer.