Jump to content
  • Advertisement
Sign in to follow this  


This topic is 2814 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts


What are the current best practise culling methods used by most 3D engines these days?

Do occlusion culling methods such as (http://http.develope...ugems_ch29.html) still suffice or are there better techniques out?



I don't know about most 3D engines, but I'm currently working on a strategy game. Lots of the displayed models are large structures like buildings or other landmarks. Everything i built on a grid (pretty SimCity-like) and the camera is fixed in a position that makes things look isometric (although the rotation, azimuth and distance from the scene can be changed within certain bounds). This makes culling especially easy as we just intersect the ground with the camera's frustum (while accounting for the height of buildings though) and we then have complete information about which ground-cells (including the objects constructed on top of them) have to be drawn.

Another tweak is that the 3D models have a memory-arrangement that allows us to, for example, only draw the 'west side of a building'. Using the camera's direction we can easily find out which two sides we need to render.

I remember the article that you refer to, but I cannot tell you whether this is up to date as I'm not that involved into game creation. However (although my knowledge of the industry and theory is limited) I don't think there's a better way to do it. You can either use math/logic to predetermine (offline or before each frame) what can safely be excluded from rendering, or you can use a more precise way via occlusion queries on the hardware.

- Michael.

Share this post

Link to post
Share on other sites
It totally depends on the amount of geometry that you want to throw at the user, as well as other factors such as what rendering pipeline you use. For example, in a forward renderer, culling is yet a lot more important than in a deferred renderer, since every model is getting drawn (more or less) once per light.

In many cases, some coarse frustum culling is totally sufficient, the z-buffer will sort out the rest. Occlusion queries may in some cases even make things slower, as they require synchronisation between client and server and involve a latency (though conditional rendering can somewhat compensate that sometimes).

On the other hand, if you plan for some hundred thousand or million instances in your scene, then some more sophisticated culling method such as described here and here may be necessary.

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!