天天看點

絕對原創,Cheapest PBR Shader EVER!!!!

一提到Physically based rendering, 就感覺跟手遊搭不上邊,總有種十分高端的感覺吧,可是我現在就是要在手遊上用PBR,而且還是高效率的用!!!

這裡提到的高效包括Shader執行高效,Shader魯棒以及美術和程式的學習成本極低!!!

不知道大家是否知道matcap,美術用ZBrush的時候的一個shader,主要模拟向光面受光的反射情況

根據Unreal在Siggraph 2013上做的關于實時PBR的講座,實時PBR其實就是兩個參數,光滑度和金屬度。具體可以去下論文,不要錢的也不用翻牆就能看,看完這個再看下面的會覺得恍然大悟,至少了解一下這篇文章怎麼做PBR的思路就行,具體公式啊怎麼做随機采樣都可以跳過。

那麼如果我們用一張2D Texture作為madcap貼圖,計算材質在各個角度反射的結果,用這個texture的mipmap儲存不同粗糙度的情況下的反射情況,那麼我們就有了粗糙度

我們用兩張而不是一張matcap貼圖,一張儲存金屬材質的效果,一張儲存廢金屬材質的效果,這樣我們有了金屬度(根據Unreal說,金屬度隻有在取完全金屬和完全非金屬時美術才覺得不是trivial的效果)。

這樣,我們就用MAX,選一個吊炸天的離線PBR的shader,弄個材質球,把光打好,從最光滑渲染到最粗糙儲存成mipmap chain,金屬非金屬一樣一個弄好,好了,我們有了PBR的matcap貼圖了。

然後就是madcap的shader少改一下,多接受一張貼圖,r通道儲存粗糙度,g通道儲存金屬度,然後在PS裡面根據這個貼圖指定的每個像素的材質除了用normal選位置再選一下mipmap層和用哪張貼圖就完了。

說到這裡完全沒說到采樣,模糊,PBR理論。。。。。。我覺得稍微用心想一想兩天能明白過來,然後你就是next next generation的手遊開發者了

不過這個shader有個問題,錄影機角度不能動,光照角度不能動,但是角色可以随便動!!!!!我覺得大多數手遊如果做上帝視角等等視角沒問題哦

繼續閱讀