如何實現最佳的跨平臺遊戲體驗?Unity成亮解密實時渲染

7月31日,2018雲創大會遊戲論壇在杭州國際博覽中心103B圓滿舉行。本場遊戲論壇聚焦探討了可能對遊戲行業發展有重大推進的新技術、新實踐,如AR、區塊鏈、安全、大數據等。編程

 

 

 

 

Unity大中華區技術經理成亮表示,實時渲染技術的跨平臺性能讓遊戲體驗變得更好緩存

 

 

 

Unity大中華區技術經理成亮作了《解祕Unity2018最新實時渲染技術》的主題演講,分享了2018年Unity在實時渲染方面實現的三個重要技術,包括圖形相關的可編程渲染管線、基於渲染管線推出的Shader Graph、PostProcess工具以及ECS、Burstcom等性能相關技術。安全

 

 

 

成亮表示,Unity具備完整的生態環境,一直致力於解決圖形、網絡以及AR問題,讓愈來愈多的開發者作出炫酷的遊戲或者動畫。目前,Unity已經開發了大量耳熟能詳的遊戲,還爲電影行業、工業、醫療、汽車等領域提供了遠程數據分析、數據追蹤、遠程調試、貨幣化等能力。而這其中,一個關鍵的技術應用就是今年推出的實時渲染相關技術。網絡

 

 

 

Unity實時渲染技術具備強大的跨平臺能力,主要包括圖形相關的可編程渲染管線、基於渲染管線推出的工具、以及ECS、Burstcom等性能相關的技術。架構

 

 

 

成亮介紹到,隨着遊戲種類愈來愈多,傳統的渲染管線已經愈來愈難以知足遊戲功能的需求。而Unity推出的可編程的渲染管線,不只可讓用戶自定義渲染流程,並且具備很是好的擴展性,在保留了經典C++內核的前提下提供了更多的接口。可編程渲染管線提供了兩套開源的模板,用戶能夠根據需求來實現定製化的功能:app

 

 

 

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最新的關於實時渲染的技術進展,但願可以幫助到開發者可以實現更炫酷的效果,謝謝你們。

 

網易雲安全(易盾)基於網易20年技術積累及安全大數據,爲互聯網各行業提供反垃圾、驗證碼、註冊保護、登陸保護、活動反做弊、應用加固、DDoS 防禦等總體安全解決方案,全程提供完善的技術支持,助力產品創建安全防禦體系。

 

原文:如何實現最佳的跨平臺遊戲體驗?Unity成亮解密實時渲染技術!

相關文章
相關標籤/搜索