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