Unity TA总监王靖:Unity如何实现美术画质升级?
10月9日,中國 Unity 線上技術大會的直播中,擔任Unity中國區的技術美術總監王靖,為我們分享了游戲畫質的提升之路。
?
以下是演講實錄:
大家晚上!我是王靖,目前在Unity擔任中國區的技術美術總監。今天我和大家分享的主題是游戲畫質提升之路。在分享開始之前先簡單介紹一下我們Unity技術美術的團隊。
我們Unity技術美術團隊除了平時會制作Unity內部的一些項目,比如大家看到的一些demo以外,還會幫助我們客戶定制一些Unity引擎的渲染效果,美術流程,還有技術支持。比如說解決問題、培訓等等的。目的就是幫助使用Unity引擎的客戶提升整個項目畫面的品質。
下面我們進入正式的分享環節。我們Unity從創立開始每年都會應用最先進的渲染技術制作demo。從2015年的《Black Smith》到2016年的《亞當》,2018年的《死者之書》,包括2019年和2020年《異教徒》的兩部分影視短片。其實在我們Unity的很多影視或者動畫demo中都能找到很多應用在現在游戲渲染中的原型。比如說《Black Smith》的角色陰影,《亞當》中的PBR渲染效果,《死者之書》中植物的風場效果等等。在國內我們Unity也通過技術美術支持服務的方式幫助很多客戶把一些好的效果和優化技術應用到了游戲中。
我們首先看一下《異教徒》中最新的角色制作流程。主角的頭部和表情和貼圖都是通過我們說的4D捕捉的流程制作的。整套流程并沒有說是影視或者游戲之分。游戲也完全可以直接用這套流程來做。目前我們Unity支持的很多游戲項目都在使用注入動作捕捉、表情捕捉、照片建模或者是掃描建模這類的流程來提高整個模型貼圖制作的精度和還原度。主要還是針對高質量的寫實類的游戲。
?
來看一下這個流程整個視頻的展示。我們現在看到的是真人在鏡頭前捕捉的過程。他在模擬一些表情,說話。現在這個是我們看到的初步捕捉完成之后整個角色的表情和模型。可以看到這個時候還有很多頂點warp的問題。
?
之后,我們會把我們的模型導入到RS3D中,一個是對warp的頂點進行修正。可以看到這是我們把頂點都修正完之后的結果。這是加入了高模的細節,之后整個就是人素模的表情。
這是整個捕捉完了之后加上材質、渲染之后在引擎里面渲染的效果。
現在很多團隊一看到照片建模就望而卻步,特別是手游團隊,其實這套流程已經非常成熟了,我們再來看個視頻。
?
這是一個使用RS3D解決warp頂點的一個演示視頻。還可以用來將角色一系列掃描的表情轉化為相同拓撲和紋理坐標的角色模型。這樣就可以將整個流程完美地應用到游戲的低模上。
整個過程都是通過程序化節點的方式計算的,美術人員也沒有太多的工作量。我們可以捕捉完一套表情應用給不同的模型。可以大量地節省我們模型捕捉的成本。
主角的夾克制作我們使用了Marvelous Designer,相信現在的3D美術對這款工具應該都不會陌生。我們先在Marvelous Designer中打板,跟裁縫制作真實衣服打板是一樣的,因此我們也調研了很多真實夾克制作的打板圖,現在看到的就是最終確定的效果。大家看到右邊是Marvelous里面打板的效果。
?
最終軟件會將每一塊面縫合起來,經過布料模擬來配合整個角色的動作,產生自然的布置。最后還會在ZBrush中添加一些細節。這個流程同樣在國內游戲中也是一個很標準的工作流程。
再來看使用這個Marvelous來制作夾克還有一個好處,可以很好地模擬布料動畫。右邊是Marvelous中使用角色簡模進行脫夾克的布料模擬,左邊是我們在Unity中渲染的效果。游戲中我們可以使用Maya或者Blender的插件快速地將物理模擬的動畫轉化成骨骼蒙皮動畫輸送給我們的游戲引擎進行實時渲染。
?
渲染方面我們看一下。渲染方面我們今天主要看一下眼球和皮膚的渲染。這兩部分后面我會講一下怎么樣在移動端去實現。
《異教徒》的主角皮膚用了很多的渲染技術。主要有上面幾類。今天我們主要看一下其中最重要的一個效果,就是我們平時或者美術經常說的皮膚的非常普遍的現象,就是3S效果,次表面散射。這個效果也是在做皮膚渲染中需要重點做的。我們現在看的是HDRP主機游戲中怎么做這個皮膚,后面會講手游。
直接用《異教徒》的角色看一下3S效果的對比,這是沒開啟的,這是開啟后的效果,這明顯是一個背光的效果,特別是耳朵周圍的透紅的現象,這就是3S的次表面散射的標準的現象。可以對比地看一下。這是沒的,這是有的
?
看一個更夸張的效果,左邊是沒有3S效果的,右邊是打開的,這個效果更夸張,好像做了一次磨皮,右邊的效果更像皮膚,有點蠟的感覺。
?
我們要還原一個效果或者是提升一個效果,首先就要先了解這個效果,這樣就能更好地為我們做優化打下基礎。我們快速地了解一下什么是3S的效果?也就是次表面散射。光從一種介質進入到另一種介質有三種形態,第一種是反射,第二種是次表面散射,第三種是透射。其中反射是我們現在非常火的BRDF,也就是PBR材質中用到的雙向反射分布函數。
我們通常說的次表面散射光照傳輸模型就是BSSRDF,我們叫它雙向表面散射反射函數,就是現在大家看到的這個函數。
?
然后其中一個非常關鍵的參數就是這個R,通常次表面散射的光線密度分布是一個各向同性同向的函數,一個像素受周圍像素光照影響的比例和兩個像素之間的距離有關,這個密度分布函數就是R,R的計算是非常復雜的。
2001年Jensen提出了一個Diffusion Profile擴散剖面。這個Diffusion Profile是用來描述光線如何在半透明物體中進行擴散和分布的函數。可以簡單地理解為Diffusion Profile就是一張權重圖,不同的皮膚渲染方法通常就是對Diffusion Profile的不同的近似。初期的Diffusion Profile使用的是偶極子來擬合計算的,但是對于皮膚來說效果不理想。之后針對這個Diffusion Profile圖形界進行了一頓猛攻,出現了多極子和高斯函數求和的擬合方法。有興趣的同學可以搜這些方法來看,我就不展開講了。
總之,后續這一系列的改進都是為了更好地擬合我們看到的這個R,就是基于物理函數計算結果的曲線。
看左邊這張圖就是Diffusion Profile的計算結果,就好像我們拿一個手電筒垂直地照在了我們的皮膚上,看到光線到表面中心點周圍的一個光暈,從右邊這張圖看到RGB擴散的范圍是不一樣的。這個紅色的光比綠色的光、藍色的光散射得更遠,所以耳朵和鼻子部位通常是紅彤彤的。美術上,感官上我們看到的一些效果往往在做渲染的背后是一大堆的理論,我們只有更好地理解這些現象背后的原理才能做出最佳的實際的效果。
?
發展到這個時候的次表面散射還只是一個離線渲染的階段,只能用于影視當中。
2009年之后這個3S逐漸進入了我們實時渲染的階段。首先是屏幕空間的模糊算法,性價比比紋理空間提高很多。這個模糊的過程就是根據我們前面說的Diffusion Profile對周圍的像素進行加權求和,來模擬次表面散射的過程。
之后是2005年出來了一個可分離次表面散射,我們稱之為4S,它完全是從優化的角度出發,并不是純粹的數學推導,它是使用兩個可分一維卷積來近似,效率得到了極大的提升。
下面的鏈接就是可分離次表面散射的一個paper,有興趣的同學可以仔細研究。
?
上面這些技術是目前PC和主機3A游戲中主流的次表面散射的技術。我們Unity的《異教徒》的角色并沒有直接使用,而是在可分離次表面散射的基礎上進行了改良和一些提升。
我們主要是針對可分離次表面散射上的問題進行了改良和提升。問題很多。我們今天講一些主要的改進。
第一個是擬合結果不正確。這個單一的高斯函數在近似多層散射方面做得很好。然而,即使是兩種高斯的混合也很難準確地表示單次散射和多層散射的組合。
在圖像中我們可以看到這個結果是白色的,而雙高斯近似是紅色的,它其實擬合的結果并不是很好。
?
另一個問題就是對美術不友好。高斯分布是一個數學概念,在3S中沒有物理意義,當你使用兩個lerp參數的時候它是7個自由度的組合,如果不太清楚如何設置它們,很難得到一個有意義的組合。一個資深的美術仍然是可以使用這個高斯組合的模型取得很好的效果的。可是,這是一個漫長的過程,并不適合我們商業引擎Unity。
?
這也是現在我在支持我們很多項目中經常遇到的一個問題,現在很多項目的效果做得不好并不是說渲染技術的問題,而是美術不知道該怎么調。因為很多項目的渲染比如說Shader和工具大部分都是由圖形程序或者是偏技術的TA編寫的,很多參數曝露出來給美術,美術根本看不懂。像上面這種參數連規范都沒法寫,你要寫明白,就要給美術把前面所有的數學公式講明白才行,等美術理解掌握了,你按照國內一個項目的周期,可能項目就做完了。
我們看看我們Unity《異教徒》的這個皮膚3S的改良。Unity實現了Burley的一個規范化的擴散模型。我們稱之為迪斯尼3S,它為蒙特卡羅模擬得到的一個參考數據提供了一個精確的擬合。這意味著同時要考慮單次和多次的散射。它只有兩個參數,體積反照率A和形狀參數S,它們都可以解釋為顏色,這個形狀參數與散射距離成反比,這就是我們在UI中曝露出來的參數。
?
左邊是我們HDRP中Diffusion Profile的參數,大家可以發現更簡單,更符合美術的理解。同時,我們還做了一個優化,Diffusion Profile這個擴散剖面被歸一化了,并且可以直接做概率密度函數,這也是蒙特卡羅積分中一個很重要的性質。
實現方面,《異教徒》的3S效果也做了很多的優化,為了加強視覺統一性,我們使用Surface albedo作為volume albedo,我們提供兩個albedo貼圖的選項。第一個是post scatter模式。當這個albedo紋理和一些由于3S導致的顏色溢出,比如你這個albedo貼圖是照片掃描或者是采集來的,這種模式下我們就只在出口位置做一次反照率。還有一種是pre-and post scatter模式,這種模式會有效地模糊albedo貼圖,這個可能會導致更柔和、更自然的外觀。比如你的紋理是在DCC工具中制作的,或者是手工制作,你可以使用這種模式。
我們來看一下效果的對比。這是沒有3S效果,這是我們第一種post scatter的模式。這是第二種模式,就是pre-and post scatter。對比一下看一眼,這是第一種,更清晰一些。第二種就是會模糊一些。這是兩種模式的對比。
?
另外,我們這個3S還負責背光物體半透明的外觀,但是出于效率的原因,我們以一種更簡單的方式來處理這兩種效果。我們采用了兩種方法,第一種是只適用于薄的物體,通常我們說的葉子。第二種是用來處理通用的半透明物體。兩者之間主要的區別,賣QQ號對于相對薄的物體,由于幾何體本身是薄的,所以它的正面和背面的陰影是相同的。所以我們在DCC工具中 烘焙一張厚度圖來獲取,對于厚的物體重用正面的陰影狀態顯然是不行的,所以我們使用的是shadowmap和距離參數結合的方式來獲取厚度。
這個優化我們同樣為很多移動客戶進行了定制,后面我們有案例。
我們看一下兩種效果的對比。第一張圖是薄的物體,可以看到它模擬樹葉透光的效果。后面就是這個耳朵。我們可以看到這個厚和薄之間的區別,兩個參數之間的。
再來看一下純效率方面的優化。G-Buffer Pass,根據材質類型去標記它的stencil,這樣可以減少不必要的3S pass像素的繪制,我們還標記次表面照明緩沖區,以避免在3S pass期間執行逐像素模板測試,還實現了一個基本的LOD的系統。對采樣分布進行隨機逐像素的旋轉。
?
最后我們再來看看整個的效率表現。在PS4上,我們限制在每個像素21個采樣,使用CS進行卷積合并diffuse和specular lighting buffers,GPU整個耗時在1.16毫秒左右。由于今天時間有限,所以我就先講這么多,關于皮膚這塊。有興趣的同學可以后面再交流。
?
講了這么多,我們如何使用我們這個皮膚材質的?很簡單,現在的主機項目只要使用我們這個ShaderGraph就足夠了。在最新的HDRP的渲染管線的ShaderGraph中我們已經加入了Stack Lit Master節點,這個節點可以說完全基于我們Unity《異教徒》demo開發的。《異教徒》開發完成之后對ShaderGraph進行了一次重要的升級。
我們來看一下這個Stack Lit這個Master節點。主要就是在這個節點上勾選surface scatering這個選項,我們就可以看到皮膚的3S相關的設置就可以出現了,包括我們前面說的Diffusion Profile的設置。可以很好地勝任我們皮膚渲染的工作。感興趣的同學可以自己去嘗試一下。而且我們現在整個《異教徒》角色的案例官方也在資源商店中免費給大家開放學習和使用了。
我們看一下最終的效果。這是《異教徒》中的角色皮膚渲染效果。這是《Wind-Up》中小女孩的皮膚渲染效果,我們可以看一下這個小女孩耳朵3S投射的效果。這是一個樹葉的效果。它右邊的Diffusion Profile針對每一個角色或者是物體都是不一樣的。
?
我們再看一下眼睛的做法。我們說的眼睛是心靈的窗口,同我們畫人頭像一樣,眼睛是要重要刻劃的,做渲染也是同樣重要的。《異教徒》主角的顏色使用了非常多的技術。
最主要的是基于物理的折射,但是它與復雜度成正比的。這個物理折射雖然給我們帶來了效果好一些,但是它也更費一些渲染。這個代碼我就貼在這兒了,我們可以看一下。主要看最后一行,它有一個mask的部分,在虹膜坐標上進行了一定量的偏移,目的就是在虹膜、鞏膜過渡的位置添加異色邊緣的渲染效果。而且整個texcoard坐標位置是為了后面采樣這個虹膜部分的貼圖做準備的,我們繼續往后看。
?
通過剛才的公式可以看到為了實現這個物理折射的計算,我們需要在眼球模型的物體空間進行一些對應的計算。所以說我們要對這個眼球模型本身的制作提出要求。這就是主角眼球。我們可以看它主要需要規范坐標系。也就是說眼球的中心作為模型的原點,讓眼球縱向朝向Z軸,其次是我們需要做出這個眼球前方區的一個結構,這是為了得到更好的物理折射,同時也可以用來區分瞳孔的位置。
我們通過一個圖來說一下這個shader的計算。為了更好地獲得這個物理折射所需要的各個參數,在眼球渲染的shader中需要通過在物體空間的Z軸取一個坐標,來動態地劃分這個虹膜和鞏膜的shader區域。大家可以理解為在物體的Z軸投射了一個平面,像我們示意圖展示的,以此劃分好區域,并分別處理好兩個位置的渲染,這樣的坐標劃分一舉多得的。
?
在劃分虹膜和鞏膜的同時也方便我們實現異色邊緣的效果。這樣的做法大家覺得很復雜,但是因為各個區域的采樣坐標是在物體空間內動態計算的,所以我們可以將同一套眼球的貼圖配置給不同的眼球模型,也可以進行勾畫不同眼球的貼圖。
通過這個眼球的案例,我相信大家可以發現其實一些渲染效果的背后往往都伴隨著特殊制作的流程和規范,不只是寫個shader那么簡單。
這也是現在很多效果,大家用的相同的渲染技術,但是做出來的效果千差萬別。
為了實現這個角色的眼睛很好的效果,我們使用了一種Cone Mapping的技術,眼球周圍分布四個虛擬點,根據這四個虛擬點計算,將這個虛擬點融入到我們蒙皮中,這樣可以很好地使AO匹配我們角色眼睛的動畫。
?
我們來看個視頻。我們這個眼睛制作完之后,由于上面說的流程,這個眼睛是可以做到一些程序化的效果,比如我們可以動態地改變異色邊緣的大小,可以改變它的折射效果,包括還可以給瞳孔換顏色,都是可以的。
?
講了這么多,大家可能覺得你做這么個眼睛有沒有必要?我們看一下這個對比。這是我們看到的做了渲染之后的眼睛的效果。這是沒有的效果。這個就是我們平時做項目眼睛渲染的效果。如果你不做任何的處理,它就是個死魚眼,不對比,你看這個效果時間長了還覺得它挺好,很多人覺得夠用了。但是,你一對比,這個效果可能接受不了。所以說做效果一定要找到一個對比。我們可以看這兩個效果的對比。
?
同樣的我們這個眼睛在最新的HDRP的ShaderGraph中也可以找到Eye Master這個節點來使用。
我們看一下這個皮膚渲染在手機上一般怎么做提升的。在移動端我們為客戶定制的方案就是用手機上的預積分的皮膚折射技術,這個方法最早出現在2010年,之后因為PC和主機硬件快速發展就淡出了人們的視野。但是,現在卻成為了手游皮膚渲染的主流方案。
?
上面這個鏈接是2001年siggraph上的一篇專門講游戲分皮膚折射的技術,我們可以看一下。左邊是貼圖空間的diffusion,我們剛剛說的Diffusion Profile的方式渲染的效果。右邊是預積分皮膚折射的結果,肉眼上很難看出來這個區別。
這個預積分皮膚折射是一個從結果反推實現的方案,具體思路是把次表面反射的效果預計算成一張二維的紋理查找表,這個查找表的參數分別是NdotL和曲率,能反映出光照隨著曲率的變化。
看一下左邊這張積分貼圖。它的X坐標采樣是我們NdotL后的數值。重點說一下Y坐標。這個Y坐標代表的是曲率。通常曲率和NdotL索引上圖中的預積分的LUT貼圖就可以了。
中間這張圖是可以用工具bake生成的。NPR的渲染中也可以讓美術直接畫,還可以在模型上做完效果再用工具去反推這張圖。
?
最右邊是如何使用兩個導數同時繪制曲率的圖式。最終結果是R越小,這個法線變化越大,意思就是曲率越大。也就是說我們下面看到的R值越小,皮膚表面更容易產生次表面散射,而類似耳朵邊緣、鼻翼的位置,這種方法非常適合在移動游戲上使用,效率高,效果也不差。很多主機游戲也是使用這個方案的。比如《最終幻想15》中的人物皮膚渲染就是大量地用到了這個預積分的皮膚渲染。還有前一陣子非常火的主機游戲《對馬島》也是用了這種方法。
我們看一下,我們還是做了一些優化的,比如我們是在URP管線上實現了這套皮膚渲染的。在URP管線里面加入了PBR的工作流程,使用了cone map去替代(不清楚)的計算,我們也支持透明物體的厚和薄的物體,我們還使用了Mask Map去區分這個皮膚和普通材質。
我們看一下在手機上這個效果的對比。這是沒有的效果。這是加入了我們說預積分3S的效果。可以看到這個效果還是比較明顯的。特別是背面這塊。
?
然后我們來看一下眼睛的渲染在移動端是怎么實現的。主要是通過移動端的優化算法來模擬的。我們使用了Parallax Refraction的方法來模擬refraction的效果。可以看到整個算法比我們《異教徒》眼睛物理折射的算法簡單很多,主要原因它就是沒有refraction這個函數了。這樣就說明了它不是一個基于物理的方法,其實是一個影視差貼圖模擬的方法。
右邊是兩種算法的對比。我們可以看到Parallax Refraction的方法也能近似地達到虹膜折射的效果。這也是目前在手機上模擬眼球最常見的方法。如果一些高端機的局外選人的界面當然也可以用基于物理的算法。
?
左邊是URP管線上我們做了一個移動端的眼球的展示。可以看到這個眼球的面數少了很多,眼睛也變成了一個半球,Parallax這個參數的height這個值從0到3的變化。它這個值越大,扭曲的效果就越大,模擬折射的效果。
這是我們在移動端給角色加入了眼睛畫色之后的效果。
?
我們再看一下頭發。頭發現在也是做很多游戲或者虛擬計算里面用的。現在有很多頭發的解決方案,有使用動態骨骼的,我見過很多主機游戲也在用NV的hairworks。我們Unity是將AMD的 TressFX,海飛絲這個頭發的效果移植到了我們引擎中,目前支持URP和HDRP的管線。
我們看一下目前測試的效果。其實效果還是可以的,跟TressFX官方演示的效果差不多。
?
我們看一下它的效率。剛才看的那個demo在URP管線上,高通865的芯片,1萬根發絲能跑60幀,效率還是非常高的。
再看一下皮毛的渲染。我們一般給客戶使用Shell的方式,在URP管線移動端為客戶也實現過絨毛的效果。這里需要注意的是這個URP管線的shader的實現是無法直接在shader上寫多pass的,因為在URP管線上你是需要在render feature中繪制每一步的Shell并且可以很容易地加入LOD,可以根據距離的遠近來刪減這個Shell的部分。
我們還加入了一個毛發梳理的流程。這是在Mari中為貓梳毛,會生成一張flow map,這樣的話你給美術制作更直觀,而且它上面還有毛的走線都是能看到的。
?
我們來看一下,左邊是沒有梳毛的效果,中間是梳過了,中間這個毛發生長是跟我們在Mari中梳理的方向是一致的。最右邊的是沒有fur的效果,這應該也是現在主流的做法,在Zbrush中刷個紋理,再插個片。
?
你們可以看一下左邊這個是沒梳的,好像這個毛不順,有點濕了炸毛的感覺,中間的更順滑一些。包括你可以刷它很多的信息,包括它的粗細、疏密,都可以。
場景方面,今天我們來看一個現在非常火的效果,就是這個體積云。我們在手機上最近這段時間很多客戶都定制了這種體積云。這個體積云的效果真的是特別火,很多手游項目都在用了。在主機和影視渲染中體積云的效果已經非常成熟了,2015年Schneider在ZGrapher上的演講。到2017年這個《地平線》,再到2019年的《荒野大鏢客》,這個天空體積云的渲染給大家都帶來了非常震撼的效果。主機或者影視上實時渲染的體積云主要的技術重點就是屏幕空間的ray marching,程序化控制這個云的形狀和光照三大部分。
?
我們看一下在移動端為客戶定制這個體積云效果的優化。我們知道體積云最費的就是ray marching,主要就是它這個Density marching和Shadow marching,主要的影響因素是分辨率。我們看一下是怎么優化的。我們主要針對以下四點進行優化的。
首先我們來看一下Scale方面的優化。《地平線》做法是marching四分之一的分辨率,它是Jitter sample4×4的一個quard,16幀構建一個云的畫面。《地平線》的做法的優點,假如這個鏡頭移動很慢,它會有足夠的細節,問題就是當它這個幀率過低或者是鏡頭的移動速度過慢的時候會出現鬼影,這種做法顯然不太適合我們手機游戲。
我們可以看一下這是《地平線》16幀構建一個云的事例。而我們的做法是使用2×2一半的quard去進行Jitter sample,用4幀去構建一個分辨率的云的畫面。優點就是它的構建速度很快。缺點就是它這個高頻細節不夠,可能會出現block的現象,一塊一塊的馬賽克。但是有它是手游,一般屏幕像素比較密集,所以很好地規避掉了這個問題。這也是我們現在為什么會采用這種優化方案的原因。就是在你手機上這個問題它不明顯。
?
還有一個,在手機上我們也使用了blue noise,很多現在的優化都在用,來擾動采樣案時間的起始位置,同樣也使用Tenporal來疊加每一幀采用的結果。就類似于TAA的一種方式。
?
并且我們為不同的平臺設置了云的IOD,這也可以適配高中低端的手機設備。我們看一下右邊。右邊是不同配置下的渲染的結果,可以看一下它是從上到下,分別是從高到低,我們能明顯地看出來它這個block的現象越來越重。
左邊是我們目前高中低端手機的配置,可以看一下Marching Step采樣的部署和Shadow Simple的count是個陰影采樣的部署,我們會針對不同的機型做定制化的優化。
?
然后我們看一下《地平線》它使用了大型三維噪聲和二維噪聲建模云的細節。它會有一個豐富的外觀。它每一個marching和Shadow Simple都需要大量的texture fetches,這就帶來了一個什么問題,在移動端這個帶寬受不了,包括散熱這些是不行的,所以說我們預先過濾我們這個perlin和worley的噪聲,不同頻率的噪聲我們把它合并到一個單一的3D紋理里面,并只在運行時獲取這個紋理。
?
左邊上面《地平線》運用到了3D紋理,這都是3D紋理,不是2D紋理,可以看到這個數量還是非常恐怖的。
下面是我們最終用到的只有一張3D紋理和一張2D紋理。
再來看一下光照方面。我們只使用了三次Shadow Simple來降低這個質量,也是為了提升效率。我們只對基礎的云的形狀進行應用貼圖的marching,忽略細節紋理,主要是為了接受這個帶寬。
此外,我們還加入了體積光大件散射包括對云的影響,包括晝夜變換,天氣變換,也會產生不同的聚散的變換。可以看一下最終的效果。
?
這是我們整個云,可以看到我們加入了晝夜變換,包括你看這個云還可以接受到大氣散射的效果。云有一種黃昏、火燒云的效果。其實這個云本身是慢慢地在聚合的,只是我們現在看不到這個效果。
包括我們這個云還會有遮擋,它不會跟天窗盒里面的云一樣。我們可以看左邊這個星球,它是遮擋在這個云后面的,這個星球我們應是用一個feature畫上去的,畫到天空上的,也不需要你美術去做模型,它是被云遮擋住的,比如有山聳入這個云中它可以產生體積云遮擋的效果。
可以看到這個晝夜變換,而且這個云對于陽光遮擋的效果也非常好。我們可以快進地看一下這個云聚合的效果。
這是大氣散射對這個云的影響。
我們看一下它的效率。我們是在iPhoneX上測試的,分辨率是1125×2436,標準的分辨率,整個的云我們marching step的數量是64步,shadow sample采樣數是6,整個GPU耗時6.54毫秒,就是說這個消耗還是比較大的。但是由于現在很多的高端手機,尤其是iPhone12也出來了,這個東西在場景優化比較好的情況下也是可以用的,是完全沒問題的。
可能今天講得有點快,但是內容就講完了。
總結
以上是生活随笔為你收集整理的Unity TA总监王靖:Unity如何实现美术画质升级?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做过《战神》《死亡搁浅》的光子动捕专家,
- 下一篇: Pawel wojs:《全面战争:三国》