◆ DirectX 10.1在光照和阴影方面的提升
首先来谈一下光照和阴影,对于一个在三维环境中的物体,人类的视觉系统一般通过相对位置来判断具体物体的实际坐标位置,而对于3D渲染来说,就要提供光源和阴影对于物体照射的深度和颜色来为玩家的眼睛服务,模仿现实中情况让使用者知道物体的实际位置,这需要完全基于物理效应和实时的光照处理。
下面的截图很好的表现了这方面的应用,数以千计的物体通过逼真的光照和阴影精确的将具体的位置展现,光线追踪技术让这一现实的难题很容易的在如今的3D渲染中变为现实。有很多不同的渲染方法来实现这样的效果,比如“光照/阴影映射”、“辐射”以及“射线追踪”,射线追踪更适合在类似CPU这样的架构体系中运算,前两者则是GPU架构体系喜欢的处理方式,这也是前两者被广泛应用的原因。
回到DX10.1上来,因为加入了批量立方贴图这个功能,让游戏在处理大量物体和光源在3D环境中的多重反射和光照实现了效率的可能,增强了画质的效果。
◆球形光照的技术实现和画质优势
前面我们分析了几种光照技术的优劣,下面我们就来看看球体照明——ATI最新HD 3800系列显卡所能实现的高效率高画质光照技术。球体照明是一个和渲染结合的非常好的技术,光照阴影映射和间接照明支持几乎无限数量的动态光源,结合现实的反射情况,还能实现软阴影。利用DX10.1提供的阵列立方贴图和几何处理单元,可以实现全局照明系统,达成数以千计的物体在一个复杂场景中的互动。
这种照明技术是在一个封闭环境中应用的范例,因为它能够通过整体环境的表现作为计算的参考,这种计算方法具有高度的扩展性,并且渲染质量可以随意的控制,对于立方体数量和表面精度的控制就可以达成。DX10.1的立方纹理阵列,允许极大数量的立方纹理被渲染和采样,而且可以并行处理,这对于GPU或者多 GPU系统是一个非常好的消息。
◆DX10.1在反锯齿方面的改进
在最新的催化剂驱动中我们可以看到4种不同的反锯齿模式供给DX9甚至更早的游戏应用。而在最新的游戏中,ATI同样能够提供纹理和shader的反锯齿技术,达成球体边缘的反锯齿过滤效果。在技术展示Demo中,我们可以看到ATI显卡对于边缘锯齿的检测非常精确,对于这部分像素被赋予了更多的采样点,右下角的放大图可以精确的展示反锯齿的效果,边缘的柔化和闪烁几乎不存在。
◆ 自定义反锯齿的优势和应用
DX10.1中的一个新的特性就是允许shader控制反锯齿缓存的读取,而在之前只允许访问多重采样的颜色缓存,这一机制允许更先进的反锯齿技术存在,更有利于着色器的效能发挥硬件的优势,而ATI的CFAA反锯齿其实已经应用了类似的技术。
◆ 针对纹理的强制规范
其中对开发者的一个障碍就是避免了让他们使用更高精度的纹理和输出格式,最新版本的DirectX一直在进行这方面的工作。DX10.1将32位浮点格式以及16位的整数混合格式作为了强制的规定。
◆ 常规反锯齿的强制规范
MSAA也就是多重采样反锯齿是一个比较完善的技术,不过在近些年,图形厂商基于此技术推出了很多增强的技巧和方法,不同的图形卡往往采用不同的输出方式,而开发者也无法将此项技术直接应用到游戏中。DX10.1为此项技术作出了硬性的规定,包括最小反锯齿的倍数(4x),以及如果需要提升反锯齿的质量(比如8x/16x),必须遵循多重采样的模板,从而保证MSAA在不同GPU之间的一致性。
◆ 更高的精度规范
所有的数据格式都是在有限的精度范围内进行计算的,不过,某些运算并不充分利用可用精度来产生输出,而近似值的应用往往会导致一个最低精度值的产生。这种做法会导致很多不可预测的后果,尤其是当运算需要重复进行的时候,这个误差会不断累积很多倍。DX10.1规定的运算精度就是为了避免这种情况的产生,所有浮点运算和混合运算的精度都达到统一的高度,这样就能保证所有兼容的GPU运算的尾数有同样的精度下降(与CPU的数据交流同样)。