后处理

From KlayGE
Revision as of 10:12, 6 May 2012 by Gongminmin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

后处理是[KlayGE]]渲染系统的一个重要组件,用来处理对全屏所有像素的操作。

基类

后处理的基类是PostProcess,提供了绑定输入纹理和输出纹理、以及参数设置的接口。所有的后处理都继承于该类。

流水线中的后处理

KlayGE 4.1开始,不管是否使用延迟渲染,渲染流水线都会连到下列几个后处理上。

HDR

HDR后处理负责把光照和着色产生的HDR图像处理成适合显示输出的LDR图像。它有三部分组成:亮度统计,镜头效果色调映射

AA

团队成员陈顺斌和郭鹏曾为KlayGE 3.12提供了FXAA。在4.0中,FXAA也升级到了最新的3.11版。FXAA极快,目前的实现在GTX480上可以达到0.1ms的惊人速度。几乎做到了无性能损失的高质量AA。

Color grading

以前游戏一般不太重视color grading的作用,但在电影业,color grading是流水线非常重要的一步(可以和skinning相提并论的)。KlayGE中的color grading是用16x16x16的3D texture作为查找表,用原RGB作为地址去查询,查询出的结果即为调色后的颜色(来自GPU Gems 2: Chapter 24. Using Lookup Tables to Accelerate Color Transformations)。对于不支持3D texture的设备,比如一些移动设备,会改成使用摊平的256×16的2D texture。

Gamma校正也被合并到了color grading里一起执行,以提高效率。

延迟渲染中的后处理

有些后处理需要用到G-Buffer,所以只能用于延迟渲染中。

SSVO

SSVO(Screen Space Volumetric Obscurance)的效果类似SSAO,但采样数少得多,所以效率也更高。它需要G-Buffer的RT0和depth buffer作为输入。

SSGI

SSAO可以扩展成SSDO,所以SSVO很自然也可以扩展出SSGI(Screen Space Global Illumination)。它需要G-Buffer的RT0和RT1,以及depth buffer作为输入。可以与基于VPL的全局光照替换使用。将出现在KlayGE 4.1。

SSR

SSR(Screen Space Reflection)由王清源提供。执行高效的屏幕空间反射计算。它需要G-Buffer的RT0和RT1,以及depth buffer作为输入。将出现在KlayGE 4.1。