Added Hardware Supported Occlusion Culling

I can proudly announce that I have successfully added the CHC++ algorithm to the engine, so it supports hardware accelerated occlusion culling now. With this new feature the engine can exclude most of the objects those are not visible in the final image from rendering. Without getting too deep in details, the method uses occlusion queries supported by the hardware in conjunction with the space partitioning tree to efficiently cull invisible elements within the view frustum. It needs no any scene preprocessing, so dynamic scenes are fully supported.

It seems to work pretty well especially if there are a lot of occluded objects in the scene, even if the current octree is not too precise enough for this method (maybe I should use BVH instead just like in the original implementation). My implementation culls light sources and particle systems as well.

Occlusion Culling in Action

According to my tests and the image above, the algorithm can successfully keep the frame rate high even if a huge amount of objects are in the view frustum.

I think there is some room for optimizations, my implementation would be more efficient at some points, but in general it gives good performance. 🙂


Posted on August 29, 2011, in rendering and tagged , , , , . Bookmark the permalink. 2 Comments.

  1. What about DrawPredicated ?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: