Difference between revisions of "GPU Instancer:Terminology"

From GurBu Wiki
Jump to: navigation, search
(Frustum Culling)
Line 7: Line 7:
 
__TOC__
 
__TOC__
 
== GPU Instancing ==
 
== GPU Instancing ==
 +
 +
== Compute Shaders ==
  
 
== Frustum Culling ==
 
== Frustum Culling ==
Line 16: Line 18:
  
 
'''Frustum culling''' is a culling technique that checks the camera's frustum planes and culls the objects that do not fall into these planes. These objects are culled because they are not visible by the camera.
 
'''Frustum culling''' is a culling technique that checks the camera's frustum planes and culls the objects that do not fall into these planes. These objects are culled because they are not visible by the camera.
 +
 +
 +
GPU Instancer does all the culling operations in the GPU with [[GPU_Instancer:Terminology#Compute_Shaders|compute shaders]].
  
 
== Occlusion Culling ==
 
== Occlusion Culling ==

Revision as of 16:30, 1 December 2018

About | Features | Getting Started | Terminology | Best Practices | F.A.Q.


Terminology


GPU Instancing

Compute Shaders

Frustum Culling

GPU Based Frustum Culling

Without any culling, the graphics card would render everything in the scene; whether the rendered objects are actually visible or not. Given that the more geometry the graphics card renders, the slower it will be rendering them, various techniques are used not to render the unnecessary geometry. "Culling" is a term that is used when some objects are decided not to be rendered based on a rule.


Frustum culling is a culling technique that checks the camera's frustum planes and culls the objects that do not fall into these planes. These objects are culled because they are not visible by the camera.


GPU Instancer does all the culling operations in the GPU with compute shaders.

Occlusion Culling

While frustum culling allows the graphics card not to render the

Occlusion Culling is a technique that allows the GPU not to render

How does Hi-Z Occlusion Culling work?

In occlusion culling (in general), the most important idea is to never cull visible objects. After this, the second-most important idea is to cull fast. GPUI's culling algorithm makes the camera generate a depth texture and use this to make culling decisions in the compute shaders. There are various advantages of this (e.g. you don't need to bake occlusion maps, can use culling with dynamic occluders, etc.) and it is extremely fast since all the operations are executed in the GPU. However, the culling accuracy is ultimately limited by the precision of the depth buffer. On this point, GPUI analyzes the depth texture, and decides how accurate it can be without compromising performance and culling actually visible instances.

As you can see in the images below, the depth texture is a grayscale representation of the camera view where white is close to the camera and black is away.

Hi-Z Occlusion Culling-1.png


Hi-Z Occlusion Culling-2.png



As the distance between the occluder and the instances become shorter with respect to the distance from the camera, their depth representation become closer to the same color:

Hi-Z Occlusion Culling-3.png



In short, given the precision of the depth buffer, GPUI makes the best choice to cull instances for better performance - but also without any chance to cull any visible objects.