• Antialias的前世今生(三):Hybrid AA


    转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/2011/05/19/anti-alias%e7%9a%84%e5%89%8d%e4%b8%96%e4%bb%8a%e7%94%9f%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9ahybird-aa/

    上篇文章讲述了几种基于post process的AA方法,有没有可能将post process AA和hardware AA结合起来呢?本篇要讲的正是这样的hybrid AA。

    首先补充一下,对于MSAA的计算浪费,可以从下面的对比图看出来:

    MSAA edge

    MSAA需要计算的edge

    Simplified edge

    真正需要计算AA的edge

    有了这个对比,大家应该有了直观感受,MSAA实际上把很多计算量浪费在了实际上不必要AA的像素上了。如果样本数高,浪费会更严重。

    上一篇提到的那些基于post process的方法其实都在做一件事情:试图通过pixel信息估计出sub-pixel级别的几何,然后做AA。Edge AA是通过独立点来估计,MLAA是通过L形来估计,FXAA和DLAA是通过线段来估计。Hybrid AA的方法想表达的是,为什么要“估计”,而不是干脆就先存出sub-pixel的几何?

    SRAA

    Subpixel Reconstruction Anti-Aliasing是 NVIDIA的研究员在I3D2011上发表的新方法。它寄予的事实是,shading的变化频率一般低于几何的变化频率,所以可以在较低分辨率上 shading,而用较高分辨率恢复几何。SRAA的基本流程为,在Deferred Shading的框架中,渲染一个高分辨率(或者带MSAA)的G-Buffer,但在shading的时候仅在普通的分辨率(或者没有MSAA)的情况 下做。累积的结果通过G-Buffer重建sub-pixel信息,来进行类似MLAA的AA计算。这种方法结合了MSAA和MLAA,但可以用较低的样 本数做到较高的MSAA才能得到的效果,同时不增加shading的计算量。SRAA由于原理问题,只能用在Deferred框架中(不过对于现代的游戏 来说这不是个大问题)。

    SRAAGPAA

    Geometric Post-process Anti-Aliasing是Humus独立提出来的AA方法。基本思路是在渲染几何之后在此用线框模式渲染一遍,这时候可以得到每个三角形在每个pixel的覆盖率:

    GPAA illustration通过这个覆盖率,计算AA就轻而易举了,结果比较如下:

    GPAA compare

    这种方法的代价是多了一遍线框渲染,但可以用于Forward和Deferred两种框架。杯具的是,Humus的twitter上说这种方法实际上在1996年就被别人申请专利了。

    Adaptive AA

    Intel在SIGGRAPH 2010的course Deferred Rendering for Current and Future Rendering Pipelines上 提到了一种很简单很暴力的AA方法,在edge的地方per-sample计算,在non-edge的地方per-pixel计算。和基于post process的方法一样,这需要执行一个边缘检测,并在stencil中标记出来,然后就可以分别计算了。下图中红线标记的地方就是检测出来的 edge:

    Adaptive AA edge

    这种方法的结果会和SSAA一样,同时没有MSAA重复计算的毛病。

    总结

    Hybrid AA综合了hardware AA和post process AA的优点(或者说,缺点)。优点是可以用低于hardware AA的内存开销和计算量达到一样的效果。缺点是需要修改原有的图形渲染流水线。

    本系列总结了三类不同的空间AA方法,希望对大家有所帮助。

  • 相关阅读:
    admob 广告增加
    流量统计
    施乐 著名的帕洛阿尔托研究中心
    android Launcher
    系统集成
    jad 批量反编译class文件
    eclipse classes 文件不见
    悬浮窗不可触摸
    ios 相关
    android 屏幕切换
  • 原文地址:https://www.cnblogs.com/gongminmin/p/2051114.html
Copyright © 2020-2023  润新知