[gdc18] <farcry5>地形技術

這裏寫圖片描述
ubi在地形技術上持續輸出,gdc18上面這篇farcry5的地形,也很不錯。

===overview===
這裏寫圖片描述

這裏我們可以看下過去幾年,ubi在場景渲染上的演化:

  • 15,刺客信條,gpu driven 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,這裏不贅述。

===懸崖處理===
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。
這裏寫圖片描述
這個最大的優勢就是避免了alpha blend,每個pixel只需要shading一次,而不是多次來做blend,性能優勢非常的好。
其實除了farcry5的地形,多向投射和變參tiling,這項優化還有這些地方可以使用:

  • 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的事情就解決了
這裏寫圖片描述
- 1, gbuffer, material data,利用了地形的特點,位置就可以索引sector,進一步在quadtree裏可以找到material信息

然後uv的導數問題是deferred texturing的經典問題,這裏uv導數正比於position的導數,所以確實各方面非常的巧。

===sum===
farcry5的這個文章,我是非常喜歡的,把大家提的很多的做法,在具體的地形模塊上做了非常好的落地,也有了非常好的結果。
尤其是cliff stochastic shading差點這條路就走不通了,剛剛好17年的i3d有文章,有時候運氣也是實力的一部分呢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章