Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

Two ideas i have in mind :

1) Scene is rendered to a invisible buffer, using low resolution and low polygon count models (or even using only bounding volumes like cubes or spheres). The buffer is then checked to know what is visible or not. Before rendering the low resolution scene, some frustum culling could be applied, to already remove as much objects as possible.

2) A tool is run on the static map and will perform complex (and thus slow) ray tracing to know for some 3d positions on the map what is visible and what is not. All that information is then stored in a efficient way that can be user later at runtime (eg: an octree) This solution would only work for static meshes (eg : building) not moving objects.

share|improve this question
3  
"How did game <X> do this" questions are explicitly off-topic as per the FAQ. Maybe edit this question to ask how you can do occlusion culling, rather than how someone else does it? (Also, providing your own answers in the body of the question makes it feel like you're asking for a discussion or a list, rather than an answer) –  Trevor Powell Jan 30 '13 at 23:09
add comment

3 Answers

up vote 12 down vote accepted

Jovan's answer is great, but just wanted to add that there is sometimes hardware support for asking the question "Did this geometry actually render any pixels?" (your idea #1) These are called occlusion queries - these is a good GPU Gems article about them here

This is pretty similar to your idea #1, except you don't need an invisible buffer, and can be more efficient or simpler than checking the buffer. The linked article does a great job going in-depth with how hardware occlusion queries work.

The Unreal Engine leverages hardware occlusion queries on platforms that support it, in addition to other techniques like view frustum culling and pre-calculating what static geometry is occluded.

share|improve this answer
    
Hardware occlusion queries are actually a little more common than "sometimes" these days - with the possible exception of some mobile GPUs they can be considered ubiquitous. –  Jimmy Shelter Jan 31 '13 at 0:09
    
aren't they very slow? –  Quonux Apr 29 '13 at 9:44
add comment

1) Scene is rendered to a invisible buffer, using low resolution and low polygon count models (or even using only bounding volumes like cubes or spheres). The buffer is then checked to know what is visible or not. Before rendering the low resolution scene, some frustum culling could be applied, to already remove as much objects as possible.

This technique is used by Killzone, and is detailed in their presentation Practical Occlusion Culling on PS3. They also use portals for indoor areas.

One thing to keep in mind about large outdoor maps is that mesh simplification is as important as occlusion culling, so some variation of height-fields with geometry clipmapping is often used. Here is a good paper that covers culling as well. GPU Gems 2 has an implementation of it.

share|improve this answer
add comment

At least the first two Quake games used strategy 2; I don't know if idTech engines still use it. The reachable world is divided into convex spaces organized in a tree data structure ("binary space partition"), and for each node in the tree there's a bit vector representing which other nodes are visible from that node ("potentially visible set").

share|improve this answer
1  
If you're going to bring in Quake, you might as well bring in Thief's rendering tech ;) - nothings.org/gamedev/thief_rendering.html –  Jovan Jan 30 '13 at 21:54
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.