[gdc18]farcry5的地形渲染技術
來自專欄 安柏霖gamedev
ubi在地形技術上持續輸出,gdc18上面這篇farcry5的地形,也很不錯。
===overview===
這裡我們可以看下過去幾年,ubi在場景渲染上的演化:
- 15,刺客信條,gpu driven pipeline : GPU Driven Render Pipeline
- 15, farcry4, adaptive virtual texture : https://blog.csdn.net/toughbro/article/details/52108491
- 17, ghost recon wildlands, pipeline : https://zhuanlan.zhihu.com/p/33887115
所以到了farcry5,可以說具備了之前產品的所有優點:高效的pipeline,製作出超逼真場景的能力,非常高的渲染效率;
並且在此基礎上,運行效率進一步提升,細節處理更加到位。
積跬步以至千里!細節版:圖估計太小,各位手動放大了看吧
=======憤怒的廣告條=========
安柏霖:騰訊北極光《無限法則》《天涯明月刀》誠招程序=======憤怒的廣告條=========
===gpu driven===
在terrain渲染上,可以說是非常適合gpu pipeline了。
可以看到,基本的渲染工作已經都在gpu上做了,cpu做一個streaming工作,然後就一邊叫好去了。然後gpu搞定這些額外的負擔花了多少時間呢?0.1ms,班納博士對綠巨人的感覺。
具體細節,可以看前面文章安柏霖:GPU Driven Render Pipeline===懸崖處理===
adaptive virtual texture在處理z方向投射的地形材質各種猛。
但是在處理xy方向的投射,就不行了,這裡farcry5還是回到了傳統的tri plane projection,這樣三個方向投射,不同情況要blend,就會有48次texture sampling。 然後遠距離terrain的tiling比較嚴重,farcry5要做不同距離不同tiling係數,直接sample數量翻倍:96個。。。 然後就使用了隨機混合的技術來處理,最終可以將sampling數量降到12.這裡farcry5的技術,他們命名為」stochastic cliff shading」
隨機混合,其實就是使用有噪點的alpha test來替代alpha blend,本質上是一個screen door effect,圖示如下:- lod切換,fade進場景的時候
- cascaded shadow map不同cascade之間過渡
- 頭髮,草透明等等(不過質量略低)
由於farcry5使用的是deferred texturing的方式,還要處理stable和alias的問題,這個在i3d的「hashed alpha testing」被非常好的解決了。
所以最後得到了質量很好,效率非常高的3向投射的地形。=cliff geometry=
在檢測到是懸崖類地形的時候,會procedural的生成一些geometry,讓懸崖看起來更給力了。
===deferred texturing===
farcry5的叫法是「screen space shading」。。。命名非常容易讓人誤解,這個做法一般叫做deferred texturing 具體就是在屏幕上渲染material id這種信息,然後統一的在screenspace把material data讀出來用,可以shading可以填充gbuffer。具體幾個pass: - 0, shader id渲染depth和shaderid,這樣shaderid的事情就解決了然後uv的導數問題是deferred texturing的經典問題,這裡uv導數正比於position的導數,所以確實各方面非常的巧。
===sum===
farcry5的這個文章,我是非常喜歡的,把大家提的很多的做法,在具體的地形模塊上做了非常好的落地,也有了非常好的結果。 尤其是cliff stochastic shading差點這條路就走不通了,剛剛好17年的i3d有文章,有時候運氣也是實力的一部分呢。推薦閱讀:
※Dirty Game Engine
※[GDC16] Optimizing the Graphics Pipeline with Compute
※Matrix and Transform Conversion 1/3
※[GDC17] Ghost Recon Wildlands:Terrain Tools and Technology
※[翻譯]Life of a triangle - NVIDIAs logical pipeline