7月31日,2018云創(chuàng)大會游戲論壇在杭州國際博覽中心103B圓滿舉行。本場游戲論壇聚焦探討了可能對游戲行業(yè)發(fā)展有重大推動的新技術(shù)、新實踐,如AR、區(qū)塊鏈、安全、大數(shù)據(jù)等。
Unity大中華區(qū)技術(shù)經(jīng)理成亮表示,實時渲染技術(shù)的跨平臺性能讓游戲體驗變得更好Unity大中華區(qū)技術(shù)經(jīng)理成亮做了《解秘Unity2018最新實時渲染技術(shù)》的主題演講,分享了2018年Unity在實時渲染方面實現(xiàn)的三個重要技術(shù),包括圖形相關(guān)的可編程渲染管線、基于渲染管線推出的Shader Graph、PostProcess工具以及ECS、Burst等性能相關(guān)技術(shù)。
成亮表示,Unity具有完整的生態(tài)環(huán)境,一直致力于解決圖形、網(wǎng)絡(luò)以及AR問題,讓越來越多的開發(fā)者做出炫酷的游戲或者動畫。目前,Unity已經(jīng)開發(fā)了大量耳熟能詳?shù)挠螒?,還為電影行業(yè)、工業(yè)、醫(yī)療、汽車等領(lǐng)域提供了遠程數(shù)據(jù)分析、數(shù)據(jù)追蹤、遠程調(diào)試、貨幣化等能力。而這其中,一個關(guān)鍵的技術(shù)應(yīng)用就是今年推出的實時渲染相關(guān)技術(shù)。
Unity實時渲染技術(shù)具有強大的跨平臺能力,主要包括圖形相關(guān)的可編程渲染管線、基于渲染管線推出的工具、以及ECS、Burst等性能相關(guān)的技術(shù)。
成亮介紹到,隨著游戲種類越來越多,傳統(tǒng)的渲染管線已經(jīng)越來越難以滿足游戲功能的需求。而Unity推出的可編程的渲染管線,不僅可以讓用戶自定義渲染流程,而且具有非常好的擴展性,在保留了經(jīng)典C++內(nèi)核的前提下提供了更多的接口??删幊啼秩竟芫€提供了兩套開源的模板,用戶可以根據(jù)需求來實現(xiàn)定制化的功能:
HD(High-Definition)主要針對高端的PC平臺,這一類管線提供了更加精確的模型和高級材質(zhì),在定制渲染管線時對用戶更為透明,對于燈光的配置也有所增強,能夠幫助用戶實現(xiàn)非常華麗的渲染效果;
? Lightweight主要針對移動模塊和XR平臺,讓用戶在兼顧性能的同時可以適配到更多的設(shè)備。它采用的Single-Pass Forward Rendering可以支持8盞像素光在一個批次內(nèi)進行渲染,而且提供了非常便利的材質(zhì)升級工具。
? Shader Graph是一種節(jié)點圖方式,能幫助用戶無需編程即可創(chuàng)作,極大降低了編程門檻;
? 后處理站提供了豐富的效果功能,支持設(shè)置不同的區(qū)域和靈活可拓展的框架,此外也兼容最新的可渲染管線;
? 漸進烘焙可以方便用戶實時看到烘焙的過程,給用戶的工作流帶來了非常大的便利和效率提升。今年還會推出基于GPU的漸進光照功能,效率將提升10倍以上。
在性能方面,成亮最后提到,Unity推出的一套新系統(tǒng),可以幫助用戶實現(xiàn)性能上的巨大飛躍。這一系統(tǒng)包括三部分:Job System,幫助用戶利用GPU多核處理能力;ECS,讓數(shù)據(jù)的內(nèi)存排列更為緊密,提高緩存的命中率;Burst Compiler,技術(shù)優(yōu)化的編譯器。
以下是成亮演講實錄:大家好!我是來自Unity的成亮。今天非常高興有這個機會來到杭州,跟大家分享Unity在2018最新的實時渲染技術(shù)。
今天主要分享的內(nèi)容有四點,首先我會對Unity做一個基本介紹,后面則會介紹今年Unity在實時渲染方面比較重要的三個技術(shù):一是圖形相關(guān)的可編程渲染管線;二是基于渲染管線推出的工具,包括Shader Graph、PostProcess;三是ECS、Burst等性能相關(guān)的技術(shù)。
首先介紹一下Unity。2014年Unity在丹麥哥本哈根成立,它有三個創(chuàng)始人,他們分別提出了三個公司理念:開發(fā)民主化、解決困難問題以及幫助開發(fā)者成功。民主化這個概念很好理解,就是降低技術(shù)的門檻,讓越來越多的開發(fā)者能夠做出很炫酷的游戲或者動畫。相對應(yīng)來說,就要求Unity公司解決比較困難的圖形、網(wǎng)絡(luò)以及AR問題。
Unity具有完整的生態(tài),它有很強的實時渲染引擎,具備強大的跨平臺能力,除此之外還提供了遠程數(shù)據(jù)分析、數(shù)據(jù)追蹤、遠程調(diào)試、貨幣化等能力。截止到2017年統(tǒng)計數(shù)據(jù),有200億應(yīng)用軟件安裝量,有30億移動設(shè)備是用Unity軟件安裝的。在排名前1000名的游戲中有40%是用的Unity,九游娛樂平臺新的制作游戲超過了50%,還有60%的VR和AR應(yīng)用是用Unity來開發(fā)的。Unity開發(fā)了很多耳熟能詳?shù)挠螒?,以及在電影行業(yè)、工業(yè)、醫(yī)療、汽車等等領(lǐng)域,也有不少廠商用到Unity來做實時渲染的工具。
下面開始介紹實時渲染相關(guān)的技術(shù)。首先看一下圖形方面,今年我們最重點推出的技術(shù)是可編程渲染管線,相比之前的管線,可編程渲染管線提供了更多渲染的接口給到開發(fā)者,你可以按照自己的需求定義你的開發(fā)。當(dāng)然我們?yōu)榇蠹覝?zhǔn)備好了兩個模板:HD(High-Definition)主要針對高端的PC,這個管線提供了更加精確的模型,提供了非常高級的材質(zhì),幫助大家能夠?qū)崿F(xiàn)非常華麗的渲染效果;Lightweight主要針對于移動模塊,讓大家在兼顧性能的同時適配到更多的設(shè)備。
這是目前的渲染管線,它可以定制的功能很少,你可以選擇Forward或者Deferred:Forward中物體接受的光照數(shù)量決定其渲染批次,當(dāng)光照數(shù)量很多時就會遇到新的問題;Deferred中是在最后應(yīng)用一次光照,但是Deferred有對硬件的要求,所以在某些移動平臺是不支持的。 除此之外,還可以編寫一些Command Buffer,也就是在渲染管線的時間點,比如上圖中綠點的地方,你可以插入自己的渲染。
著游戲種類越來越多,傳統(tǒng)的渲染管線越來越難以滿足游戲的需求。比如我們看到有非常3D的、光照非常多的游戲,也有2D的卷軸游戲,這些游戲用一條管線很難兼顧到這樣的性能;又比如一個2D的游戲或者一個FPS游戲渲染的時候有很多權(quán)衡的點,2D根本不需要光照,材質(zhì)也不用是基于物理的材質(zhì)......等等。
所以Unity在今年推出了可編程的渲染管線,它可以讓用戶自定義渲染流程,比如你的剪裁或者繪制物體,這些流程都可以按照自己需要進行控制。新的渲染管線有非常好的擴展性,針對原來的渲染管線進行了有效的提升,保留了經(jīng)典的C++內(nèi)核,提供了更多的接口,幫助大家盡可能化地定制自己的功能。除此之外還提供了兩套模板,大家可以根據(jù)需要去定制功能,而且這兩套功能都是開源的,所以也是給了大家一個非常好的參考。
首先看一下Lightweight,它主要針對移動和XR平臺,提供了非常方便的材質(zhì)升級工具,而且對于一些不需要光照的材質(zhì)完全兼容,所以升級到這套管線非常方便。它的渲染也和原來有所不同,采用了Single-Pass Forward Rendering,可以支持8盞像素光在一個批次進行渲染。我們之前做了一個Trash Dash實例,它是一個3D游戲,但實際上沒有利用到光照,所以它利用我們的材質(zhì)升級工具,就非常容易從原來的管線升級到了現(xiàn)在的管線。
下面看一下High,High功能很多,在這里就給大家做一個詳細(xì)的拆解和介紹。它分成六大塊功能,首先它的渲染管線有一個比較大的改變,渲染管線相對之前采用了新的模型,物理計算會更精確。它在定制渲染管線時對用戶更為透明,用戶只要關(guān)注設(shè)置的屬性就可以了,而不用關(guān)注選擇什么樣的管線。它主要針對高端的PC平臺,對于燈光的配置有增強,光照和陰影方面可以采用色溫來控制光照的顏色。光線形狀也有很多選擇,還增加了新的區(qū)域光。材質(zhì)比較多,提供了非常多的高級材質(zhì),供大家選擇。還有基于分層的材質(zhì)系統(tǒng),有變形的特效。調(diào)試方面,提供了新的可以觀察調(diào)試的窗口。
新的管線不用再去選擇配置,用戶根據(jù)自己的需求來設(shè)置渲染管線就可以了。一是增強了光照配置,能根據(jù)色溫來控制顏色,支持更多的形狀,包括錐形、方形或者金字塔形狀,支持光線顏色的效果;二是新增了區(qū)域光類型,支持實時區(qū)域光,而且區(qū)域光形狀包括了橘型、圓形等形狀;三是提供了新的光照模型GGX,在傳統(tǒng)模式下是單顯色模型,粗糙表現(xiàn)顏色不會飽和,而且會帶有發(fā)暗的現(xiàn)象;此外還新增了非常多的材質(zhì),包括彩虹色加透明漆材質(zhì)的效果、雙面透明的效果、分層的模型、體積光和光速效果、No Occlusion Probe效果等等。
除此之外,新的管線還新增了調(diào)試窗口,在這個窗口中可以看到豐富的信息,包括材質(zhì)、光照等等。如下所示,這個圖可以看到正在渲染的物體表面的發(fā)線,它不光可以在編輯器上面使用,還可以實時連到PC端上進行查看。
在調(diào)試窗口支持只顯示某一種光照,比如只顯示慢反射。還支持中間的渲染目標(biāo),比如Depht Buffer顯示,左邊只顯示了Diffuse Lightin。
hader Graph是一種節(jié)點圖的方式,來幫助大家無需再用編程的方式進行創(chuàng)作。它帶來的好處是不用編碼,可能減少了一些語法或者調(diào)試的痛苦,降低了大家編程的門檻。
后處理站有非常多可以選擇的效果,可以設(shè)置不同的區(qū)域,還支持靈活可拓展的框架,因為這也是一個開源的功能,所以大家可以根據(jù)需要去看,一方面提供了自定義的API,大家可以自定義,另外也可以看到整個代碼。另外也兼容最新的可渲染管線。
再看一下漸進光照烘焙,實時渲染場景有很多燈光是先靜態(tài)烘焙上取得,尤其是像間接光照,都是烘焙上去的,因為如果實時計算肯定來不及,所以通常在做項目的時候有光照烘焙的功能。而漸進烘焙可以實時看到烘焙的過程,而且可以優(yōu)先看到視圖窗口顯示的效果,這樣給大家工作流就帶來了非常大的便利和提升。除此之外,今年應(yīng)該還會推出基于GPU的漸進光照功能,這樣光照烘焙效率就會提升10倍以上。
今年在性能上面Unity推出了一套新的系統(tǒng),可以幫助大家在性能上面有質(zhì)的飛躍。最新的系統(tǒng)包括三個部分:一是Job System,幫助你利用GPU多核處理能力;二是ECS,能夠讓我們數(shù)據(jù)的內(nèi)存排列更緊密,提高緩存的命中率;三是Burst Compiler,是技術(shù)優(yōu)化的編譯器。
如上所示,這是現(xiàn)在的系統(tǒng)。其中會引用到各種各樣的組件,它就是一個引用列表。這樣一來,這些引用類型沒有辦法控制它在內(nèi)存中的排布,所以它是分散在內(nèi)存中的,這樣數(shù)據(jù)分散的結(jié)果是導(dǎo)致緩存命中率比較低。還有一個問題,如果單核的情況,一旦任務(wù)比較多,它處理的速度就會越來越慢。
ntity Component System中,我們把數(shù)據(jù)和函數(shù)分開,Render包含了數(shù)據(jù),通過對數(shù)據(jù)進行分類處理,再派發(fā)給不同的任務(wù)進行處理。如下所示,這就是一個結(jié)合的架構(gòu)圖。
來看一個實際的例子,來看它具體提升了多少性能。如下圖顯示,傳統(tǒng)方式下飛船包含了Movemen組件,在這種情況下,同屏渲染了18500個飛船。但是再加入變形,在飛船里面就沒有了任何的應(yīng)用。所有的任務(wù)都是通過函數(shù)來執(zhí)行的,所以把它Job system變形化之后,性能大概可以提升到25000個,提升了三分之一的性能。
以上就是Unity最新的關(guān)于實時渲染的技術(shù)進展,希望能夠幫助到開發(fā)者能夠?qū)崿F(xiàn)更炫酷的效果,謝謝大家。返回搜狐,查看更多