<p>It depends on the game style just how much culling is needed. For instance first person shooters benefit from this a lot, having a lot of stuff in the frustrum at any one time, while an overhead view RTS does not since you are effectively looking at a plane with things on that plane.  Even in an RTS though, doing a "depth only render" to eliminate overdraw is still useful.</p>

CC BY-SA 3.0
2015-11-22T16:08:24.660Z
2015-11-22T16:08:24.660Z
Alan Wolfe
<p>Yes, occlusion culling is still worth it.</p>

<p>At minimum, a draw call that you skipped due to culling is a draw call that doesn't have to run the vertex shader. Triangle count goes up as quickly as GPUs start supporting more triangles, because why not? With unified architectures, vertex shaders use the exact same hardware that pixel shaders do, so every vertex that you skip because of culling is more compute time for the stuff that you <em>can</em> see. Not to mention all the other stuff you're skipping (CPU draw call processing, and throwing the tris far enough through the pipeline that the rasterizer realizes that it doesn't need to shade them).</p>

<p>There was a <a href="http://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf">great presentation from two Ubisoft studios at SIGGRAPH 2015</a> about GPU-driven rendering pipelines. On the surface it's about some of the things you mentioned: batching and instancing, reducing draw call counts. But one of the major advantages they get out of a GPU-driven pipeline is incredibly fine-grained occlusion culling: better culling than you would normally see at the draw-call level. It's all in the service of asymptotically approaching the goal: processing only what you can see, which means that what you can see looks better.</p>

<p>(Also: consider console, mobile, VR, and desktop-without-the-latest-and-greatest-GPU-that-money-can-buy. Even if all your tris disappear into the gaping maw of your top-of-the-line GPU, you may not be the primary target.)</p>

CC BY-SA 3.0
2015-11-24T03:21:18.113Z
What about when vertex shaders are used to deform meshes? (which I assume is possible... I'm a newbie to graphics programming)
Llamageddon
CC BY-SA 3.0
2015-11-24T04:54:26.810Z
Also, do you have any papers on GPU-backed occlusion culling? Is it a built-in feature of modern GPUs, or..?
Llamageddon
CC BY-SA 3.0
2015-11-24T08:02:07.733Z
@Llamageddon On modern GPU architectures, the vertex shader is always run, and is perfectly capable of deforming meshes—that's just transforming vertices non-rigidly. A more expensive vertex shader that does more work is, of course, more work that will be skipped by culling. I don't have any papers on GPU occlusion culling, academia seems to not be very enthralled with it. It is not a built-in feature of GPUs, just a creative use of compute.
John Calsbeek
CC BY-SA 3.0
2015-11-24T10:01:09.083Z
Oh, I meant what about culling meshes that will be deformed? Do you cull them after running the vertex shaders? That sounds convoluted.
Llamageddon
CC BY-SA 3.0
2015-11-24T16:43:05.913Z
@Llamageddon Generally you just cull them against a conservative volume. Or several smaller volumes that you deform with the mesh (for example, when skinning you can attach culling volumes to joints).
John Calsbeek
CC BY-SA 3.0
2015-11-25T04:58:56.910Z
Ah, I see. Would you mind getting in touch via some sort of IM/mail/direct messaging? I would really appreciate a mentor/tutor in graphics programmings stuff, since it's a topic that fascinates me greatly, but... various reasons, curb my ability to pursue it on my own.
Llamageddon
CC BY-SA 3.0
2015-11-25T06:57:46.010Z
@Llamageddon The chat room for this site http://chat.stackexchange.com/rooms/26589/the-cornell-box is probably a good venue.
John Calsbeek
CC BY-SA 3.0
2015-11-25T07:26:33.150Z
I know but I just am not good at chatrooms, I much prefer having someone to talk to and get to know x.x It's fine if you don't want to do anything such.
Llamageddon
CC BY-SA 3.0
2015-11-23T07:36:55.853Z
2015-11-23T07:36:55.853Z
John Calsbeek
<p>For example, while it's the current top-of-the-line GPU, the GTX 980 has a staggering 72.1 gigapixels/second fillrate, which with back-to-front rendering and/or Z buffer checks, seems almost ridiculously large, possibly even at 4k resolutions. As far as polygon counts go, modern GPUs can do tens to hundreds of millions of textured triangles without a hitch if you batch and/or instantiate them properly.</p>

<p>With forward rendering, the amount of fragments that shaders will run on can quickly become overwhelming, but with deferred rendering, the cost is usually more-or-less constant, depending on the resolution, and we long since passed a point where most shading or post-processing effects can be done in realtime in 1080p.</p>

<p>Either way, the limiting factors nowadays are most commonly draw call counts, and shading costs, both of which are kept relatively low by proper deferred rendering and geometry batching, so with that in mind, is culling more than just backfaces and out-of-frustrum polygons of any substantial benefit? Wouldn't the costs(CPU/GPU time, programmer time) outweight the benefits, a lot of the time?</p>

CC BY-SA 3.0
2015-11-22T06:56:28.460Z
1080p is the new pixel art.
Jessy
<performance><occlusion><space-filling><deferred-rendering>
With modern fillrates and deferred rendering, is occlussion culling still relevant?
Llamageddon
# With modern fillrates and deferred rendering, is occlussion culling still relevant?

(Asked by: username_0 on 2015-11-22)

For example, while it's the current top-of-the-line GPU, the GTX 980 has a staggering 72.1 gigapixels/second fillrate, which with back-to-front rendering and/or Z buffer checks, seems almost ridiculously large, possibly even at 4k resolutions. As far as polygon counts go, modern GPUs can do tens to hundreds of millions of textured triangles without a hitch if you batch and/or instantiate them properly.

With forward rendering, the amount of fragments that shaders will run on can quickly become overwhelming, but with deferred rendering, the cost is usually more-or-less constant, depending on the resolution, and we long since passed a point where most shading or post-processing effects can be done in realtime in 1080p.

Either way, the limiting factors nowadays are most commonly draw call counts, and shading costs, both of which are kept relatively low by proper deferred rendering and geometry batching, so with that in mind, is culling more than just backfaces and out-of-frustrum polygons of any substantial benefit? Wouldn't the costs(CPU/GPU time, programmer time) outweight the benefits, a lot of the time?

**Tags:** performance, occlusion, space-filling, deferred-rendering

> **Comments:**
> **username_1**: 1080p is the new pixel art.  

---

## 2 answers

### Answer by username_3 on 2015-11-23. Score: 9 | Accepted answer

Yes, occlusion culling is still worth it.

At minimum, a draw call that you skipped due to culling is a draw call that doesn't have to run the vertex shader. Triangle count goes up as quickly as GPUs start supporting more triangles, because why not? With unified architectures, vertex shaders use the exact same hardware that pixel shaders do, so every vertex that you skip because of culling is more compute time for the stuff that you *can* see. Not to mention all the other stuff you're skipping (CPU draw call processing, and throwing the tris far enough through the pipeline that the rasterizer realizes that it doesn't need to shade them).

There was a [great presentation from two Ubisoft studios at SIGGRAPH 2015](http://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf) about GPU-driven rendering pipelines. On the surface it's about some of the things you mentioned: batching and instancing, reducing draw call counts. But one of the major advantages they get out of a GPU-driven pipeline is incredibly fine-grained occlusion culling: better culling than you would normally see at the draw-call level. It's all in the service of asymptotically approaching the goal: processing only what you can see, which means that what you can see looks better.

(Also: consider console, mobile, VR, and desktop-without-the-latest-and-greatest-GPU-that-money-can-buy. Even if all your tris disappear into the gaping maw of your top-of-the-line GPU, you may not be the primary target.)

> **Comments:**
> **username_0**: What about when vertex shaders are used to deform meshes? (which I assume is possible... I'm a newbie to graphics programming)  
> **username_0**: Also, do you have any papers on GPU-backed occlusion culling? Is it a built-in feature of modern GPUs, or..?  
> **username_3**: @username_0 On modern GPU architectures, the vertex shader is always run, and is perfectly capable of deforming meshes—that's just transforming vertices non-rigidly. A more expensive vertex shader that does more work is, of course, more work that will be skipped by culling. I don't have any papers on GPU occlusion culling, academia seems to not be very enthralled with it. It is not a built-in feature of GPUs, just a creative use of compute.  
> **username_0**: Oh, I meant what about culling meshes that will be deformed? Do you cull them after running the vertex shaders? That sounds convoluted.  
> **username_3**: @username_0 Generally you just cull them against a conservative volume. Or several smaller volumes that you deform with the mesh (for example, when skinning you can attach culling volumes to joints).  
> **username_0**: Ah, I see. Would you mind getting in touch via some sort of IM/mail/direct messaging? I would really appreciate a mentor/tutor in graphics programmings stuff, since it's a topic that fascinates me greatly, but... various reasons, curb my ability to pursue it on my own.  
> **username_3**: @username_0 The chat room for this site http://chat.stackexchange.com/rooms/26589/the-cornell-box is probably a good venue.  
> **username_0**: I know but I just am not good at chatrooms, I much prefer having someone to talk to and get to know x.x It's fine if you don't want to do anything such.  

---

### Answer by username_2 on 2015-11-22. Score: 2

It depends on the game style just how much culling is needed. For instance first person shooters benefit from this a lot, having a lot of stuff in the frustrum at any one time, while an overhead view RTS does not since you are effectively looking at a plane with things on that plane. Even in an RTS though, doing a "depth only render" to eliminate overdraw is still useful.


---

