KlayGE中的延迟渲染(四)

转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/?p=793
 

KlayGE中的延迟渲染(三)介绍了lighting pass的优化技巧,本篇将讲解anti-alias。

Anti-Alias

从Deferred Shading发明的一天起,anti-alias的问题就一直困扰着所有Deferred的方法。虽然很多无良的游戏厂商直接在Deferred Rendering的游戏里不支持AA,但确实AA对提升画面质量很有帮助。

Edge AA

在Deferred的框架里,很自然会想到用Edge AA来处理AA。其过程不外乎:

  1. 边缘检测,得到每个像素“像边缘的程度”
  2. 在shader里根据“像边缘的程度”来控制采样坐标

这本身并不是个复杂的过程,尤其是第二步,非常直截了当了,所以这里集中讨论的是如何进行边缘检测。

GPU Gems 2的“Deferred Shading in STALKER”一文提供了一种边缘检测的方法,通过把周围像素的法线差和深度差的和来判断边缘,由e_barrier这个参数来定义阈值和比例,而这个 参数和分辨率有关。GPU Gems 3的“Deferred Shading in Tabula Rasa”改进了这个过程,只判断法线差和深度差最大和最小的两组。由于只是局部的相对量而已,这样就做到了和分辨率无关的边缘检测。KlayGE目前用 的也是这种方法,得到的边缘如下:


剩余内容请见http://www.klayge.org/?p=793

posted on 2011-01-26 15:41  龚敏敏  阅读(1356)  评论(0编辑  收藏  举报