標籤:dash 編譯器 基本 效果 編輯 時區 精確 論壇 defer
7月31日,2018雲創大會遊戲論壇在杭州國際博覽中心103B圓滿舉行。本場遊戲論壇聚焦探討了可能對遊戲行業發展有重大推動的新技術、新實踐,如AR、區塊鏈、安全、大資料等。
Unity大中華區技術經理成亮表示,即時渲染技術的跨平台效能讓遊戲體驗變得更好
Unity大中華區技術經理成亮做了《解秘Unity2018最新即時渲染技術》的主題演講,分享了2018年Unity在即時渲染方面實現的三個重要技術,包括圖形相關的可程式化渲染管線、基於渲染管線推出的Shader Graph、PostProcess工具以及ECS、Burstcom等效能相關技術。
成亮表示,Unity具有完整的生態環境,一直致力於解決圖形、網路以及AR問題,讓越來越多的開發人員做出炫酷的遊戲或者動畫。目前,Unity已經開發了大量耳熟能詳的遊戲,還為電影行業、工業、醫學、汽車等領域提供了遠端資料分析、資料追蹤、遠端偵錯、貨幣化等能力。而這其中,一個關鍵的技術應用就是今年推出的即時渲染相關技術。
Unity即時渲染技術具有強大的跨平台能力,主要包括圖形相關的可程式化渲染管線、基於渲染管線推出的工具、以及ECS、Burstcom等效能相關的技術。
成亮介紹到,隨著遊戲種類越來越多,傳統的渲染管線已經越來越難以滿足遊戲功能的需求。而Unity推出的可程式化的渲染管線,不僅可以讓使用者自訂渲染流程,而且具有非常好的擴充性,在保留了經典C++核心的前提下提供了更多的介面。可程式化渲染管線提供了兩套開源的模板,使用者可以根據需求來實現定製化的功能:
HD(High-Definition)主要針對高端的PC平台,這一類管線提供了更加精確的模型和進階材質,在定製渲染管線時對使用者更為透明,對於燈光的配置也有所增強,能夠協助使用者實現非常華麗的渲染效果;
? Lightweight主要針對移動模組和XR平台,讓使用者在兼顧效能的同時可以適配到更多的裝置。它採用的Single-Pass Forward Rendering可以支援8盞像素光在一個批次內進行渲染,而且提供了非常便利的材質升級工具。
隨後,成亮還詳細闡述了Unity基於渲染管線所推出的Shader Graph、Progressive Lightmapper和Post-processing v2三個工具:
? Shader Graph是一種節點圖方式,能協助使用者無需編程即可創作,極大降低了編程門檻;
? 後處理站提供了豐富的效果功能,支援設定不同的地區和靈活可拓展的架構,此外也相容最新的可渲染管線;
? 漸進烘焙可以方便使用者即時看到烘焙的過程,給使用者的工作流程帶來了非常大的便利和效率提升。今年還會推出基於GPU的漸進光照功能,效率將提升10倍以上。
在效能方面,成亮最後提到,Unity推出的一套新系統,可以協助使用者實現效能上的巨大飛躍。這一系統包括三部分:Job System,協助使用者利用GPU多核處理能力;ECS,讓資料的記憶體排列更為緊密,提高緩衝的命中率;Burst Compiler,技術最佳化的編譯器。
以下是成亮演講實錄:
大家好!我是來自Unity的成亮。今天非常高興有這個機會來到杭州,跟大家分享Unity在2018最新的即時渲染技術。
今天主要分享的內容有四點,首先我會對Unity做一個基本介紹,後面則會介紹今年Unity在即時渲染方面比較重要的三個技術:一是圖形相關的可程式化渲染管線;二是基於渲染管線推出的工具,包括Shader Graph、PostProcess;三是ECS、Burstcom等效能相關的技術。
首先介紹一下Unity。2014年Unity在丹麥哥本哈根成立,它有三個創始人,他們分別提出了三個公司理念:開發民主化、解決困難問題以及協助開發人員成功。民主化這個概念很好理解,就是降低技術的門檻,讓越來越多的開發人員能夠做出很炫酷的遊戲或者動畫。相對應來說,就要求Unity公司解決比較困難的圖形、網路以及AR問題。
Unity具有完整的生態,它有很強的即時渲染引擎,具備強大的跨平台能力,除此之外還提供了遠端資料分析、資料追蹤、遠端偵錯、貨幣化等能力。截止到2017年統計資料,有200億應用軟體安裝量,有30億行動裝置是用Unity軟體安裝的。在排名前1000名的遊戲中有40%是用的Unity,新的製作遊戲超過了50%,還有60%的VR和AR應用是用Unity來開發的。Unity開發了很多耳熟能詳的遊戲,以及在電影行業、工業、醫學、汽車等等領域,也有不少廠商用到Unity來做即時渲染的工具。
下面開始介紹即時渲染相關的技術。首先看一形方面,今年我們最重點推出的技術是可程式化渲染管線,相比之前的管線,可程式化渲染管線提供了更多渲染的介面給到開發人員,你可以按照自己的需求定義你的開發。當然我們為大家準備好了兩個模板:HD(High-Definition)主要針對高端的PC,這個管線提供了更加精確的模型,提供了非常進階的材質,協助大家能夠實現非常華麗的渲染效果;Lightweight主要針對於移動模組,讓大家在兼顧效能的同時適配到更多的裝置。
這是目前的渲染管線,它可以定製的功能很少,你可以選擇Forward或者Deferred:Forward中物體接受的光照數量決定其渲染批次,當光照數量很多時就會遇到新的問題;Deferred中是在最後應用一次光照,但是Deferred有對硬體的要求,所以在某些移動平台是不支援的。 除此之外,還可以編寫一些Command Buffer,也就是在渲染管線的時間點,比如中綠點的地方,你可以插入自己的渲染。
隨著遊戲種類越來越多,傳統的渲染管線越來越難以滿足遊戲的需求。比如我們看到有非常3D的、光照非常多的遊戲,也有2D的捲軸遊戲,這些遊戲用一條管線很難兼顧到這樣的效能;又比如一個2D的遊戲或者一個FPS遊戲渲染的時候有很多權衡的點,2D根本不需要光照,材質也不用是基於物理的材質......等等。
所以Unity在今年推出了可程式化的渲染管線,它可以讓使用者自訂渲染流程,比如你的剪裁或者繪製物體,這些流程都可以按照自己需要進行控制。新的渲染管線有非常好的擴充性,針對原來的渲染管線進行了有效提升,保留了經典的C++核心,提供了更多的介面,協助大家儘可能化地定製自己的功能。除此之外還提供了兩套模板,大家可以根據需要去定製功能,而且這兩套功能都是開源的,所以也是給了大家一個非常好的參考。
首先看一下Lightweight,它主要針對移動和XR平台,提供了非常方便的材質升級工具,而且對於一些不需要光照的材質完全相容,所以升級到這套管線非常方便。它的渲染也和原來有所不同,採用了Single-Pass Forward Rendering,可以支援8盞像素光在一個批次進行渲染。我們之前做了一個Trash Dash執行個體,它是一個3D遊戲,但實際上沒有利用到光照,所以它利用我們的材質升級工具,就非常容易從原來的管線升級到了現在的管線。
下面看一下High,High功能很多,在這裡就給大家做一個詳細的拆解和介紹。它分成六大塊功能,首先它的渲染管線有一個比較大的改變,渲染管線相對之前採用了新的模型,物理計算會更精確。它在定製渲染管線時對使用者更為透明,使用者只要關注設定的屬性就可以了,而不用關注選擇什麼樣的管線。它主要針對高端的PC平台,對於燈光的配置有增強,光照和陰影方面可以採用色溫來控制光照的顏色。光線形狀也有很多選擇,還增加了新的地區光。材質比較多,提供了非常多的進階材質,供大家選擇。還有基於分層的材質系統,有變形的特效。調試方面,提供了新的可以觀察調試的視窗。
新的管線不用再去選擇配置,使用者根據自己的需求來設定渲染管線就可以了。一是增強了光照配置,能根據色溫來控制顏色,支援更多的形狀,包括錐形、方形或者金字塔形狀,支援光線顏色的效果;二是新增了地區光類型,支援即時地區光,而且地區光形狀包括了橘型、圓形等形狀;三是提供了新的光照模型GGX,在傳統模式下是單顯色模型,粗糙表現顏色不會飽和,而且會帶有發暗的現象;此外還新增了非常多的材質,包括彩虹色加透明漆材質的效果、雙面透明的效果、分層的模型、體積光和光速效果、No Occlusion Probe效果等等。
除此之外,新的管線還新增了調試視窗,在這個視窗中可以看到豐富的資訊,包括材質、光照等等。如下所示,這個圖可以看到正在渲染的物體表面的發線,它不光可以在編輯器上面使用,還可以即時連到PC端上進行查看。
在調試視窗支援只顯示某一種光照,比如只顯示慢反射。還支援中間的渲染目標,比如Depht Buffer顯示,左邊只顯示了Diffuse Lightin。
以上給我們展示的是Unity可程式化渲染管線所能夠呈現出的即時渲染的效果。下面我們看一下方便大家創作的工具,Shader Graph、Progressive Lightmapper和Post-processing v2。
Shader Graph是一種節點圖的方式,來協助大家無需再用編程的方式進行創作。它帶來的好處是不用編碼,可能減少了一些文法或者調試的痛苦,降低了大家編程的門檻。
後處理站有非常多可以選擇的效果,可以設定不同的地區,還支援靈活可拓展的架構,因為這也是一個開源的功能,所以大家可以根據需要去看,一方面提供了自訂的API,大家可以自訂,另外也可以看到整個代碼。另外也相容最新的可渲染管線。
再看一下漸進光照烘焙,即時渲染情境有很多燈光是先靜態烘焙上取得,尤其是像間接光照,都是烘焙上去的,因為如果即時計算肯定來不及,所以通常在做項目的時候有光照烘焙的功能。而漸進烘焙可以即時看到烘焙的過程,而且可以優先看到視圖視窗顯示的效果,這樣給大家工作流程就帶來了非常大的便利和提升。除此之外,今年應該還會推出基於GPU的漸進光照功能,這樣光照烘焙效率就會提升10倍以上。
今年在效能上面Unity推出了一套新的系統,可以協助大家在效能上面有質的飛躍。最新的系統包括三個部分:一是Job System,協助你利用GPU多核處理能力;二是ECS,能夠讓我們資料的記憶體排列更緊密,提高緩衝的命中率;三是Burst Compiler,是技術最佳化的編譯器。
如上所示,這是現在的系統。其中會引用到各種各樣的組件,它就是一個引用列表。這樣一來,這些參考型別沒有辦法控制它在記憶體中的排布,所以它是分散在記憶體中的,這樣資料分散的結果是導致快取命中率比較低。還有一個問題,如果單核的情況,一旦任務比較多,它處理的速度就會越來越慢。
Entity Component System中,我們把資料和函數分開,Render包含了資料,通過對資料進行分類處理,再派發給不同的任務進行處理。如下所示,這就是一個結合的架構圖。
來看一個實際的例子,來看它具體提升了多少效能。如顯示,傳統方式下飛船包含了Movemen組件,在這種情況下,同屏渲染了18500個飛船。但是再加入變形,在飛船裡面就沒有了任何的應用。所有的任務都是通過函數來執行的,所以把它Job system變形化之後,效能大概可以提升到25000個,提升了三分之一的效能。
再看ECS With Job system,資料緊密化加上並行化之後,在ESC With Job system情況下,我們從最開始的18000個變成了96000個,效能提高了5倍。再加上Burst Compiler,數量達到了156000個,比最開始的做法效能提升了接近10倍。
以上就是Unity最新的關於即時渲染的技術進展,希望能夠協助到開發人員能夠實現更炫酷的效果,謝謝大家。
點擊免費試用網易雲易盾安全服務請添加連結描述
如何?最佳的跨平台遊戲體驗?Unity成亮解密即時渲染技術!