日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

KlayGE 4.0中Deferred Rendering的改进(四):GI的神话

發(fā)布時間:2024/1/17 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KlayGE 4.0中Deferred Rendering的改进(四):GI的神话 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載請注明出處為KlayGE游戲引擎

?

上一篇解決了透明物體的渲染問題;本文將挑戰(zhàn)另一個實(shí)時渲染的神話,實(shí)時全局光照(GI)。

實(shí)時全動態(tài)GI

目前direct lighting在游戲中日趨成熟,比較前衛(wèi)的游戲引擎已經(jīng)不滿足于diect lighting的效果了,逐漸開始嘗試indirect lighting。早期的方法有通過離線渲染light map來實(shí)現(xiàn)靜態(tài)場景、靜態(tài)光源的GI。接著出現(xiàn)了PRT,可以處理靜態(tài)場景、動態(tài)光源。CE3用了Light Propagation Volumes的方法,不需要預(yù)計算,可以產(chǎn)生動態(tài)場景、動態(tài)光源的diffuse GI。不過其速度和質(zhì)量確實(shí)不敢恭維。難道就不能有全動態(tài)場景、全動態(tài)光源、diffuse和specular通吃實(shí)時GI方法嗎?有!Multiresolution splatting for indirect illumination(MRSII)前來救駕。

在KlayGE 3.12中,團(tuán)隊(duì)成員atyuwen就已經(jīng)實(shí)現(xiàn)了MRSII。經(jīng)過半年多的改進(jìn),這種GI方法已經(jīng)融入了新的Deferred Rendering框架中,并且性能也得到了很大的提升。下面就讓我們來看看這種神奇的GI。

MRSII的渲染流程如下(感謝vanish整理了此流程圖):

首先,G-Buffer需要做mipmap,接著在每一層檢測深度和法線的間斷點(diǎn),把那些間斷點(diǎn)在stencil buffer中標(biāo)記出來,得到了這樣的stencil buffer:

和之前的stencil規(guī)則一樣,最高位是1表示忽略。所以灰色的pixel是可以忽略掉的,黑色的是需要計算光照的??梢钥闯龊谏嫉拿娣e并不大,絕大部分pixel都被略過了。

另外,還需要生成一個Reflective shadow map。和shadow map類似,RSM也是從光源視角渲染一遍場景。除了深度以外,RSM還需要保存normal和flux信息。把RSM采樣出一些點(diǎn),比如256個,作為 虛擬點(diǎn)光源(VPL)。目前KlayGE里面用的是均勻采樣的方式,以后將改成importance sampling的方式提高VPL分布效率。

最后,每個VPL都可以根據(jù)BRDF生成一個light volume。用這些light volume去照亮G-Buffer的每一層。初始的light volume是個半球,在它的vertex階段會根據(jù)各方向反射的亮度拉出某些頂點(diǎn),生成一個奇怪形狀的light volume。這個階段因?yàn)樯婕暗酱罅康奶畛浜陀嬎?#xff0c;非常耗時,但因?yàn)閟tencil test是打開的,絕大部分pixel都會被擋掉,真正參與計算的pixel數(shù)遠(yuǎn)遠(yuǎn)少于G-Buffer的總pixel數(shù),GI因此得到明顯的加速。經(jīng)過 測試,在目前的場景下,如果只用一層G-Buffer(也就是不用multiresolution),速度只有用三層的一半。如果大于三層,速度已經(jīng)沒有 提高了。所以默認(rèn)就選了三層G-Buffer。

在生成每一層的indirect lighting結(jié)果之后,還需要做一個特殊的插值upsampling,才能得到光滑的結(jié)果。這個插值在MRSII的原paper中有描述,這里就不累贅了。

如果只是用一般的最近點(diǎn)插值或者雙線插值,結(jié)果會有很多悲催的鋸齒:

最后,把indirect lighting加到direct lighting中,繼續(xù)做下一步的shading pass。最終結(jié)果如下:

比較只有direct lighting的結(jié)果,可以看到右邊和地面被照亮了:

用了MRSII后,對于512×512的RSM、256個VPL、三層G-Buffer的情況下,GI在GTX480上只需要1.09ms、在 9800GT上需要4.3ms。目前還有不少性能空間可以挖掘,我預(yù)計在同質(zhì)量的情況下,最終能達(dá)到在GTX480上0.5ms、9800GT上 2.5ms的速度。

這套GI的框架不但可以做這樣的反射型indirect lighting,也可以做caustics這樣的高頻反光,也可以處理sub-surface scattering等材質(zhì)效果。在KlayGE以后的版本中,MRSII將會得到持續(xù)的發(fā)展。

本篇詳細(xì)講解了實(shí)時GI的做法,下一篇是關(guān)于post process的改進(jìn)。

總結(jié)

以上是生活随笔為你收集整理的KlayGE 4.0中Deferred Rendering的改进(四):GI的神话的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。