HW Occlusion Culling ?

Started by
18 comments, last by superpig 18 years, 1 month ago
Hallo there. Some years ago, there has been a thread about occlusion culling here, also the hardware occlusioon culling via GL extention was discussed and concluded it was still too slow. Well that's been over 2 years ago I think. How is it today? Fast enough? And btw., Will I still have to use the NVidia extension or is there a general GL one? thanks, unshaven
Advertisement
There's a chapter in GPU Gems 2 that describes a relatively robust realtime hierarchical occlusion culling system that runs in hardware. So I'd say it's good enough now.

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

The asynchronous nature of occlusion queries has not changed since they were first introduced, so you will get the same raw performance out of them like you always have. However, if you tweak it continuously, you can probably make it work. Personally, I regard other systems like PVS (or even simpler methods such as octrees and quadtrees) to be more effective, in terms of performance and ease of implementation.
Dustin Franklin ( circlesoft :: KBase :: Mystic GD :: ApolloNL )
Occlusion queries are second-to-last-chance culling; they're not meant to substitute for BSP or portal-cell culling, and they don't partially cull partially occluded objects like Z-buffering. Because of this, they occupy a small--perhaps vanishingly small--niche. And given the difficulty of making them work well across a wide range of hardware, they may well not be worth it. I'd focus on all other levels of my visibility determination before I even started thinking about occlusion queries.

HW Occlusion queries might be quite useful when creating PVS sets. They can save you from great deal of complicated and unprecise calculations.

Quote:Original post by Sneftel
Occlusion queries are second-to-last-chance culling; they're not meant to substitute for BSP or portal-cell culling, and they don't partially cull partially occluded objects like Z-buffering. Because of this, they occupy a small--perhaps vanishingly small--niche. And given the difficulty of making them work well across a wide range of hardware, they may well not be worth it. I'd focus on all other levels of my visibility determination before I even started thinking about occlusion queries.


I know of at least one commercial PC-nextgen engine that uses them as the primary (and I think only) technique.

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

Quote:Original post by Sneftel
Occlusion queries are second-to-last-chance culling; they're not meant to substitute for BSP or portal-cell culling, and they don't partially cull partially occluded objects like Z-buffering. Because of this, they occupy a small--perhaps vanishingly small--niche. And given the difficulty of making them work well across a wide range of hardware, they may well not be worth it. I'd focus on all other levels of my visibility determination before I even started thinking about occlusion queries.


I'm familiar with more "crude"/general visibility detection methods for real-time use and common data structures. But occlusion culling as such in addition to that can be damn powerful, and having hardware supporting it properly would be really nice.


Quote:Original post by Demus79

HW Occlusion queries might be quite useful when creating PVS sets. They can save you from great deal of complicated and unprecise calculations.


Would you elaborate that? I'm not sure I understand.
The "occlusion culling" I know of is based on a view point and frustrum. Yes I know a method of PVS calculation where a camera is set to many points and angles to test for visibility, but this is, whatever you do, very inaccurate, no?

Quote:
Quote:
HW Occlusion queries might be quite useful when creating PVS sets. They can save you from great deal of complicated and unprecise calculations.

Would you elaborate that? I'm not sure I understand.
The "occlusion culling" I know of is based on a view point and frustrum. Yes I know a method of PVS calculation where a camera is set to many points and angles to test for visibility, but this is, whatever you do, very inaccurate, no?


yes you are right about the fact that choosing some positions and directions is inaccurate, but the rendering accuracy is for the occlusion tests is outstanding (not perfect though).

I am not totally familiar with calculating the PVS sets, but with HW occlusion culling you can reduce the time when creating them. Consider the alternative of making your own rasterizer with z-buffer or some other PVS calculation system vs HW occlusion culling.

When making occlusion queries with HW, I think that you need to render only the z-buffer, which is rather fast.

Cheers
Quote:Original post by Demus79
I am not totally familiar with calculating the PVS sets, but with HW occlusion culling you can reduce the time when creating them. Consider the alternative of making your own rasterizer with z-buffer or some other PVS calculation system vs HW occlusion culling.


PVS are not calculated with renders IMHO because of the accuracy. BSP-like PVS are mathematically obtained using portals and antipenumbria volumes.
Quote:Original post by superpig
I know of at least one commercial PC-nextgen engine that uses them as the primary (and I think only) technique.

Huh... they do occlusion queries on every potentially visible piece of the level without regards to the player's position?

This topic is closed to new replies.

Advertisement