[2258] | 1 | #ifndef _RandomUpdateCullingManager_H__
|
---|
| 2 | #define _RandomUpdateCullingManager_H__
|
---|
| 3 |
|
---|
| 4 | #include "CullingManager.h"
|
---|
| 5 | #include "HierarchyInterface.h"
|
---|
| 6 |
|
---|
| 7 |
|
---|
| 8 | namespace GtpVisibility
|
---|
| 9 | {
|
---|
| 10 |
|
---|
| 11 | /** Renders the scene with the coherent hierarchical culling algorithm.
|
---|
| 12 | */
|
---|
| 13 | class RandomUpdateCullingManager : public CullingManager
|
---|
| 14 | {
|
---|
| 15 | public:
|
---|
[2455] | 16 |
|
---|
[2258] | 17 | RandomUpdateCullingManager();
|
---|
[2455] | 18 |
|
---|
| 19 | /** Constructor taking the #random candidates tested per subtree into account.
|
---|
[2258] | 20 | */
|
---|
[2455] | 21 | RandomUpdateCullingManager(const unsigned int randomCandidates);
|
---|
[2258] | 22 |
|
---|
| 23 | void RenderScene();
|
---|
[2455] | 24 |
|
---|
| 25 | /** Sets #random candidates tested per subtree.
|
---|
[2258] | 26 | */
|
---|
[2455] | 27 | void SetRandomCandidates(const unsigned int randomCandidates);
|
---|
[2258] | 28 |
|
---|
[2455] | 29 | /** This is an optimization when issuing the occlusion test.
|
---|
| 30 | The test is done with actual geometry rather than the bounding
|
---|
| 31 | box of leave nodes previously marked as visible.
|
---|
[2259] | 32 |
|
---|
[2455] | 33 | @param testGeometry if this optimization should be used
|
---|
| 34 | @remark this option is only useful for the coherent hierarchical culling algorithm
|
---|
[2258] | 35 | */
|
---|
[2455] | 36 | void SetTestGeometryForVisibleLeaves(const bool testGeometry);
|
---|
| 37 | /** See TestGeometryForVisibleLeaves
|
---|
| 38 | */
|
---|
| 39 | bool GetTestGeometryForVisibleLeaves();
|
---|
[2258] | 40 |
|
---|
[2455] | 41 | protected:
|
---|
| 42 |
|
---|
[2258] | 43 | /** Skip query for this node.
|
---|
| 44 | */
|
---|
| 45 | void SkipQuery(HierarchyNode *node) const;
|
---|
| 46 |
|
---|
| 47 |
|
---|
[2455] | 48 | ////////////
|
---|
[2259] | 49 |
|
---|
[2455] | 50 | /// number of candidates that are tested per subtree
|
---|
| 51 | unsigned int mRandomCandidates;
|
---|
| 52 |
|
---|
| 53 | bool mTestGeometryForVisibleLeaves;
|
---|
| 54 |
|
---|
[2258] | 55 | };
|
---|
| 56 |
|
---|
| 57 | } // namespace GtpVisibility
|
---|
| 58 |
|
---|
| 59 | #endif // RandomUpdateCullingManager_H
|
---|