GPU的兼容性问题已经成为3D新特性应用的重大障碍,因为针对不同的图形卡,在图形界面所应用的解释是不同的,所以会导致很多问题,比如图像质量的下降、性能的下降、错误信息甚至整个应用程序的崩溃。正因为有可能产生如此多的问题,所以开发商一般尽可能选择较低(或较老)的图形特性API以适应更多的图形卡,毕竟如果选择了较新的图形特性,你就需要更多的开发时间和开发精力(其实就是花更多的钱)去适应不同的产品。
DX10在这方面取得了很大的进步,旨在消除这些意外的错误,DX10规定了很多GPU的规范尽可能让一些基本的处理在不同GPU之间没有区别,而DX10.1则进一步强化了这些规范并且提升了一些规范的门槛。
|
DX10.1的改进(更严密的规范) |
||
|
最新特性 |
实现功能 |
实际效果 |
|
FP32过滤要求 |
128位浮点纹理过滤 |
通过强制采用高精度的 |
|
Int16混合要求 |
64位整数像素格式 |
|
|
最小4倍MSAA要求 |
多重采样反锯齿必须对 |
保证DX10.1的GPU 保证反锯齿效果的连贯性 |
|
常规反锯齿的样本规范 |
详细规定了包括 |
|
|
增加浮点运算的精度 |
所有浮点运算和混合运算 |
排除取整操作导致的错误 强制达成IEEE的运算标准 |
*说明:毗邻的浮点数值之间的距离被称为一个ulp,它是“最小单位(unit in the last place)”的首字母缩写词,0.5 ULP符合IEEE 754运算规范。
◆ 针对纹理的强制规范
其中对开发者的一个障碍就是避免了让他们使用更高精度的纹理和输出格式,最新版本的DirectX一直在进行这方面的工作。DX10.1将32位浮点格式以及16位的整数混合格式作为了强制的规定。
◆ 常规反锯齿的强制规范
MSAA也就是多重采样反锯齿是一个比较完善的技术,不过在近些年,图形厂商基于此技术推出了很多增强的技巧和方法,不同的图形卡往往采用不同的输出方式,而开发者也无法将此项技术直接应用到游戏中。DX10.1为此项技术作出了硬性的规定,包括最小反锯齿的倍数(4x),以及如果需要提升反锯齿的质量(比如8x/16x),必须遵循多重采样的模板,从而保证MSAA在不同GPU之间的一致性。
◆ 更高的精度规范
所有的数据格式都是在有限的精度范围内进行计算的,不过,某些运算并不充分利用可用精度来产生输出,而近似值的应用往往会导致一个最低精度值的产生。这种做法会导致很多不可预测的后果,尤其是当运算需要重复进行的时候,这个误差会不断累积很多倍。DX10.1规定的运算精度就是为了避免这种情况的产生,所有浮点运算和混合运算的精度都达到统一的高度,这样就能保证所有兼容的GPU运算的尾数有同样的精度下降(与CPU的数据交流同样)。
总之,DX10.1在诸多方面的改善是非常重要的,它也必将成为2008年主流的API,它对于开发者和图形厂商都是更有利的。目前,只有ATI的HD 4000/3000系列才支持DX10.1,要想获取这些技术和改善就只能选择HD 4000/3000系列。