Direct3D 10.1: Quality, Practically
Aiming At Quality
With Direct3D 10.1, Microsoft has focused on rendering quality more than any of the other new features, so to speak. And the main focal point was antialiasing. First news: from now on, the support of antialiasing 4x is compulsory for 32-bit (RGBA8) as well as 64-bit (RGBA16) buffers. Furthermore, samples' position is also specified by the API and must be configurable. Without going as far as the ability to freely program samples' position, an application must at least be able to choose between many predefined patterns.
Beyond more strictly defined specifications, Microsoft has also sought to rationalize a little antialiasing management by offering much more control to programmers and by resorting less to the GPU manufacturers' homemade recipes. One has to admit that until now, users had access to a number of options quite disconcerting to beginners: apart from antialiasing levels (2x, 4x, 8x), the user had access to transparency antialiasing to filter alpha textures either in multisampling or supersampling mode, and on top of that were added specific features from each Independent Hardware Vendor (IHV): CSAA or CFAA... With Direct3D 10.1, programmers can finally specify if they want multisampling or supersampling by primitive and he also has access to the coverage mask of each pixel, which grants him control on samples on which shaders are applied.
D3D 10.1 Antialiasing
Finally, whereas Direct3D 10 enabled the access to samples of a multisampled color buffer, it's now possible to do the same thing in a multisampled depth buffer.
Practically, most of those features aren't new. Each manufacturer more or less included them in its own way and allowed their activation in its drivers. What's really new is that Direct3D 10.1 finally allows all this to be opened to games' programmers. Henceforth, driver's programmers will no longer be in charge of developing new antialiasing modes but games' programmers will now handle it according to the specific needs of their engines, a little like what is already happening on consoles where programmers have access to a lower hardware level.
Microsoft therefore gives the best there is to developers while waiting for totally programmable ROP, which would make all this even more flexible and clearer.
Practically, don't hope for much in the meantime. We are still waiting for developers to master Direct3D 10 and for them not to be limited by the Direct3D 9 versions of their engines that they still must upgrade, so there's little chance that they'll run towards Direct3D 10.1; the hardware is barely out and the API won't be available until Vista's Service Pack 1 in 2008.
Nevertheless, some features should allow for interesting effects. Specifically, Cube Map Arrays could simplify dynamic reflections, even if one must not forget the impact on other portions of the pipeline. Actually, in today's games, dynamic reflections are usually only applied to main elements (and the frequency of the reflections' update is far less important than the screen's refresh rate) in order to save some fill rate. If Cube Map Arrays take away a restriction on the number of simultaneous reflection, it doesn't cancel the others. We'll thus wait to really appreciate it in games, rather than in a handful of demos formatted by AMD or Microsoft.
Independent blending modes for each buffer when using MRT should ease the development of deferred shading rendering engines. Combined with possibilities to read antialiasing samples of color and depth buffers, those engines won't be forced to abandon antialiasing for a vague blur that is of questionable interest.
The other new features bring more additional comfort to developers than they truly do to gamers.