Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is tile based deferred rendering and what is its advantage?

I read this concept here.

But I did not get this part: "The key advantage to a deferred renderer is that it accesses memory very efficiently. Partitioning rendering into tiles allows the GPU to more effectively cache the pixel values from the framebuffer, making depth testing and blending more efficient."

Is tile-based rendering happens in parallel? Rendering multiple tiles at a time by different cores?

Also, what is the advantage of normal tile-based rendering?

Edit: This document is retired as Apple has deprecated 'OpenGL-ES'. Instead, it uses Metal.

like image 543
debonair Avatar asked Mar 20 '14 00:03

debonair


2 Answers

The mobile GPU that Apple discuss on that page will contain a small amount of memory which is physically on the GPU chip and so is very fast to access. By splitting the render target into tiles just small enough to fit in this memory, and processing those one at a time, we minimise the amount of interaction with the slower main memory - rather than having to fetch, test, blend etc the depth buffer and colour buffer values for each pixel in each triangle as we rasterise the triangles, we rasterise the tile into the fast memory and write each tile's final raster out to main memory as we are done with it.

Additionally, with a tile based deferred renderer we don't rasterise any triangles until we have calculated which triangles are visible for each pixel/quad in the tile, so we only end up shading those pixels which contribute to the final scene.

There are other potential benefits to tile based rendering to do with culling, visibility testing and locality of memory accesses even on platforms where rasterisation is not deferred and/or we are less constrained by main memory performance. This article is a bit of a tangent to what you are asking, but may help give you a better idea of these general benefits while describing in some depth how a modern rasterizer works.

like image 199
moonshadow Avatar answered Nov 14 '22 13:11

moonshadow


One main optimisation in 3d rendering is hidden surface culling. If this is done before shading, than the processed fragment count is reduced and the overall performance are improved.

Tile based rendering split scene in tiles (on the hardware side) and compute what tile will appear on screen when rendering and do further computation only on those tiles.

hidden surface techniques

like image 28
j-p Avatar answered Nov 14 '22 14:11

j-p