KlayGE 4.0中Deferred Rendering的改进(五)完结篇:Post process
轉載請注明出處為KlayGE游戲引擎
?
上一篇分析了KlayGE中實現實時全動態GI的方法,本篇是這個系列的完結篇,主要講流水線的最后一段:Post process。
Post process
在KlayGE 4.0的Deferred Rendering中,post process主要有HDR、AA和color grading。下面將分別講述它們的改進。
HDR
在KlayGE 3.12用了filmic tonemapping之后,HDR部分就幾乎沒有別的改變。這里唯一的變化是最終輸出的float4,把亮度存在A通道上。這是為了后面FXAA的需要。
AA
在Deferred框架中,無法使用硬件AA曾經是個惱人的問題。隨著這些年各種基于post process的AA方法大量出現,Deferred下AA的問題基本被解決了。
團隊成員陳順斌和郭鵬曾為KlayGE 3.12提供了FXAA。 在新版本中,FXAA也升級到了最新的3.11版。從FXAA 3開始,就要求輸入紋理是LDR的RGBL格式(L為亮度),所以計算AA的地點也就從HDR之前改到了HDR之后。雖然FXAA 3.11可以用G通道代替L,但效果肯定會受影響。既然讓HDR post process輸出RGBL輕而易舉,我就沒有把L改成G。FXAA極快,目前的實現在GTX480上可以達到0.1ms的驚人速度。幾乎做到了無性能損 失的高質量AA。
Color grading
Color grading是這個版本新增的。以前游戲一般不太重視color grading的作用,但在電影業,color grading是流水線非常重要的一步(可以和skinning相提并論的)。這里我實現的color grading是用16x16x16的3D texture作為查找表,用原RGB作為地址去查詢,查詢出的結果即為調色后的顏色(來自GPU Gems 2: Chapter 24. Using Lookup Tables to Accelerate Color Transformations)。除了runtime的post process之外,還需要一個離線工具,用來生成那個3D texture。這里我用的方法類似CE3,先生成一個攤平的256×16的2D texture:
?
在photoshop里打開一張游戲截圖,調整RGB曲線至需要的色調,然后把那個RGB曲線應用到之前生成的2D texture,最終打包成3D texture就得到了我們所需要的查找表。以后可能會根據需要做一個在線調整color grading的工具。
總結
本系列文章把KlayGE 4.0中Deferred Rendering的改進逐一介紹了一下,希望能對也在做類似事情的朋友有所幫助。在總結里我也身邊展望一下未來,看看在KlayGE 4.1中,Deferred Rendering部分還會可能出現什么改進。
對于KlayGE 4.x還有什么期待,可以上trac交流。
總結
以上是生活随笔為你收集整理的KlayGE 4.0中Deferred Rendering的改进(五)完结篇:Post process的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2011软件设计大赛
- 下一篇: ruby1.8.6 安装watir是出现