Changeset 144


Ignore:
Timestamp:
06/22/05 00:38:49 (19 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/GtpVisibility/include/DummyQueryManager.h

    r143 r144  
    2525                            InfoContainer<NodeInfo> *visibleNodes, 
    2626                            InfoContainer<MeshInfo> *visibleGeometry, 
    27                             bool projectedPixels = false 
    28                             ); 
     27                            bool relativeVisibility = false ); 
    2928     
    3029    /** 
     
    3534                               InfoContainer<NodeInfo> *visibleNodes, 
    3635                               InfoContainer<MeshInfo> *visibleGeometry, 
    37                                bool projectedPixels = false 
     36                               bool relativeVisibility = false 
    3837                               ); 
    3938     
  • trunk/VUT/GtpVisibility/include/QueryManager.h

    r143 r144  
    5151                            InfoContainer<NodeInfo> *visibleNodes, 
    5252                            InfoContainer<MeshInfo> *visibleGeometry, 
    53                             bool projectedPixels = false 
     53                            bool relativeVisibility = false 
    5454                            ) = 0; 
    5555     
     
    6262                               InfoContainer<NodeInfo> *visibleNodes, 
    6363                               InfoContainer<MeshInfo> *visibleGeometry, 
    64                                bool projectedPixels = false 
     64                               bool relativeVisibility = false 
    6565                               ) = 0; 
    6666     
  • trunk/VUT/GtpVisibility/include/VisibilityInfo.h

    r143 r144  
    2727        HierarchyNode *GetNode() const {return mNode;} 
    2828 
     29        float ComputeRelativeVisibility() { float result = mVisiblePixels; if (mProjectedPixels) result /= (float)mProjectedPixels; return result;} 
    2930        //bool operator<(const NodeInfo& rhs) const {return mNode < rhs.mNode;} 
    3031 
  • trunk/VUT/GtpVisibility/scripts/GtpVisibility.vcproj

    r136 r144  
    133133                        </File> 
    134134                        <File 
     135                                RelativePath="..\src\VisibilityInfo.cpp"> 
     136                        </File> 
     137                        <File 
    135138                                RelativePath="..\src\VisibilityManager.cpp"> 
    136139                        </File> 
  • trunk/VUT/GtpVisibility/src/DummyQueryManager.cpp

    r143 r144  
    1111                                             InfoContainer<NodeInfo> *visibleNodes, 
    1212                                             InfoContainer<MeshInfo> *visibleGeometry, 
    13                                              bool projectedPixels 
    14                                              ) 
     13                                             bool relativeVisibility) 
    1514  { 
    1615          visibleNodes->push_back(NodeInfo(mHierarchyInterface->GetSceneRoot(), 0, 0)); 
     
    3029                                                InfoContainer<NodeInfo> *visibleNodes, 
    3130                                                InfoContainer<MeshInfo> *visibleGeometry, 
    32                                                 bool projectedPixels 
    33                                                 ) 
     31                                                bool relativeVisibility) 
    3432  { 
    3533          visibleNodes->push_back(NodeInfo(mHierarchyInterface->GetSceneRoot(), 0, 0)); 
  • trunk/VUT/Ogre/include/OgrePlatformQueryManager.h

    r143 r144  
    4141                            InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    4242                            InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    43                             bool projectedPixels = false 
     43                            bool relativeVisibility = false 
    4444                            ); 
    4545     
     
    5252                               InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    5353                               InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    54                                bool projectedPixels = false 
     54                               bool relativeVisibility = false 
    5555                               ); 
    5656     
     
    7373             );   
    7474 
    75         /** Sets a viewport to render into. 
     75        /** Sets a viewport for rendering. 
    7676        */ 
    7777        void SetViewport(Viewport *vp); 
  • trunk/VUT/Ogre/src/OgrePlatformQueryManager.cpp

    r143 r144  
    2323                            InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    2424                            InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    25                             bool projectedPixels) 
     25                            bool relativeVisibility) 
    2626{ 
    2727        // we need access to the scene manager and the rendersystem 
     
    6868        */ 
    6969        // for relative visibility we need 2 rendering passes 
    70         int n = projectedPixels ? 2 : 1; 
     70        int n = relativeVisibility ? 2 : 1; 
    7171         
    7272        for (int i=0; i<n; ++i) 
     
    104104 
    105105        //---- collect results 
    106         unsigned int visiblePixels = 0; 
     106         
    107107        std::pair<InfoContainer<GtpVisibility::NodeInfo>::iterator, bool> insertNode; 
    108108        std::pair<InfoContainer<GtpVisibility::MeshInfo>::iterator, bool> insertGeom; 
     
    116116        for (nodeIt = nodeList->begin(); nodeIt != nodeIt_end; ++nodeIt) 
    117117        { 
     118                unsigned int visiblePixels = 0; 
    118119                (*visQueryIt)->GetQueryResult(visiblePixels, true); 
    119120         
    120                 int visiblePixels = visiblePixels; 
    121                 int projectedPixels = 0; 
    122  
    123                 if (projectedPixels) 
    124                 { 
    125                         (*projQueryIt)->GetQueryResult(visiblePixels, true); 
    126          
    127                         mProjectedPixels = visiblePixels; 
     121                unsigned int projectedPixels = 0; 
     122 
     123                if (relativeVisibility) 
     124                { 
     125                        (*projQueryIt)->GetQueryResult(projectedPixels, true); 
    128126                 
    129127                        ++projQueryIt; 
     
    145143        for (geometryIt = geometryList.begin(); geometryIt != geometryIt_end; ++geometryIt) 
    146144        { 
     145                unsigned int visiblePixels = 0; 
    147146                (*visQueryIt)->GetQueryResult(visiblePixels, true); 
    148147                 
    149                 int visiblePixels = visiblePixels; 
    150                 int projectedPixels = 0; 
    151  
    152                 if (projectedPixels) 
    153                 { 
    154                         (*projQueryIt)->GetQueryResult(visiblePixels, true); 
    155  
    156                         mProjectedPixels = visiblePixels; 
     148                unsigned int projectedPixels = 0; 
     149 
     150                if (relativeVisibility) 
     151                { 
     152                        (*projQueryIt)->GetQueryResult(projectedPixels, true); 
    157153 
    158154                        ++projQueryIt; 
     
    163159                // approximate depth ordering during rendering =>  
    164160                // geometry maybe occluded 
    165                 if (isVisible) 
     161                if (visiblePixels > 0) 
    166162                {                         
    167                         visibleGeometry->push_back(GtpVisibility::MeshInfo(*geometryIt,visiblePixels, projectedPixels)); 
     163                        visibleGeometry->push_back(GtpVisibility::MeshInfo(*geometryIt,  
     164                                visiblePixels, projectedPixels)); 
    168165                } 
    169166        } 
     
    181178} 
    182179//----------------------------------------------------------------------- 
     180inline bool nodeinfo_lower(const GtpVisibility::NodeInfo &info1, const GtpVisibility::NodeInfo &info2)  
     181{  
     182        return info1.GetNode() < info2.GetNode();  
     183} 
     184//----------------------------------------------------------------------- 
     185inline bool meshinfo_lower(const GtpVisibility::MeshInfo &info1, const GtpVisibility::MeshInfo &info2)  
     186{  
     187        return info1.GetMesh() < info2.GetMesh();  
     188} 
     189//----------------------------------------------------------------------- 
    183190void PlatformQueryManager::ComputeFromPointVisibility(const Vector3 &point, 
    184191                               InfoContainer<GtpVisibility::NodeInfo> *visibleNodes, 
    185192                               InfoContainer<GtpVisibility::MeshInfo> *visibleGeometry, 
    186                                bool projectedPixels) 
     193                               bool relativeVisibility) 
    187194{ 
    188195        SceneManager *sm = dynamic_cast<PlatformHierarchyInterface *>(mHierarchyInterface)->GetSceneManager(); 
     
    221228                LogManager::getSingleton().logMessage(d.str()); 
    222229 
    223                 ComputeCameraVisibility(*cam, visibleNodes, visibleGeometry, projectedPixels); 
     230                ComputeCameraVisibility(*cam, visibleNodes, visibleGeometry, relativeVisibility); 
    224231                 
    225232                //mViewport->getTarget()->update(); for(int j=0; j<10000000; j++)       printf("HAAHHAHAHAHAH"); 
     
    240247 
    241248        // --- visible nodes 
    242         sort(visibleNodes->begin(), visibleNodes->end()); 
     249        sort(visibleNodes->begin(), visibleNodes->end(), nodeinfo_lower); 
    243250        InfoContainer<GtpVisibility::NodeInfo>::iterator visibleNodesIt, 
    244251                visibleNodesIt_end = visibleNodes->end(); 
     
    256263                { 
    257264                        // add visibility 
    258                         nodeInfo->SetVisibility(nodeInfo->GetVisiblePixels() +  
     265                        nodeInfo->SetVisiblePixels(nodeInfo->GetVisiblePixels() +  
    259266                                (*visibleNodesIt).GetVisiblePixels()); 
     267                 
     268                        nodeInfo->SetProjectedPixels(nodeInfo->GetProjectedPixels() +  
     269                                (*visibleNodesIt).GetProjectedPixels()); 
    260270                } 
    261271 
     
    267277 
    268278        // --- visible geometry 
    269         sort(visibleGeometry->begin(), visibleGeometry->end()); 
     279        sort(visibleGeometry->begin(), visibleGeometry->end(), meshinfo_lower); 
    270280        InfoContainer<GtpVisibility::MeshInfo>::iterator visibleGeomIt, 
    271281                visibleGeomIt_end = visibleGeometry->end(); 
     
    283293                { 
    284294                        // add visibility 
    285                         geomInfo->SetVisibility(geomInfo->GetVisiblePixels() +  
     295                        geomInfo->SetVisiblePixels(geomInfo->GetVisiblePixels() +  
    286296                                (*visibleGeomIt).GetVisiblePixels()); 
     297 
     298                        geomInfo->SetProjectedPixels(nodeInfo->GetProjectedPixels() +  
     299                                (*visibleNodesIt).GetProjectedPixels()); 
    287300                } 
    288301        } 
    289302 
    290303        // now delete duplicates 
    291         visibleGeometry->erase(std::unique(visibleGeometry->begin(),  
    292                 visibleGeometry->end(), meshinfo_eq), visibleGeometry->end()); 
     304        visibleGeometry->erase(std::unique(visibleGeometry->begin(), visibleGeometry->end(),  
     305                meshinfo_eq), visibleGeometry->end()); 
    293306         
    294307} 
  • trunk/VUT/work/TestCullingTerrain/TerrainFrameListener.cpp

    r143 r144  
    353353} 
    354354//----------------------------------------------------------------------- 
    355 void TerrainFrameListener::ApplyVisibilityQuery(bool fromPoint, bool projectedPixels) 
     355void TerrainFrameListener::ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility) 
    356356{ 
    357357        InfoContainer<GtpVisibility::NodeInfo> visibleNodes; 
     
    362362                mVisibilityManager->GetQueryManager()-> 
    363363                        ComputeFromPointVisibility(mCamNode->getPosition(), &visibleNodes,  
    364                                                                            &visibleGeometry, projectedPixels); 
     364                                                                           &visibleGeometry, relativeVisibility); 
    365365        } 
    366366        else 
    367367        { 
    368368                mVisibilityManager->GetQueryManager()->ComputeCameraVisibility(*mCamera, 
    369                             &visibleNodes, &visibleGeometry, projectedPixels); 
     369                            &visibleNodes, &visibleGeometry, relativeVisibility); 
    370370        } 
    371371 
     
    405405                //-- visibility queries stats 
    406406                int idx = fromPoint ?  1 : 0; 
    407                 idx += projectedPixels ? 2 : 0; 
     407                idx += relativeVisibility ? 2 : 0; 
    408408 
    409409                sprintf(str, ": %s", queryTypeCaptions[idx].c_str());  
  • trunk/VUT/work/TestCullingTerrain/TerrainFrameListener.h

    r143 r144  
    120120                visible pixels / projected pixels. 
    121121        */ 
    122         void ApplyVisibilityQuery(bool fromPoint, bool projectedPixels); 
     122        void ApplyVisibilityQuery(bool fromPoint, bool relativeVisibility); 
    123123 
    124124        void toggleShowQueryStats(); 
  • trunk/VUT/work/TestCullingTerrain/TestCullingTerrainApplication.cpp

    r139 r144  
    7171        bool result = ExampleApplication::setup(); 
    7272 
    73         createRenderTargetListener(); 
     73        if (mWindow) 
     74                createRenderTargetListener(); 
    7475 
    7576        return result; 
Note: See TracChangeset for help on using the changeset viewer.