- Timestamp:
- 06/18/08 18:02:05 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/CHC_revisited/CHCPlusPlusTraverser.cpp
r2771 r2772 10 10 CHCPlusPlusTraverser::CHCPlusPlusTraverser() 11 11 { 12 } 13 14 15 void CHCPlusPlusTraverser::HandleQueryResult(OcclusionQuery *query) 16 { 17 // wait until result available 18 int visiblePixels = query->GetQueryResult(); 19 20 int visible = visiblePixels > mVisibilityThreshold; 21 22 BvhNode *node = query->GetFrontNode(); 23 24 if (visible) 25 { 26 // node was previously invisible 27 if (!node->IsVisible()) 28 node->SetAssumedVisibleFrameId(mFrameId + mAssumedVisibleFrames); 29 else 30 // randomize first invokation 31 node->SetAssumedVisibleFrameId(mFrameId + Random(mAssumedVisibleFrames + 1)); 32 33 mBvh->MakeParentsVisible(node); 34 TraverseNode(node); 35 } 36 else 37 { 38 ++ mStats.mNumQueryCulledNodes; 39 } 40 41 node->SetVisible(visible); 12 42 } 13 43 … … 35 65 mQueryQueue.pop(); 36 66 37 // wait until result available 38 int visiblePixels = query->GetQueryResult(); 39 40 if (visiblePixels > mVisibilityThreshold) 41 { 42 BvhNode *node = query->GetFrontNode(); 43 44 node->SetVisible(true); 45 mBvh->MakeParentsVisible(node); 46 TraverseNode(node); 47 } 48 else 49 { 50 ++ mStats.mNumQueryCulledNodes; 51 } 67 HandleQueryResult(query); 52 68 } 53 69 … … 78 94 // identify nodes that we cannot skip queries for 79 95 const bool testFeasible = (!wasVisible || (node->IsVirtualLeaf() && (node->GetAssumedVisibleFrameId() <= mFrameId))); 80 81 96 82 97 // update node's visited flag … … 86 101 if (testFeasible) 87 102 { 88 // reset node's visibility classification89 node->SetVisible(false);90 91 103 if (!wasVisible) 92 104 { … … 129 141 } 130 142 143 131 144 ////////////// 132 145 //-- issue remaining previously visible node queries … … 146 159 mQueryQueue.pop(); 147 160 148 // wait until result available 149 int visiblePixels = query->GetQueryResult(); 150 151 if (visiblePixels > mVisibilityThreshold) 152 { 153 BvhNode *node = query->GetFrontNode(); 154 155 node->SetVisible(true); 156 mBvh->MakeParentsVisible(node); 157 } 158 else 159 { 160 ++ mStats.mNumQueryCulledNodes; 161 } 161 HandleQueryResult(query); 162 162 } 163 163 }
Note: See TracChangeset
for help on using the changeset viewer.