Martin Fuller, Xbox Advanced Technology Group
Published: July 25th 2016
Compared to the original Xbox One console, the GPU for Xbox One X has ~4.5 times the compute power, 4 times more L2 cache, Delta Color Compression (DCC), and significantly more bandwidth than even ESRAM.
4K refers to a resolution of 3840 x 2160 = 8,294,400 pixels, exactly double the dimensions of 1080p (2K). Pixel counts relative to 4K are:
Of course, not all compute is spent on pixels, not all surfaces are tied to display resolution, and for the same content, rasterization efficiency improves as resolution increases. To give an example, we tested a 1080p first-party title running instead at 4K, and the number of pixels processed increased by only 3.5 times.
We acknowledge that developers may not wish to spend all of the additional GPU resource of Xbox One X on resolution, and this is not mandated. To make the best games possible, developers will inevitably spend GPU resource on other quality improvements such as higher fidelity shadows, reflections, texture filtering, and longer draw distances. Another option developers might consider is frame rate upscaling—running graphics at 60 Hz but the CPU at 30 Hz and interpolating animation. Developers should leverage the additional GPU resource of Xbox One X for whatever benefits their title the most.
A linear increase in resolution does not produce a linear improvement in perceived quality. This diminishing return makes it extremely difficult to meet consumer expectation on how top tier Xbox titles should look. Fortunately, as the resolution increases, reduced resolution rendering becomes more attractive; it becomes much more difficult for the eye to spot any artifacts. Two principle techniques that developers might wish to consider are half resolution rendering and sparse (chequer board) rendering, which are detailed later in this paper.
We also appreciate that on consoles, developers wish to make 100% use of the GPU to produce the best possible visuals on each fixed platform. The obvious solution mitigating the difficulty of balancing multiple different Xbox devices is dynamic scaling. We anticipate that the player will have much more difficulty spotting resolution changes in the 2K–4K range than at sub 2K on the original Xbox One console or Xbox One S.
This topic has been well covered already (see references) and dynamic scaling is employed by an increasing number of game engines. Typically, titles alias a vector of render targets in the same virtual address space, and at runtime choose which to index, increasing or decreasing resolution based on whether the GPU is completing early or late. Thanks to DirectX12, this aliasing can be achieved on all of PC, Xbox One, Xbox One S, and Xbox One X.
Half resolution rendering is typically used for transparencies and screen space effects, SSAO, SSR, and perhaps even shadow accumulation, global illumination, and non-important local lights. On Xbox One X, a half resolution effect rendered at 1080p and bilaterally up sampled to 4K could look as good or better than the same effect rendered at full resolution on Xbox One. For example, on Xbox One the effect is produced at full resolution, say 900p, but on Xbox One X, the effect is produced at 1080p, which is half resolution.
| Perhaps the most impressive implementation we can cite for sparse rendering was presented by Ubisoft at Xfest 2016 in London. *Rainbow Six | Siege* used MSAA to render the scene with a chequer board pattern, halving the pixels rendered. On PC, this technique enabled Ubisoft to hit 4K 60 fps with relatively modest GPU requirements. On Xbox One, this technique can save a considerable amount of ESRAM. See [Rendering Rainbow Six | Siege](http://aka.ms/xfest2016pptx-graphics-321), from slide 47. |
ESRAM remains essential to achieving high performance on both Xbox One and Xbox One S. However, Xbox One X and PC are not provided with ESRAM. Because developers are not allowed to ship a Xbox One X-only SKU, optimizing for ESRAM remains critical to performance on Microsoft platforms.
Render targets aliasing is not only an essential technique for ESRAM, but it can effect considerable memory savings. A single 4K 32 bpp surface requires just shy of 32 MB. Therefore, we recommend that developers extend their render target aliasing solutions to both PC and Xbox One X, although with a pool larger than 32 MB.
In summary, we recommend:
Dynamic scaling to leverage 100% GPU resource all of the time and on all devices:
a. Up to 1080p on Xbox One
b. From 1080p to 4K on Xbox One X
Reduced resolution rendering, if only on Xbox One X:
a. Spare rendered g-buffers and lighting
b. Half resolution transparencies, SSAO, etc.
c. Half resolution and sparse?
Extending ESRAM render target aliasing solutions to PC and Xbox One X:
a. Save memory
b. Get better performance on low-end PC cards with limited VRAM
c. Keep the original Xbox One and Xbox One S running well
d. Hit 4K and boost visual quality settings
| [Rendering Rainbow Six | Siege](http://aka.ms/xfest2016pptx-graphics-321) (Xfest 2016) |