What is used for visibility determination these days?

Started by
15 comments, last by Hodgman 12 years, 6 months ago

[quote name='Amr0' timestamp='1318417214' post='4871795']
What about 3rd party libraries? I don't see much talk about them.


There is Umbra which has been used in a large number of well-known games.
[/quote]

Yes, it seems to be "the industry standard" and used by Unity. No love for the poor man though it seems.
Advertisement

Another simple system that hasn't been mentioned yet are occluder planes.
Are those also called antiportals? I googled them and I found a paper which seems pretty similar to antiportals in concept.

Previously "Krohm"

Are those also called antiportals? I googled them and I found a paper which seems pretty similar to antiportals in concept.
Yeah I'd probably use the terms 'occluder plane' and 'antiportal' interchangeably.

Your culling system should not be directly tied to your renderable-object system (no dependency between them). Usually a 3rd system will use the results of the culling system when preparing renderable objects.

Two options would be to link all instances of that tree to a single cullable (either draw the whole forest or don't), or link each tree to it's own cullable, and have the instancing system adjust it's per-instance data buffers appropriately upon recieving the culling results (i.e. only include data for visible trees and adjust the instance-count), but this highly depends on your instancing system and your circumstances.


Thanks.
Well, I was asking, because I'm using hardware occlusion culling with DX 9.0 queries. I needed to implement a big forest, had the frustum culling of the trees tied with terrain quadtree culling, but for the occlusion culling I was facing a dilema :
In order to make my occlsusion culling to work, I needed to render the trees individually and fetch the result to see which tree acts as occluder and which as occludee, issuing a draw call per tree, but in order to make my instancing actually be helpful, I needed to draw many trees with one draw call. As my forest is actually culled with visible terrain chunks, using the results of a quadtree culling, maybe I should treat my terrain chunks as a whole, render instanced trees per chunk and occlude next chunks with trees, mixing the occlusion and instancing that way.


Can you guys point me to a nice article/sample code about software occlusion culling.
Hodgeman - Why would the artefacts be so bad for a one frame delay? Most objects wouldn't move that much in a single frame, and those that do could maybe be removed from the occlusion system.
dice slideshow

wink.gif
Why would the artefacts be so bad for a one frame delay? Most objects wouldn't move that much in a single frame, and those that do could maybe be removed from the occlusion system.
It depends on the game... but in general the camera can move a lot each frame, which means that every object can move a lot (in camera-space) ...which means you're going to have to remove every object from the occlusion system? ;)
e.g. In a first-person shooter, the camera can rotate by an arbitrary amount each frame -- if one frame a doorway is off-screen, and then next frame the doorway is visible, then an entire room (or an entire landscape view out of a window) could fail to render for that frame. That's pretty awful.
As I mentioned though, you can work around this particular issue if you know next frame's camera position in advance, which is pretty simple (although it increases input latency), and then only leaves the movement of objects as a source of artefacts.

This topic is closed to new replies.

Advertisement