因为物体周围锯齿的存在,导致了画面的闪烁甚至错误的渲染,当分辨率较低的时候,我们经常会碰到这样的问题。反锯齿技术的出现很好的改变了这一状况,它的工作原理就是通过像素的多次采样和混合达成锯齿的减少、消除和过滤。反锯齿技术的精髓就在于取样点的选择和衡量,达到最大限度的锯齿柔化并且保证性能的最小下降。
最常用的反锯齿技术就是MSAA也就是多采样反锯齿,但是它只能支持多边形的反锯齿但是不能提供纹理和shader的反锯齿。早在HD2000系列中,ATI就引入了CFAA技术,通过可编程的过滤器实现反锯齿。在最新的催化剂驱动中我们可以看到4种不同的反锯齿模式供给DX9甚至更早的游戏应用。而在最新的游戏中,ATI同样能够提供纹理和shader的反锯齿技术,达成球体边缘的反锯齿过滤效果。
|
DX10.1的改进(反锯齿部分) |
||
|
最新特性 |
实现功能 |
实际效果 |
|
多重采样缓存的读写 |
允许shader直接访问 |
在高质量反锯齿下可以 改良自适应反锯齿性能 改进HDR反锯齿的兼容性 改进延期渲染技术的 |
|
像素覆盖控制 |
允许pixel shader控制 |
|
|
可编程的反锯齿采样模本 |
允许程序控制每个像素 |
提升多GPU渲染时 |
在技术展示Demo中,我们可以看到ATI显卡对于边缘锯齿的检测非常精确,对于这部分像素被赋予了更多的采样点,右下角的放大图可以精确的展示反锯齿的效果,边缘的柔化和闪烁几乎不存在。
◆ 自定义反锯齿的优势和应用
在DX10.1中,允许为pixel shader定义反锯齿的过滤,自定义的反锯齿可以提供更好的效果,因为常规的MSAA在某些情况下会出错比如HDR光照和延期遮光技术等等。所有的DX10.1显卡都必须最低支持4倍MSAA,以针对DX9及其之前的游戏,而对于新游戏来说,则由特定的GPU来实现相应的反锯齿效果。
DX10.1中的一个新的特性就是允许shader控制反锯齿缓存的读取,而在之前只允许访问多重采样的颜色缓存,这一机制允许更先进的反锯齿技术存在,更有利于着色器的效能发挥硬件的优势,而ATI的CFAA反锯齿其实已经应用了类似的技术。
Radeon显卡还支持“自适应反锯齿”技术,专门为改善部分透明纹理(比如植物和铁丝网之类的物体)的锯齿效应。DX10.1扩展了这部分的能力,通过引入样本覆盖技术,可以控制特别区域的采样样本,这对于ATI来说,实际上是扩展了自适应反锯齿的能力,开发者可以处理更多类型物体的反锯齿,并将这些反锯齿的模本进行定义为可以兼容的硬件带来更好的画面提升。ATI Radeon显卡其实已经达成了DX10.1反锯齿方面的效果,只不过DX10.1首次将其展示在开发人员的面前并成为DirectX的标准。