[技术分析]DX10.1在光照和阴影方面的提升
DirectX 10的推出应该是微软的一个缓兵之计,看上去它更像是过渡产品,而DX10.1才是攻击重点,而ATI Radeon HD 3600/3400系列支持这一特性。DirectX 10.1保持了10版本的原有整体结构和编程模型,同时提供了许多增强功能。顶点,几何和像素着色指令集已经得到更新,支持Shader Model 4.1。新功能可分为三大类:新的shader及纹理能力,反锯齿改进,更加严密的规范等等。
◆ DirectX 10.1在光照和阴影方面的提升
|
DX10.1的改进(shader和纹理部分) |
||
|
最新特性 |
实现功能 |
实际效果 |
|
批量立方贴图 |
在一个渲染流中允许 |
改进全局的实时/ |
|
离散混合模式 |
允许pixel shader用自身 |
在复杂的3D场景中 |
|
增强的Vertex Shader |
单shader变为32个 |
提升复杂 |
|
Gather4 |
允许一个2x2的未过滤纹理 |
提升数据流的性能 |
|
LOD指令 |
新的shader指令,可以 |
可以自定义纹理的过滤 |
[技术分析]DX10.1在反锯齿方面的改进
因为物体周围锯齿的存在,导致了画面的闪烁甚至错误的渲染,当分辨率较低的时候,我们经常会碰到这样的问题。反锯齿技术的出现很好的改变了这一状况,它的工作原理就是通过像素的多次采样和混合达成锯齿的减少、消除和过滤。反锯齿技术的精髓就在于取样点的选择和衡量,达到最大限度的锯齿柔化并且保证性能的最小下降。
最常用的反锯齿技术就是MSAA也就是多采样反锯齿,但是它只能支持多边形的反锯齿但是不能提供纹理和shader的反锯齿。早在HD2000系列中,ATI就引入了CFAA技术,通过可编程的过滤器实现反锯齿。在最新的催化剂驱动中我们可以看到4种不同的反锯齿模式供给DX9甚至更早的游戏应用。而在最新的游戏中,ATI同样能够提供纹理和shader的反锯齿技术,达成球体边缘的反锯齿过滤效果。
|
DX10.1的改进(反锯齿部分) |
||
|
最新特性 |
实现功能 |
实际效果 |
|
多重采样缓存的读写 |
允许shader直接访问 |
在高质量反锯齿下可以 改良自适应反锯齿性能 改进HDR反锯齿的兼容性 改进延期渲染技术的 |
|
像素覆盖控制 |
允许pixel shader控制 |
|
|
可编程的反锯齿采样模本 |
允许程序控制每个像素 |
提升多GPU渲染时 |
[技术分析]DX10.1更严密规范的分析
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运算规范。