Occlusion test for occtrees

I’m working on a 3d engine for outdoor enviroments, but also for caverns and closed places. I don’t want static solutions (Like BSP), because the engine must handle massive world changes( Quakes, craters, explosions and more destruction effects). I`ve tried with octtrees. Frustum culling works well, but with dense landscapes i get low FPS (4-6). However, I’ve observed that many objects can be occluded by closed places on average scenes. Perhaps, with an occlusion test the engine would avoid render many fancy objects (like Plants, sharp rocks, peaks etc. ) that are not visible; currently in montain landscapes .
I’ve thought that testing the visibility of each node of the octtree, by passing the node sphere to the depth buffer ,the engine can avoid render many bounded children by such nodes. So I need to read a feedback buffer for checking what sphere was rendered successfully. Is possible to test node visibility by rendering in FeedbackBuffer mode? How the use of feedbacks affects the performance?

In an outdoors engine, you need to optimize for the worst case, because the worst case WILL happen. Users aren’t very likely to like your outdoors scene if it runs at 30 fps down in valleys, but 4 fps as they cross ridges, and dive into sub-1 fps as they climb into an aeroplane and take off :slight_smile:

Trust me: the worst case WILL happen. Thus, you need to optimize for that.

You won´t get happy using the feedback buffer, since it is implemented in software, so everytime you use the feedback buffer you can forget any hardware acceleration.

You should check the extension “nv_occlusion_query”.
And there are good algorithms for testing occlusion. Search the web for it.


But before that, make sure you’re using LOD. That’ll make a bigger difference, is arguably easier to implement and does optimize for the worst case too.