Tile-based rendering functions on a more complicated, but much more efficient premise. In Immediate mode rendering, we first render the scene, then decide what parts to display. Tile rendering is the opposite -- decide which pixels/objects will be visible first
, and then render only
those. In the case of our house, we would only need to build the front, because that’s the only part seen by the camera. Likewise, using a Tile-based renderer, we would only need to render the front of a monster in Quake 3 Arena, and not waste time and processing power rendering and texturing its back, since it’s not visible anyway.
http://media.hardwareanalysis.com/articles/small/10131.gif" alt="Tile-Based Diagram" border=0>
Fig 2. Tile-Based Rendering.
Sounds simple enough, however making certain the appropriate pixels are displayed is more complicated than it may seem. Suppose when we took the picture of our house, the front door was wide open. When we took the time to build the entire house (Immediate mode), our picture will show a small portion of the inside as well, the part visible through the front door. But suppose we’d only built the front of the house (Tile-based), thinking it was unnecessary to build the inside as well. Now, instead of showing the inside, we’ll see an open door with nothing inside at all, which, obviously, detracts from the reality of the scene. Therefore, we need to determine that the door will be open beforehand, ascertain which parts of the inside will be visible through the door from our camera angle, and build those as well.
As scenes become more complicated, so does finding all the ‘open doors’, and displaying everything behind them correctly. Nevertheless, the promise of much less wasted processing time is captivating, and is precisely what Imagination Technology and ST Microelectronics are trying to capture. Because Tile renderers waste no pixel processing power or memory bandwidth, they require a much lower fill-rate, and much less memory bandwidth to attain the same performance as Immediate mode renderers, which are very wasteful of processing time and bandwidth.