卡通渲染——碧藍(lán)幻想versus render path簡(jiǎn)析

最近碧藍(lán)幻想versus的pc版發(fā)布了,所以買(mǎi)了一份玩一玩。碧藍(lán)幻想versus的pc版本居然沒(méi)有中文,略坑略坑。贊嘆坑點(diǎn)之余,我還順便抓了幾幀看看碧藍(lán)幻想versus的渲染。先說(shuō)結(jié)論:碧藍(lán)幻想versus的renderpath并不復(fù)雜,就是標(biāo)準(zhǔn)的前向渲染,并不是UE4的desktop,VR或者mobile path。在三渲二,賽璐璐之類的技術(shù)已經(jīng)被很好研究的現(xiàn)在,之說(shuō)渲染技術(shù),碧藍(lán)幻想versus的并不算先進(jìn),而且還有很多“槽點(diǎn)”,逼死強(qiáng)迫癥。
本文主要討論兩點(diǎn),必殺cutin和普通戰(zhàn)斗場(chǎng)景
必殺cutin

必殺的cutin比較簡(jiǎn)單,因?yàn)闆](méi)有背景繪制的過(guò)程,所以放在前面講解。
UI
第一個(gè)pass是UI,自己接觸的大部分游戲和引擎都是最后

CS

在下一個(gè)render path之前,插入了一些compute shader的計(jì)算任務(wù)。個(gè)人認(rèn)為插在這里并不好,因?yàn)镈X11下啟動(dòng)compute queue會(huì)打斷graphics queue。比較好的處理方法是放在一幀的的最前,比如Unity在dx12/vulkan上的compute skinning。當(dāng)然,這樣的設(shè)計(jì)也許是為了主機(jī),比如ps4/xbox one都支持asynccompute,可以在渲染不重時(shí)分出一定比例的ALU進(jìn)行compute shader的運(yùn)行。(PS: compute queue和graphics queue之間切換的損失并非不可接受,tile based renderering等現(xiàn)代渲染技術(shù)都會(huì)經(jīng)常切換compute queue和graphics queue)
opaque pass

不透明物體pass比較簡(jiǎn)單,大部分物體都繪制了三次,一次顏色,一次描邊,然后第三次,用較低的lod,作用還需要后續(xù)研究




不透明pass用了6個(gè)mrt,但是好像除了RT0(color)和RT4(疑似UE4 custom stencil)之外,其他的RT并無(wú)讀寫(xiě),可以優(yōu)化一下。不透明pass的最后也混入了一些particle。
shadow map


陰影貼圖用了超高精度的4K貼圖,也可以稍微減小一點(diǎn),沒(méi)必要這么刺激。
transparent pass

半透明pass主要就是繪制一些粒子特效。
post processing

后期效果并不多,主要就是tone-mapping和bloom。
普通戰(zhàn)斗場(chǎng)景
普通戰(zhàn)斗場(chǎng)景和人物cutin區(qū)別并不大,主要就是多繪制了場(chǎng)景。所以本文也只針對(duì)兩者區(qū)別記錄
depth-only pass

在UI pass之后,cs之前,有一個(gè)depth-only pass,應(yīng)該是給z-pre test用的
其他

除了多繪制了場(chǎng)景之外,其他pass和戰(zhàn)斗cutin pass完全相同。也就是說(shuō)cutin相比常規(guī)pass,不光相差場(chǎng)景本身,還優(yōu)化了場(chǎng)景的depth-only pass。
小結(jié)
碧藍(lán)幻想versus設(shè)計(jì)精美,但是技術(shù)上還是相對(duì)成熟保守,沒(méi)有什么新的有意思的東西。希望2020年Guilty Gear的新作,ARC能再度突破自己,給卡通渲染帶來(lái)新的啟發(fā)和方向。