Ignore:
Timestamp:
06/19/08 04:34:20 (17 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/CHC_revisited
Files:
50 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/CHC_revisited/AxisAlignedBox3.cpp

    r2762 r2776  
    88 
    99 
    10 namespace CHCDemo 
     10namespace CHCDemoEngine 
    1111{ 
    1212 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/AxisAlignedBox3.h

    r2755 r2776  
    77 
    88 
    9 namespace CHCDemo 
     9namespace CHCDemoEngine 
    1010{ 
    1111 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/BinaryLoader.cpp

    r2769 r2776  
    1111 
    1212 
    13 namespace CHCDemo 
     13namespace CHCDemoEngine 
    1414{ 
    1515 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/BinaryLoader.h

    r2764 r2776  
    1111 
    1212 
    13 namespace CHCDemo 
     13namespace CHCDemoEngine 
    1414{ 
    1515 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Bvh.cpp

    r2775 r2776  
    1515 
    1616 
    17 namespace CHCDemo 
     17namespace CHCDemoEngine 
    1818{ 
    1919 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Bvh.h

    r2775 r2776  
    1010 
    1111 
    12 namespace CHCDemo 
     12namespace CHCDemoEngine 
    1313{ 
    1414 
     
    240240 
    241241 
    242 void BvhNode::SetVisible(const bool visible)  
     242void BvhNode::SetVisible(bool visible)  
    243243{  
    244244        mVisibility.mIsVisible = visible;  
     
    258258 
    259259 
    260 void BvhNode::SetTimesTestedInvisible(const int t)  
     260void BvhNode::SetTimesTestedInvisible(int t)  
    261261{  
    262262        mVisibility.mTimesInvisible = t;  
  • GTP/trunk/App/Demos/Vis/CHC_revisited/BvhLoader.cpp

    r2773 r2776  
    88 
    99 
    10 namespace CHCDemo 
     10namespace CHCDemoEngine 
    1111{ 
    1212 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/BvhLoader.h

    r2760 r2776  
    77 
    88 
    9 namespace CHCDemo 
     9namespace CHCDemoEngine 
    1010{ 
    1111 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/CHCPlusPlusTraverser.cpp

    r2774 r2776  
    44using namespace std; 
    55 
    6 namespace CHCDemo 
     6namespace CHCDemoEngine 
    77{ 
    88 
     
    1818        const int visible = query->GetQueryResult() > mVisibilityThreshold; 
    1919 
    20         BvhNode *node = query->GetFrontNode(); 
    21  
    22         if (visible) 
    23         { 
    24                 // node was previously invisible 
    25                 if (!node->IsVisible()) 
    26                 { 
    27                         // reset flag 
    28                         node->SetTimesTestedInvisible(0); 
    29                         node->SetAssumedVisibleFrameId(mFrameId + mAssumedVisibleFrames); 
     20        // multiquery 
     21        if (query->GetSize() > 1) 
     22        { 
     23                // failed query: query individual nodes 
     24                if (visible) 
     25                { 
     26                        for (size_t i = 0; i < query->GetSize(); ++ i) 
     27                        { 
     28                                BvhNode *node = query->GetNodes()[i]; 
     29                                OcclusionQuery *q = IssueOcclusionQuery(node, false); 
     30                                mQueryQueue.push(q); 
     31                        } 
     32                } 
     33                else // query successful: update classifications 
     34                { 
     35                        for (size_t i = 0; i < query->GetSize(); ++ i) 
     36                        { 
     37                                BvhNode *node = query->GetNodes()[i]; 
     38                                node->IncTimesTestedInvisible(); 
     39                                node->SetVisible(false); 
     40                        } 
     41 
     42                        mStats.mNumQueryCulledNodes += query->GetSize(); 
     43                } 
     44        } 
     45        else // single query 
     46        { 
     47                BvhNode *node = query->GetFrontNode(); 
     48 
     49                // failed query: query individual nodes 
     50                if (visible) 
     51                { 
     52                        // node was previously invisible 
     53                        if (!node->IsVisible()) 
     54                        { 
     55                                // reset flag 
     56                                node->SetTimesTestedInvisible(0); 
     57                                node->SetAssumedVisibleFrameId(mFrameId + mAssumedVisibleFrames); 
     58                        } 
     59                        else 
     60                        {       // randomize first invokation 
     61                                node->SetAssumedVisibleFrameId(mFrameId + Random(mAssumedVisibleFrames + 1)); 
     62                        } 
     63 
     64                        mBvh->MakeParentsVisible(node); 
     65                        TraverseNode(node); 
    3066                } 
    3167                else 
    32                         // randomize first invokation 
    33                         node->SetAssumedVisibleFrameId(mFrameId + Random(mAssumedVisibleFrames + 1)); 
    34  
    35                 mBvh->MakeParentsVisible(node); 
    36                 TraverseNode(node); 
    37         } 
    38         else 
    39         { 
    40                 node->IncTimesTestedInvisible(); 
    41                 ++ mStats.mNumQueryCulledNodes; 
    42         } 
    43  
    44         node->SetVisible(visible); 
     68                { 
     69                        node->IncTimesTestedInvisible(); 
     70                        ++ mStats.mNumQueryCulledNodes; 
     71                } 
     72 
     73                node->SetVisible(visible); 
     74        } 
    4575} 
    4676 
     
    5181        while (!mDistanceQueue.empty() || !mQueryQueue.empty()) 
    5282        { 
    53                 bool resultAvailable; 
     83                bool resultAvailable = false; 
    5484                while (!mQueryQueue.empty() &&  
    5585                           (mDistanceQueue.empty() || (resultAvailable = mQueryQueue.front()->ResultAvailable()))) 
     
    119149                                                } 
    120150                                        } 
     151                                        else 
     152                                        { 
     153                                                if (node->IsVirtualLeaf()) 
     154                                                { 
     155                                                        node->SetVisible(true); 
     156                                                        mBvh->MakeParentsVisible(node); 
     157                                                }  
     158                                                else // reset visibility classification 
     159                                                { 
     160                                                        node->SetVisible(false); 
     161                                                } 
     162                                        } 
    121163                                         
    122164                                        // always traverse a node if it was previously visible 
     
    202244                if (query->GetNodes().empty()) 
    203245                { 
     246                        // single node will anever cause a wasted query 
    204247                        newBatchVal = 1.0f; 
    205248                } 
     
    219262        } 
    220263 
     264        //cout <<"size: " << query->GetSize() << endl; 
    221265        IssueOcclusionQuery(*query, false); 
    222266 
     
    227271void CHCPlusPlusTraverser::IssueMultiQueries() 
    228272{ 
    229         if (0 && mUseRenderQueue) 
    230         { 
    231                 if (mRenderState->SetState(RenderState::RENDER)) 
    232                         ++ mStats.mNumStateChanges; 
    233          
    234                 mRenderQueue.Render(); 
    235                 mRenderQueue.Clear(); 
    236         } 
    237  
    238273        while (!mIQueue.empty()) 
    239274        { 
    240                 BvhNode *node = mIQueue.front(); 
    241                 mIQueue.pop(); 
    242  
    243                 OcclusionQuery *query = GetNextMultiQuery(mIQueue); 
    244                 //OcclusionQuery *query = IssueOcclusionQuery(node); 
     275                OcclusionQuery *query; 
     276 
     277                if (mUseMultiQueries) 
     278                { 
     279                        query = GetNextMultiQuery(mIQueue); 
     280                } 
     281                else 
     282                { 
     283                        BvhNode *node = mIQueue.front(); 
     284                        mIQueue.pop(); 
     285                        query = IssueOcclusionQuery(node, false); 
     286                } 
    245287 
    246288                mQueryQueue.push(query); 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/CHCPlusPlusTraverser.h

    r2773 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/CHCTraverser.cpp

    r2770 r2776  
    33 
    44 
    5 namespace CHCDemo 
     5namespace CHCDemoEngine 
    66{ 
    77 
     
    2727                        { 
    2828                                BvhNode *node = query->GetFrontNode(); 
     29                                node->SetAssumedVisibleFrameId(mFrameId + mAssumedVisibleFrames); 
    2930 
    3031                                node->SetVisible(true); 
     
    3435                        else 
    3536                        { 
     37                                 
    3638                                ++ mStats.mNumQueryCulledNodes; 
    3739                        } 
     
    6365                                         
    6466                                        // identify nodes that we cannot skip queries for 
    65                                         const bool leafOrWasInvisible = (!wasVisible || node->IsVirtualLeaf()); 
    66  
    67                                         // reset node's visibility classification  
    68                                         node->SetVisible(false); 
     67                                        const bool testFeasible = (!wasVisible ||  
     68                                                (node->IsVirtualLeaf() && (node->GetAssumedVisibleFrameId() <= mFrameId))); 
    6969 
    7070                                        // update node's visited flag 
     
    7272                                         
    7373                                        // skip testing previously visible interior nodes 
    74                                         if (leafOrWasInvisible) 
     74                                        if (testFeasible) 
    7575                                        { 
    7676                                                OcclusionQuery *query = IssueOcclusionQuery(node, wasVisible); 
    7777                                                mQueryQueue.push(query); 
    7878                                        } 
     79                                        else 
     80                                        { 
     81                                                if (node->IsVirtualLeaf()) 
     82                                                { 
     83                                                        node->SetVisible(true); 
     84                                                        mBvh->MakeParentsVisible(node); 
     85                                                }  
     86                                                else // reset visibility classification 
     87                                                { 
     88                                                        node->SetVisible(false); 
     89                                                } 
     90                                        } 
     91 
    7992                                         
    8093                                        // always traverse a node if it was visible 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/CHCTraverser.h

    r2771 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Camera.cpp

    r2764 r2776  
    44 
    55 
    6 namespace CHCDemo  
     6namespace CHCDemoEngine  
    77{ 
    88 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Camera.h

    r2764 r2776  
    77 
    88 
    9 namespace CHCDemo  
     9namespace CHCDemoEngine  
    1010{ 
    1111 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/FrustumCullingTraverser.cpp

    r2771 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/FrustumCullingTraverser.h

    r2767 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Geometry.cpp

    r2773 r2776  
    55 
    66 
    7 namespace CHCDemo  
     7namespace CHCDemoEngine  
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Geometry.h

    r2773 r2776  
    77 
    88 
    9 namespace CHCDemo  
     9namespace CHCDemoEngine  
    1010{ 
    1111 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Material.cpp

    r2769 r2776  
    66 
    77 
    8 namespace CHCDemo 
     8namespace CHCDemoEngine 
    99{ 
    1010 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Material.h

    r2769 r2776  
    33 
    44 
    5 namespace CHCDemo  
     5namespace CHCDemoEngine  
    66{ 
    77 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Matrix4x4.cpp

    r2752 r2776  
    66using namespace std; 
    77 
    8 namespace CHCDemo  
     8namespace CHCDemoEngine  
    99{ 
    1010 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Matrix4x4.h

    r2756 r2776  
    55 
    66 
    7 namespace CHCDemo  
     7namespace CHCDemoEngine  
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/OcclusionQuery.cpp

    r2773 r2776  
    66 
    77 
    8 namespace CHCDemo 
     8namespace CHCDemoEngine 
    99{ 
    1010 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/OcclusionQuery.h

    r2773 r2776  
    66 
    77 
    8 namespace CHCDemo  
     8namespace CHCDemoEngine  
    99{  
    1010 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Plane3.cpp

    r2762 r2776  
    33 
    44 
    5 namespace CHCDemo  
     5namespace CHCDemoEngine  
    66{ 
    77 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Plane3.h

    r2762 r2776  
    55 
    66 
    7 namespace CHCDemo  
     7namespace CHCDemoEngine  
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/RenderQueue.cpp

    r2773 r2776  
    99 
    1010 
    11 namespace CHCDemo 
     11namespace CHCDemoEngine 
    1212{ 
    1313 
     
    1515inline static bool IsLower(SceneEntity *ent1, SceneEntity *ent2) 
    1616{ 
     17        // group by texture size 
    1718        Texture *t1 = ent1->GetMaterial()->GetTexture(); 
    1819        Texture *t2 = ent2->GetMaterial()->GetTexture(); 
     
    2122        int tsize2 = t2 ? t2->GetByteSize() : 0; 
    2223 
     24        // if texture size equal, group by material 
    2325        if (tsize1 == tsize2) 
    2426                return ent1->GetMaterial() < ent2->GetMaterial(); 
     
    2830 
    2931 
    30 RenderQueue::RenderQueue(): mState(NULL), mMinSizeForSorting(5) 
     32RenderQueue::RenderQueue(): mState(NULL), mMinSizeForSorting(3) 
    3133{ 
    3234} 
     
    6365                Sort(); 
    6466         
    65         //if (!mEntities.empty()) Debug << "rendering render queue" << endl; 
    6667        SceneEntityContainer::const_iterator sit, sit_end = mEntities.end(); 
    6768 
     
    7071                SceneEntity *ent = *sit; 
    7172                ent->Render(mState); 
    72  
    73                 /*if (ent->GetMaterial()->GetTexture()) 
    74                         Debug << " " << ent->GetMaterial()->GetTexture()->GetWidth(); 
    75                 else 
    76                         Debug << " 0";*/ 
    7773        } 
    7874} 
     
    8177void RenderQueue::Sort() 
    8278{ 
    83         //InitTiming(); 
    84         //long t1, t2; 
    85         //t1 = GetTime(); 
    86  
    8779        sort(mEntities.begin(), mEntities.end(), IsLower); 
    88  
    89         //t2 = GetTime(); 
    90         //cout << "sort: " << TimeDiff(t1, t2) << endl; 
    9180} 
    9281 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/RenderQueue.h

    r2773 r2776  
    44#include "common.h" 
    55 
    6 namespace CHCDemo  
     6namespace CHCDemoEngine  
    77{ 
    88 
     
    3636        void Clear(); 
    3737 
     38        int GetSize() const { return (int)mEntities.size(); } 
    3839 
    3940protected: 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/RenderState.cpp

    r2773 r2776  
    55 
    66 
    7 namespace CHCDemo  
     7namespace CHCDemoEngine  
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/RenderState.h

    r2773 r2776  
    66 
    77 
    8 namespace CHCDemo  
     8namespace CHCDemoEngine  
    99{ 
    1010 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/RenderTraverser.cpp

    r2775 r2776  
    66#include "RenderState.h" 
    77#include "Geometry.h" 
     8#include "Timer/PerfTimer.h" 
    89 
    910 
     
    1112 
    1213 
    13 namespace CHCDemo 
     14namespace CHCDemoEngine 
    1415{ 
    1516 
     
    8788        if (node->GetLastRenderedFrame() != mFrameId) 
    8889        { 
    89                 if (!mUseRenderQueue) 
    90                         if (mRenderState->SetState(RenderState::RENDER)) 
    91                                 ++ mStats.mNumStateChanges; 
    92  
     90                if (mRenderState->SetState(RenderState::RENDER)) 
     91                        ++ mStats.mNumStateChanges; 
     92                 
    9393                node->SetLastRenderedFrame(mFrameId); 
    9494 
     
    128128void RenderTraverser::RenderScene() 
    129129{ 
    130         InitTiming(); 
    131         long t1, t2; 
    132  
    133         t1 = GetTime(); 
     130        PerfTimer timer; 
     131 
     132        timer.Start(); 
     133 
     134        //InitTiming(); 
     135        //long t1, t2; 
     136        //t1 = GetTime(); 
    134137 
    135138        glEnableClientState(GL_VERTEX_ARRAY); 
     
    156159        glDisableClientState(GL_NORMAL_ARRAY); 
    157160 
    158         t2 = GetTime(); 
    159         mStats.mRenderTime = TimeDiff(t1, t2); 
     161        //t2 = GetTime(); 
     162        //mStats.mRenderTime = TimeDiff(t1, t2); 
     163        mStats.mRenderTime = timer.Elapsedms(); 
    160164} 
    161165 
     
    180184 
    181185 
    182 #if 0 
     186void RenderTraverser::SetAssumedVisibleFrames(int assumedVisibleFrames) 
     187{ 
     188        mAssumedVisibleFrames = assumedVisibleFrames; 
     189} 
     190 
     191 
     192void RenderTraverser::SetMaxBatchSize(int batchSize) 
     193{ 
     194        mMaxBatchSize = batchSize; 
     195} 
     196 
     197 
     198void RenderTraverser::SetUseMultiQueries(bool useMultiQueries) 
     199{ 
     200        mUseMultiQueries = useMultiQueries; 
     201        std::cout << "using multiqueries: " << mUseMultiQueries << std::endl; 
     202} 
     203 
     204 
     205 
    183206OcclusionQuery *RenderTraverser::IssueOcclusionQuery(BvhNode *node, bool wasVisible) 
    184207{ 
     
    191214} 
    192215 
    193 #else 
    194  
    195  
    196 OcclusionQuery *RenderTraverser::IssueOcclusionQuery(BvhNode *node, bool wasVisible) 
     216 
     217void RenderTraverser::IssueOcclusionQuery(const OcclusionQuery &query, bool wasVisible) 
    197218{ 
    198219        ++ mStats.mNumIssuedQueries; 
     
    200221        if (mUseRenderQueue && (mRenderState->GetMode() == RenderState::RENDER)) 
    201222        { 
     223                //cout << "render queue: " << mRenderQueue.GetSize() << endl; 
    202224                mRenderQueue.Render(); 
    203225                mRenderQueue.Clear(); 
    204226        } 
    205227 
    206         OcclusionQuery *query = mQueryHandler.RequestQuery(); 
    207  
    208         query->Reset(); 
    209         query->AddNode(node); 
    210  
    211         query->BeginQuery(); 
     228        query.BeginQuery(); 
    212229 
    213230        if (wasVisible) 
     
    218235        if (wasVisible && mUseOptimization) 
    219236        { 
    220                 RenderNode(node); 
     237                for (size_t i = 0; i < query.GetSize(); ++ i) 
     238                        RenderNode(query.GetNodes()[i]); 
    221239        } 
    222240        else 
     
    226244                        ++ mStats.mNumStateChanges; 
    227245 
    228                 mBvh->RenderBoundingBox(node, mRenderState); 
    229         } 
    230  
    231         query->EndQuery(); 
    232  
    233         return query; 
    234 } 
    235  
    236 #endif 
    237 void RenderTraverser::IssueOcclusionQuery(const OcclusionQuery &query, bool wasVisible) 
    238 { 
    239         ++ mStats.mNumIssuedQueries; 
    240  
    241         if (mUseRenderQueue && (mRenderState->GetMode() == RenderState::RENDER)) 
    242         { 
    243                 mRenderQueue.Render(); 
    244                 mRenderQueue.Clear(); 
    245         } 
    246  
    247         query.BeginQuery(); 
    248  
    249         if (wasVisible) 
    250                 ++ mStats.mNumPreviouslyVisibleNodeQueries; 
    251  
    252         // if this node is a previous visible leaf: 
    253         // leaves will be rendered anyway => we can also test with the real geometry  
    254         if (wasVisible && mUseOptimization) 
    255         { 
    256                 for (size_t i = 0; i < query.GetSize(); ++ i) 
    257                         RenderNode(query.GetNodes()[i]); 
    258         } 
    259         else 
    260         { 
    261                 // change to query mode and render box 
    262                 if (mRenderState->SetState(RenderState::QUERY)) 
    263                         ++ mStats.mNumStateChanges; 
    264  
    265246                mBvh->RenderBoundingBoxes(query.GetNodes(), mRenderState); 
    266247        } 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/RenderTraverser.h

    r2773 r2776  
    1010 
    1111 
    12 namespace CHCDemo 
     12namespace CHCDemoEngine 
    1313{ 
    1414 
     
    3939        int mNumPreviouslyVisibleNodeQueries; 
    4040         
    41         long mRenderTime; 
     41        double mRenderTime; 
    4242}; 
    4343 
     
    106106        */ 
    107107        void SetMaxBatchSize(int batchSize); 
    108  
     108        /** If multiqueries should be used. 
     109        */ 
     110        void SetUseMultiQueries(bool useMultiQueries); 
    109111 
    110112protected: 
     
    167169 
    168170        int mMaxBatchSize; 
     171 
     172        bool mUseMultiQueries; 
    169173}; 
    170174 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/SceneEntity.cpp

    r2773 r2776  
    66 
    77 
    8 namespace CHCDemo  
     8namespace CHCDemoEngine  
    99{ 
    1010 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/SceneEntity.h

    r2769 r2776  
    77 
    88 
    9 namespace CHCDemo  
     9namespace CHCDemoEngine  
    1010{ 
    1111 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/SceneQuery.cpp

    r2764 r2776  
    99 
    1010 
    11 namespace CHCDemo 
     11namespace CHCDemoEngine 
    1212{ 
    1313 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/SceneQuery.h

    r2764 r2776  
    55#include "AxisAlignedBox3.h" 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/StopAndWaitTraverser.cpp

    r2767 r2776  
    33 
    44 
    5 namespace CHCDemo 
     5namespace CHCDemoEngine 
    66{ 
    77 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/StopAndWaitTraverser.h

    r2767 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Texture.cpp

    r2769 r2776  
    99 
    1010 
    11 namespace CHCDemo 
     11namespace CHCDemoEngine 
    1212{ 
    1313 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Texture.h

    r2768 r2776  
    88#include <string> 
    99 
    10 namespace CHCDemo 
     10namespace CHCDemoEngine 
    1111{ 
    1212 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Triangle3.cpp

    r2751 r2776  
    88 
    99 
    10 namespace CHCDemo { 
     10namespace CHCDemoEngine { 
    1111 
    1212         
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Triangle3.h

    r2751 r2776  
    55 
    66 
    7 namespace CHCDemo  
     7namespace CHCDemoEngine  
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Vector3.cpp

    r2751 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Vector3.h

    r2762 r2776  
    77 
    88 
    9 namespace CHCDemo 
     9namespace CHCDemoEngine 
    1010{ 
    1111 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Visualization.cpp

    r2771 r2776  
    1010 
    1111 
    12 namespace CHCDemo 
     12namespace CHCDemoEngine 
    1313{ 
    1414 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/Visualization.h

    r2767 r2776  
    55 
    66 
    7 namespace CHCDemo 
     7namespace CHCDemoEngine 
    88{ 
    99 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/chc_revisited.vcproj

    r2769 r2776  
    268268                                > 
    269269                        </File> 
     270                        <Filter 
     271                                Name="timer" 
     272                                > 
     273                                <File 
     274                                        RelativePath=".\Timer\BenchTimer.cpp" 
     275                                        > 
     276                                </File> 
     277                                <File 
     278                                        RelativePath=".\Timer\BenchTimer.h" 
     279                                        > 
     280                                </File> 
     281                                <File 
     282                                        RelativePath=".\Timer\merror.cpp" 
     283                                        > 
     284                                </File> 
     285                                <File 
     286                                        RelativePath=".\Timer\merror.h" 
     287                                        > 
     288                                </File> 
     289                                <File 
     290                                        RelativePath=".\Timer\mstring.h" 
     291                                        > 
     292                                </File> 
     293                                <File 
     294                                        RelativePath=".\Timer\PerfTimer.h" 
     295                                        > 
     296                                </File> 
     297                                <File 
     298                                        RelativePath=".\Timer\PerfTimerSkeleton.h" 
     299                                        > 
     300                                </File> 
     301                                <File 
     302                                        RelativePath=".\Timer\RDTSCTimer.cpp" 
     303                                        > 
     304                                </File> 
     305                                <File 
     306                                        RelativePath=".\Timer\RDTSCTimer.h" 
     307                                        > 
     308                                </File> 
     309                        </Filter> 
    270310                </Filter> 
    271311                <Filter 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/chcdemo.cpp

    r2774 r2776  
    2222 
    2323 
     24 
    2425using namespace std; 
    25 using namespace CHCDemo; 
     26using namespace CHCDemoEngine; 
    2627 
    2728 
     
    4647int threshold; 
    4748 
     49int assumedVisibleFrames = 10; 
     50int maxBatchSize = 50; 
     51bool useMultiQueries = true; 
    4852 
    4953const float keyForwardMotion = 1.0f; 
     
    5862float visZoomFactor = 1.5f; 
    5963 
    60 long accumulatedTime = 1000; 
     64double accumulatedTime = 1000; 
    6165float fps = 1e3f; 
    6266 
     
    106110void drawEyeView(void); 
    107111void setupVisView(void); 
    108 long calcRenderTime(void); 
    109112void CalcDecimalPoint(std::string &str, int d); 
    110113void ResetTraverser(); 
     
    218221                "", 
    219222                "'F1'           - shows/dismisses this message", 
    220                 "'F2'           - decreases number of objects (valid after scene recreation)", 
    221                 "'F3'           - increases number of objects (valid after scene recreation)", 
    222                 "'F4'           - decreases box length in z direction (valid after scene recreation)", 
    223                 "'F5'           - increases box length in z direction (valid after scene recreation)", 
    224                 "'F6'           - decreases object size (valid after scene recreation)", 
    225                 "'F7'           - increases object size (valid after scene recreation)", 
    226                 "'F8'           - cycles through object types (teapot, ...) (valid after scene recreation)", 
    227223                "", 
    228224                "'MOUSE-LEFT'   - turn left/right, move forward/backward", 
     
    235231                "", 
    236232                "'SPACE'        - cycles through occlusion culling algorithms", 
    237                 "'-'            - decreases visibility threshold", 
    238                 "'+'            - increases visibility threshold", 
    239                 "'C'            - recreates the scene hierarchy", 
     233                "'-'            - decreases max batch size", 
     234                "'+'            - increases max batch size", 
     235                "'6'            - decrease assumed visible frames", 
     236                "'7'            - increase assumed visible frames", 
     237                "'8'            - upward motion", 
     238                "'9'            - downward motion", 
     239                "", 
    240240                "'G'            - enables/disables optimization to take geometry as occluder", 
    241                 "'N'            - triggers NV / ARB queries", 
    242241                "", 
    243                 "'R'            - shows/hides recreation parameters", 
    244242                "'S'            - shows/hides statistics", 
    245243                "'V'            - shows/hides bounding volumes", 
     
    312310        traverser->SetUseRenderQueue(useRenderQueue); 
    313311        traverser->SetVisibilityThreshold(threshold); 
     312        traverser->SetAssumedVisibleFrames(assumedVisibleFrames); 
     313        traverser->SetMaxBatchSize(maxBatchSize); 
     314        traverser->SetUseMultiQueries(useMultiQueries); 
    314315} 
    315316 
     
    430431                break; 
    431432        case '+': 
    432                 threshold += 10; 
    433                 traverser->SetVisibilityThreshold(threshold); 
     433                maxBatchSize += 10; 
     434                traverser->SetMaxBatchSize(maxBatchSize); 
    434435                break; 
    435436        case '-': 
    436                 threshold -= 10; 
    437                 if(threshold < 0) threshold = 0; 
    438                 traverser->SetVisibilityThreshold(threshold);            
     437                maxBatchSize -= 10; 
     438                if (maxBatchSize < 0) maxBatchSize = 1; 
     439                traverser->SetMaxBatchSize(maxBatchSize);                
     440                break; 
     441        case '6': 
     442                assumedVisibleFrames -= 1; 
     443                if (assumedVisibleFrames < 1) assumedVisibleFrames = 1; 
     444                traverser->SetAssumedVisibleFrames(assumedVisibleFrames); 
     445                break; 
     446        case '7': 
     447                assumedVisibleFrames += 1; 
     448                traverser->SetAssumedVisibleFrames(assumedVisibleFrames);                
     449                break; 
     450        case 'M': 
     451        case 'm': 
     452                useMultiQueries = !useMultiQueries; 
     453                traverser->SetUseMultiQueries(useMultiQueries); 
    439454                break; 
    440455        case '1': 
     
    852867                                    "CHC", "CHC ++"}; 
    853868 
    854         char msg2[200]; 
     869        char msg2[400]; 
    855870        char msg3[200]; 
    856871        char msg4[200]; 
     
    858873 
    859874 
    860         char *optstr[2] = {"", ", using optimization"}; 
    861          
    862         static long renderTime = traverser->GetStats().mRenderTime; 
    863         const float expFactor = 0.95f; 
     875        static double renderTime = traverser->GetStats().mRenderTime; 
     876        const float expFactor = 0.3f; 
    864877        renderTime = traverser->GetStats().mRenderTime * expFactor + (1.0f - expFactor) * renderTime; 
    865878 
    866879        accumulatedTime += renderTime; 
    867880 
    868         if (accumulatedTime > 100) // update every fraction of a second 
     881        if (accumulatedTime > 500) // update every fraction of a second 
    869882        {        
    870883                accumulatedTime = 0; 
     
    882895        } 
    883896 
    884         sprintf_s(msg2, "threshold: %4d%s", threshold, optstr[useOptimization]); 
     897        sprintf_s(msg2, "assumed visible frames: %4d, max batch size: %4d, using multiqueries: %d, using render queue: %d", assumedVisibleFrames, maxBatchSize, useMultiQueries, useRenderQueue); 
    885898 
    886899        string str; 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/common.cpp

    r2772 r2776  
    2626 
    2727 
    28 namespace CHCDemo  
     28namespace CHCDemoEngine  
    2929{ 
    3030 
  • GTP/trunk/App/Demos/Vis/CHC_revisited/common.h

    r2770 r2776  
    1818 
    1919 
    20 namespace CHCDemo  
     20namespace CHCDemoEngine  
    2121{ 
    2222 
Note: See TracChangeset for help on using the changeset viewer.