Thanks to the hardware based tiled resources support added in DX11.2. The video has a lot of boring technical speak in the beginning but they demonstrate it with a couple of videos as well. The first is a demo of Mars that starts at 17:30.
http://channel9.msdn.com/Events/Build/2013/4-063
So how does it work in layman's terms? Typically in a video game whenever a textured object is displayed, like say a high resolution brick texture for a road, the entire texture is compressed and stored entirely in RAM and takes up its respective size of RAM. Textures are the biggest RAM consumers by a large margin compared to everything else that needs to be stored in RAM.
With partial resident textures, or tiled resources, or as Microsoft likes to call it, the texture is split up into smaller tiles allowing you to load only the tiles necessary to be displayed at a particular detail level. So for our stretched road, it's not really necessary to display all the detail you need at 1 foot away, for the portion of the road that might be 50 feet away from the player's camera.
In the presentation, Mars is textured using two textures: A 1GB diffuse map and a 2GB normal map for a total of 3GBs of textures.
Using tiled textures they were able to texture the same scene using only 16Mb of RAM.
Visualization of how the textured is tiled. Magenta represents highest level of detail tiles.
Comparison.
If you were to clamp all tiles at the lowest resolution, using only 16mb of RAM. Tiled textures off.
Tiled Textures on. This allows for the highest possible detail when zoomed in. Still only using 16mb of RAM.
While texture tiling has been done in software before, it had certain limitations. By moving it to hardware the limitations were removed. Without going into all the technical details, the benefits of removing these limitations are impressive enough that it allows developers to store texture data sizes that previously took up 3GB of RAM in only 16Mb of RAM! Not only does it offer a drastic reduction in size, but it can also allow more detailed worlds than before since now developers have a lot more texture storage available.
In addition to textures, and presumably the reason Microsoft prefers to call this partial resident resources, is because this technique can also be applied to other areas such as shadows through shadow mapping. It's demonstrated in the video at 22:40.
Using only 16Mb. Tiled resources turned off.
Using only 16Mb. Tiled resources on.
Middleware developer Graphine Software also got on stage and demonstrated their middleware software Granite for streaming tiled textures which has been integrated in Divinity Dragon Commander by Lariat. The video they demo-ed at the conference can be found here on their website.
For the X1 this is particularly important since using this technique the 32Mb of eSRAM can theoretically be capable of storing up to 6GB worth of tiled textures going by those numbers. Couple the eSRAM's ultra fast bandwidth with tiled texture streaming middleware tools like Granite, and the eSRAM just became orders of magnitute more important for your next gen gaming. Between software developments such as this and the implications of the data move engines with LZ encode/decode compression capabilities on making cloud gaming practical on common broadband connections, Microsoft's design choice of going with embedded eSRAM for the Xbox One is beginning to make a lot more sense. Pretty amazing.
Log in to comment