99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

車(chē)載 3D 地圖如何從技術(shù)上實(shí)現(xiàn)渲染品質(zhì)的全面提升?

0
分享至

隨著汽車(chē)由單純的交通工具、“硬件為主”的工業(yè)產(chǎn)品向智能化終端、“第三空間”轉(zhuǎn)變。 3D HMI 已成為整車(chē)廠(chǎng)打造極致沉浸感與數(shù)字豪華感的“標(biāo)配”。 實(shí)時(shí)光影、晝夜交替、天氣變化、地面反射、動(dòng)態(tài)植被……高沉浸感、自然交互的 3D 地圖為駕駛者營(yíng)造身臨其境的視覺(jué)享受,讓每一次導(dǎo)航都變成一種探索的樂(lè)趣。 Unity 3D 地圖基于團(tuán)結(jié)引擎車(chē)機(jī)版打造, 以游 戲中的開(kāi)放世界為概念原型,按照SDK設(shè)計(jì),采用分層架構(gòu), 可輕松集成到不同平臺(tái)的車(chē)機(jī)系統(tǒng),并支持定制化效果, 開(kāi)啟 次世代車(chē)載地圖導(dǎo)航 , 多種優(yōu)化性能的技術(shù)手段更為應(yīng)用的運(yùn)行穩(wěn)定提供了保障。

Unity 中國(guó)高級(jí)技術(shù)經(jīng)理雷達(dá)夫在 Unite Shanghai 2024 智能座艙專(zhuān)場(chǎng)演講中 帶來(lái)了《3D 地圖技術(shù)實(shí)現(xiàn)》的分享,詳細(xì)講解 Unity 3D 地圖的架構(gòu)、技術(shù)實(shí)現(xiàn)細(xì)節(jié)以及性能優(yōu)化措施。

傳統(tǒng)地圖和 3D 地圖的對(duì)比


傳統(tǒng)的 2D 地圖,整體是扁平的 2D 風(fēng)格,這類(lèi)地圖一般來(lái)說(shuō)信息量很少,缺乏沉浸度。現(xiàn)在也出現(xiàn)傳統(tǒng)意義上的 3D 地圖,即整體畫(huà)面是 3D 的,能旋轉(zhuǎn)、平移、地圖縮放,地圖上的基本元素如建筑、道路是 3D 風(fēng)格的,這類(lèi)地圖比前面的地圖信息量好一些、多一些,但也有一些缺點(diǎn):畫(huà)面不夠真實(shí)、沉浸度也缺少。

這里是Unity 3D 地圖跑在高通 8295 設(shè)備上的效果。 整個(gè)地圖的渲染效果十分豐富,有實(shí)時(shí)光影、晝夜變換、天氣系統(tǒng)、地面實(shí)時(shí)反射、樓塊的動(dòng)態(tài)生長(zhǎng)、萬(wàn)家燈火、動(dòng)態(tài)水面波紋、水面反射、多層水體、隨機(jī)植被的生成,AOI 的擠出以及全物件樣式的實(shí)時(shí)高清渲染。


Unity 3D 地圖是一款基于團(tuán)結(jié)引擎車(chē)機(jī)版打造的次世代車(chē)載地圖導(dǎo)航軟件。以游戲開(kāi)放世界為概念原型來(lái)構(gòu)架的,將渲染品質(zhì)全面升級(jí)到次世代實(shí)時(shí) 3D 地圖導(dǎo)航,目前可以作為一個(gè)量產(chǎn)方案,并在高通的 8155、8295 上都有不錯(cuò)的表現(xiàn)。


路網(wǎng)方面,我們開(kāi)放了樣式配置,可以定制材質(zhì)、定制車(chē)道級(jí)道路要素模型,大概二十多種的路網(wǎng)樣式可供挑選。

在天空和天光的氛圍方面,實(shí)現(xiàn)了動(dòng)態(tài)天空24小時(shí)-分鐘級(jí)變換,實(shí)時(shí)天氣系統(tǒng),根據(jù)車(chē)輛所在地的外部天氣動(dòng)態(tài)更新當(dāng)前地圖上的天氣效果,比如陰晴雨雪等各類(lèi)天氣都已經(jīng)全部實(shí)現(xiàn)。


導(dǎo)航中必要的比如 3D 蚯蚓線(xiàn),3D 的 POI 已經(jīng)實(shí)現(xiàn)如上圖所示,其中 3D POI 是可以被其他物件比如建筑遮擋,這樣就起到了一定沉浸度的效果。車(chē)道級(jí)導(dǎo)航效果如圖所示,完成了包括環(huán)境繪制,車(chē)道級(jí)導(dǎo)航引導(dǎo)線(xiàn)繪制等。

我們還根據(jù)不同的品牌屬性和節(jié)日做了各種定制化的效果實(shí)現(xiàn)


比如給 4S 店或者研發(fā)中心等特定建筑 POI 圖標(biāo)定制、替換,根據(jù)不同需求進(jìn)行 3D 建筑定制替換,給樓宇增加 logo 標(biāo)識(shí),另外還有節(jié)日彩蛋的定制,比如情人節(jié),圣誕節(jié),在節(jié)日當(dāng)天會(huì)對(duì)車(chē)機(jī)的地圖實(shí)時(shí)地在線(xiàn)更新,以達(dá)到更加沉浸度和可交互性。


為了更好地定制各種效果和實(shí)現(xiàn)樣式設(shè)計(jì)的需求,我們?cè)陧?xiàng)目中實(shí)現(xiàn)了一套自定義地圖效果編輯器,方便美術(shù)師或設(shè)計(jì)師去調(diào)用實(shí)現(xiàn)各類(lèi)設(shè)計(jì)效果。

左邊四類(lèi)編輯器是我們自己實(shí)現(xiàn)的,實(shí)現(xiàn)了按導(dǎo)航要素配置和按比例尺配置的編輯器,各種不同的渲染元素在不同的縮放比例尺下材質(zhì)的選擇,比如要實(shí)現(xiàn)郊區(qū)的效果,郊區(qū)在 15 級(jí)比例尺下用什么材質(zhì),綠地在 17 級(jí)比例尺下用什么渲染風(fēng)格,都可以通過(guò)編輯器的配置達(dá)到編輯器里面所見(jiàn)即所得的作用。還有按照主題、場(chǎng)景定義渲染樣式的編輯器,方便設(shè)計(jì)師和美術(shù)師根據(jù)不同的地圖使用場(chǎng)景來(lái)設(shè)計(jì)不同的渲染樣式,比如白天的導(dǎo)航狀態(tài),晚上的巡航狀態(tài)的地圖樣式,都可以在編輯器里面配置。左下角是根據(jù)渲染風(fēng)格;有按常見(jiàn)類(lèi)型渲染要素配置的編輯器,比如類(lèi)型為線(xiàn)條背景的樣式在白天巡航狀態(tài)下是什么樣的效果;編輯器本身也可以實(shí)時(shí)預(yù)覽相關(guān)的資源和渲染效果,達(dá)到幫助設(shè)計(jì)師,美術(shù)師所見(jiàn)即所得的作用。我們創(chuàng)作的任何東西都可以在編輯器里面實(shí)時(shí)地看到。

3D 地圖效果除了可以用在導(dǎo)航上,其實(shí)也用在我們的NOP 智駕項(xiàng)目上,目前已經(jīng)在北京車(chē)展上展示過(guò)了。如視頻所示,NOP 的高精道路,車(chē)道級(jí)和兩旁的建筑,以及動(dòng)態(tài)感知的數(shù)據(jù)都來(lái)自四維地圖,右側(cè)的 3D 地圖數(shù)據(jù)來(lái)源是騰訊地圖,不同的圖商可以在主流的 4K 屏上實(shí)時(shí)展示。

3D 地圖技術(shù)架構(gòu)剖析

這樣效果的地圖是怎么實(shí)現(xiàn)的呢?我們現(xiàn)在來(lái)詳細(xì)看下地圖的架構(gòu)是怎樣的。

目前整個(gè) 3D 地圖是按照sdk設(shè)計(jì)的,可以集成到車(chē)機(jī)系統(tǒng)上,廠(chǎng)商在集成的時(shí)候可以根據(jù)自己的設(shè)計(jì)風(fēng)格來(lái)修改默認(rèn)的地圖樣式和一些自定義擴(kuò)展的功能

我們把地圖 sdk 分層級(jí)架構(gòu)主要分為四大塊,從下到上的層級(jí)依次為:Engine Layer 引擎層、Map Layer 地圖層、Design Layer 設(shè)計(jì)層、HMI Layer。



  • 引擎 Layer主要由團(tuán)結(jié)引擎車(chē)機(jī)版提供編輯器的所見(jiàn)即所得的開(kāi)發(fā)和運(yùn)行時(shí)的高性能,主要包括 URAS、自定義渲染管線(xiàn)以及 dots,還有各種有用的 Packages。

  • 地圖層(MapLayer)是整個(gè)地圖的內(nèi)容的設(shè)計(jì),創(chuàng)作,數(shù)據(jù)的解析,業(yè)務(wù)邏輯和地圖渲染元素的實(shí)時(shí)構(gòu)建和渲染的所在。包括了兩大 sdk(地圖 sdk、導(dǎo)航 sdk)的接入。通過(guò)圖商的數(shù)據(jù)來(lái)構(gòu)建整個(gè)地圖世界以及為各類(lèi) mesh 網(wǎng)格增加的渲染效果,比如天氣系統(tǒng)、晝夜變換、天光系統(tǒng)、全局光照等等,實(shí)時(shí)構(gòu)建我們的 Mesh。然后就是根據(jù)導(dǎo)航 sdk 傳過(guò)來(lái)的導(dǎo)航的各類(lèi)動(dòng)態(tài)的渲染元素?cái)?shù)據(jù)和業(yè)務(wù)的調(diào)用,包括導(dǎo)航引導(dǎo)線(xiàn),蚯蚓線(xiàn),各類(lèi)路標(biāo),路口放大圖等,相關(guān)的業(yè)務(wù)包括:定位、檢索、算路、引導(dǎo)等等,這些業(yè)務(wù)本身會(huì)在 java 側(cè)實(shí)現(xiàn),然后把相關(guān)的渲染數(shù)據(jù)和需要跟 Unity 交互的數(shù)據(jù)通過(guò)團(tuán)結(jié)引擎車(chē)機(jī)版的 URAS 來(lái)在 Render Service 和 Client 通信,就可以渲染出來(lái)了。

  • 設(shè)計(jì)層(Design Layer)是開(kāi)放給廠(chǎng)商使用的,通過(guò)地圖樣式編輯器自定義修改團(tuán)結(jié)引擎里面自帶的資產(chǎn)。默認(rèn)的地圖 SDK 帶了一套前面視頻的效果樣式效果和配置的,當(dāng)然設(shè)計(jì)師和美術(shù)師可以在集成的時(shí)候可以通過(guò)地圖樣式編輯器自定義地修改、控制資源的更新和資源的加載方式。因?yàn)閳F(tuán)結(jié)引擎本身也自帶了 assetbundle 的功能,也就是即使在量產(chǎn)發(fā)布后,不需要通過(guò) OTA 空推的方式就可以完成資源和業(yè)務(wù)的啟動(dòng)更新,因?yàn)閳F(tuán)結(jié)引擎本身就帶有 assetbundle 功能,滿(mǎn)足項(xiàng)目?jī)?nèi),各類(lèi)資源的打包更新。

  • 最后是HMI Layer,這一層也是給車(chē)廠(chǎng)集成用的,主要是用來(lái)負(fù)責(zé)地圖 sdk 的車(chē)機(jī)集成和跟 Android 側(cè)的交互,主要包括和 RenderService 通信,把同步過(guò)來(lái)的渲染畫(huà)面。Prensent 到 URAS Client,以及安卓原生的一些 Overlay、Layout、UI 的顯示,還有屏幕上的各種輸入操作,比如點(diǎn)擊、拖拽,雙指多指的操作交互邏輯。這些都是在 HMI 層實(shí)現(xiàn)的。

3D 地圖技術(shù)實(shí)現(xiàn)細(xì)節(jié)

接下來(lái)我們看下每層架構(gòu)中的具體的技術(shù)細(xì)節(jié)。

1.以游戲開(kāi)放世界為概念原型

首先 3D 地圖底圖的構(gòu)建思路我們是基于游戲開(kāi)放世界為原型來(lái)架構(gòu)的。

因?yàn)榈貓D圖商的本身的數(shù)據(jù)結(jié)構(gòu)一般都是基于瓦片(tile)的形式來(lái)組織的,跟游戲的開(kāi)放世界、大世界是非常一致的。每個(gè)瓦片(tile)上的物件也是按照層次組織的,從路網(wǎng)到建筑,再到細(xì)小的道路標(biāo)志都可以通過(guò)更新當(dāng)前自車(chē)的經(jīng)緯度坐標(biāo)決定去加載/卸載瓦片來(lái)實(shí)現(xiàn),是不需要通過(guò)每幀加載卸載和移動(dòng)整個(gè)地圖,而是按需來(lái)加載卸載相應(yīng)的瓦片(tile),就可以完成整個(gè)地圖的更新。

2. 地圖數(shù)據(jù)結(jié)構(gòu)


地圖的數(shù)據(jù)結(jié)構(gòu)是按照?qǐng)D層來(lái)分的,分為BMD(背景數(shù)據(jù))、Obj3D(3D數(shù)據(jù))、HD(高精道路數(shù)據(jù))三個(gè)圖層,每個(gè)圖層分了很多類(lèi)別,比如 POI、AOI 歸為背景圖層。3D 建筑、3D 精模、3D 模型歸為 3D 模型,可以按照層次去組織地圖的渲染方式。


為了更好地了解3D地圖技術(shù)細(xì)節(jié),這里對(duì)項(xiàng)目中使用的坐標(biāo)做個(gè)解釋。目前 Unity 3D 地圖使用了 3 種坐標(biāo)系:(1)經(jīng)緯度。(2)墨卡托投影坐標(biāo)。(3)Unity 坐標(biāo)。

經(jīng)緯度地表是接入圖商地圖 sdk 幾何數(shù)據(jù)接入時(shí)的初始形式。再經(jīng)過(guò)墨卡托投影坐標(biāo)通過(guò)近似將經(jīng)緯度投影到平面上,每個(gè)經(jīng)緯度轉(zhuǎn)換后有唯一的二維坐標(biāo),轉(zhuǎn)換后的墨卡托坐標(biāo)一般數(shù)值非常大。為了比較好地在 Unity 坐標(biāo)里面渲染,需要進(jìn)一步轉(zhuǎn)換得到 Unity 坐標(biāo),轉(zhuǎn)換到 Unity 坐標(biāo)需要用墨卡托的參考點(diǎn)和當(dāng)前縮放的尺度,這兩個(gè)值加上轉(zhuǎn)換規(guī)則就可以轉(zhuǎn)換到 Unity 可渲染的坐標(biāo)了。轉(zhuǎn)換之后可渲染的數(shù)據(jù)會(huì)在 dots 的 JobSystem 中進(jìn)行三角化處理,之后網(wǎng)格數(shù)據(jù)以及設(shè)計(jì)師、美術(shù)師創(chuàng)建的資產(chǎn)可以實(shí)時(shí)地傳到 GPU,完成實(shí)時(shí)渲染。

3. Tile 加載卸載


再來(lái)看一下 3D 地圖的 tile 的加載卸載和相機(jī)的高度以及地圖比例尺縮放這三者的關(guān)系。

在 3D 地圖的每一幀畫(huà)面中,Unity 相機(jī)的視域體和地平面會(huì)有四個(gè)交點(diǎn),如圖所示相機(jī)的四條白色射線(xiàn)(相機(jī)視域體)與地平面構(gòu)成一個(gè)地圖加載范圍框,圖中紅色框,然后通過(guò)調(diào)用圖商地圖 sdk,從而得到當(dāng)前所需要的瓦片的具體數(shù)據(jù)。在每一幀更新當(dāng)中,在墨卡托參考點(diǎn)和縮放比例尺確定的情況下,紅框所表示的范圍將從 Unity 坐標(biāo)反過(guò)來(lái)轉(zhuǎn)換回經(jīng)緯度坐標(biāo)(原始坐標(biāo)),經(jīng)緯度坐標(biāo)通過(guò)圖商地圖 sdk 調(diào)用,就得到了每一幀真正需要用到的那些瓦片數(shù)據(jù)和地圖的數(shù)據(jù)。同時(shí)把紅框之外的 tile 卸載,這樣就完成 tile 的加載和卸載操作。

4. 使用 dots 開(kāi)發(fā)地圖 Layer


為了更好的性能,項(xiàng)目使用dots來(lái)開(kāi)發(fā)整個(gè)地圖 Layer,這里是地圖 Layer 的所有 ECS 相應(yīng)的 SystemGroup 和每個(gè) Group 內(nèi)部的各類(lèi) System,按照業(yè)務(wù)需要可以創(chuàng)建各種 System。有負(fù)責(zé)更新地圖數(shù)據(jù)的 group,有用來(lái)負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)換的 group,還有幫助 TA 和設(shè)計(jì)需求來(lái)處理數(shù)據(jù)的 group,以及動(dòng)態(tài)查詢(xún)相關(guān)的 Entity 和動(dòng)態(tài)地調(diào)整個(gè)地圖的整體坐標(biāo),保證在遠(yuǎn)距離移圖和導(dǎo)航的時(shí)候的動(dòng)態(tài)校準(zhǔn)的 group,然后還有是 Mesh 創(chuàng)建的 group,還有負(fù)責(zé)最終可渲染的 Entity 創(chuàng)建的 group,最后還有負(fù)責(zé) UnLoad 卸載各類(lèi)資源的 group,保證內(nèi)存。


這里是我們?cè)趫F(tuán)結(jié)引擎編輯器中使用 dots 開(kāi)發(fā)的界面,dots 具有很多相關(guān)的工具集和工具包,左上就是開(kāi)啟了檢測(cè)當(dāng)前運(yùn)行時(shí)中每一幀所有 Component 的使用情況,運(yùn)行時(shí)查看當(dāng)前的使用情況,就能了解到 dots 當(dāng)前具體的運(yùn)行情況,極大地方便我們?cè)陧?xiàng)目開(kāi)發(fā)中使用和調(diào)試 dots。

5. 3D 地圖運(yùn)行時(shí)整體時(shí)序圖


最左邊是車(chē)機(jī)系統(tǒng),包括 Android, QNX, Embedded Linux 等。當(dāng)在車(chē)機(jī)系統(tǒng)啟動(dòng)后,一般來(lái)說(shuō)會(huì)啟動(dòng)相應(yīng)的服務(wù),這個(gè)時(shí)候會(huì)啟動(dòng)對(duì)應(yīng)的桌面Launcher,Launcher 在啟動(dòng)的時(shí)候會(huì)把座艙需要用到的各種服務(wù)按照優(yōu)先級(jí)會(huì)按序啟動(dòng)起來(lái),那么 3D 地圖本身因?yàn)槭?strong>URAS 架構(gòu),這時(shí)候可以把 Render Service 在這個(gè)時(shí)候做啟動(dòng),極大地加速啟動(dòng)時(shí)間。

Render Service 在啟動(dòng)的時(shí)候會(huì)異步的初始化我們的 3D 地圖 sdk,這個(gè)操作是通過(guò)安卓主線(xiàn)程直接調(diào)用 SDK,不需要通過(guò) Unity,這樣安卓線(xiàn)程相關(guān)的工作可以和 Unity 本身的初始化工作并行處理,極大地加速了 3D 地圖的啟動(dòng)時(shí)間,然后在 Render Service 啟動(dòng)的時(shí)候,會(huì)把 Unity 主線(xiàn)程啟動(dòng),Unity 相關(guān)的工作也開(kāi)始啟動(dòng)起來(lái)了,當(dāng) Unity 第一個(gè)場(chǎng)景加載完畢的時(shí)候,我們會(huì)開(kāi)始根據(jù)當(dāng)前自車(chē)的 GPS 定位數(shù)據(jù),異步地通過(guò)地圖 sdk 拉取周邊的地圖 tile 數(shù)據(jù),返回的是 NDS 數(shù)據(jù),我們會(huì)做相應(yīng)的轉(zhuǎn)換,把 NDS 數(shù)據(jù)通過(guò)剛剛講到的墨卡托投影轉(zhuǎn)為Unity 坐標(biāo),這些轉(zhuǎn)換后的地圖數(shù)據(jù)會(huì)在 job system 中進(jìn)行三角面化,從而得到相對(duì)應(yīng)的可渲染元素的網(wǎng)格。

這些網(wǎng)格數(shù)據(jù)加上設(shè)計(jì)師提供的資源,一起會(huì)被提交給渲染線(xiàn)程。拿到這些網(wǎng)格和資源之后會(huì)提交給 GPU,做實(shí)時(shí)渲染。最后這些渲染畫(huà)面會(huì)根據(jù)車(chē)廠(chǎng)的設(shè)計(jì)到底是在中控屏上顯示地圖,還是投屏到儀表上,都是可以的,因?yàn)檫@也是 URAS 的重要功能。

性能優(yōu)化分析

現(xiàn)在智能座艙上的應(yīng)用越來(lái)越多,越來(lái)越卷。在有限的硬件資源下,可供每個(gè)應(yīng)用分配的資源也是越來(lái)越少,為了保證應(yīng)用的運(yùn)行穩(wěn)定,Unity 對(duì)上車(chē)的各個(gè)應(yīng)用都會(huì)做深度極致的性能優(yōu)化,接下來(lái)我們?cè)敿?xì)了解下現(xiàn)在我們 3D 地圖項(xiàng)目用到哪些優(yōu)化性能的技術(shù)。

1. 按需渲染

首先,我們地圖是基于開(kāi)放大世界的方式來(lái)開(kāi)發(fā),并不是傳統(tǒng)的做法直接對(duì)地圖進(jìn)行平移等各種操作,我們是按需根據(jù)當(dāng)前的渲染需要才從地圖數(shù)據(jù)中加載并實(shí)時(shí)構(gòu)建相應(yīng)的內(nèi)容,畫(huà)面不可見(jiàn)的部分,我們盡可能不去加載和處理,保障實(shí)時(shí)渲染的高性能和穩(wěn)定。

2. 資源最優(yōu)運(yùn)行

其次,很重要的是地圖里面所有的資源,包括貼圖、Shader、材質(zhì)等等資源都是在編輯器里經(jīng)過(guò)最優(yōu)化處理后,在運(yùn)行時(shí)從本地加載,保證資源是以最優(yōu)的狀態(tài)運(yùn)行,而不像其他運(yùn)行方式在運(yùn)行時(shí)加載一些貼圖,這樣運(yùn)行持續(xù)加載的貼圖本身就沒(méi)有做過(guò)壓縮,做壓縮也是費(fèi)時(shí)間的,所以我們保證了運(yùn)行時(shí)的性能。運(yùn)行當(dāng)中我們會(huì)利用 Unity 本身各種優(yōu)化技術(shù),包括靜態(tài)合批、動(dòng)態(tài)合批、Burst 等等,我們對(duì)圖商和車(chē)廠(chǎng)都做了相應(yīng)的sdk 適配,保證兩頭都能高效地集成和適配不同的圖商和車(chē)廠(chǎng)。

3. 跨平臺(tái)多平臺(tái)

團(tuán)結(jié)引擎本身不管是編輯器還是運(yùn)行時(shí),都是跨平臺(tái)的,所以不管圖商的 sdk 和車(chē)廠(chǎng)的 sdk 是基于哪個(gè)平臺(tái),都能集成進(jìn)來(lái),比如開(kāi)發(fā)平臺(tái)包括Windows,Mac,Linux 等常用的開(kāi)發(fā)集成平臺(tái),然后運(yùn)行時(shí)平臺(tái)可以為Android,QNX,Embedded Linux,iOS,甚至將來(lái)可能是 Web 端,都是可以的。


我們3D地圖是用團(tuán)結(jié)引擎車(chē)機(jī)版開(kāi)發(fā)的,團(tuán)結(jié)引擎目前已經(jīng)實(shí)現(xiàn)了支持 HMI Android、QNX、EmbeddedLinux 等車(chē)機(jī)系統(tǒng)相關(guān)的平臺(tái)。在這些平臺(tái)上專(zhuān)注做了特定的優(yōu)化,比如車(chē)機(jī)重點(diǎn)關(guān)注的啟動(dòng)時(shí)間,內(nèi)存占用,線(xiàn)程使用數(shù)量都有相應(yīng)的優(yōu)化。

4. URAS

另外有一個(gè)重大的功能就是URAS (Unity Render As Service),這個(gè)可以在啟動(dòng)和內(nèi)存方面有很大的提升。


如圖所示,這里是團(tuán)結(jié)引擎車(chē)機(jī)版使用 URAS 的測(cè)試數(shù)據(jù),可以看到使用團(tuán)結(jié)引擎車(chē)機(jī)版和普通的 Unity 版本相比在啟動(dòng)時(shí)間上有比較大的提升。


URAS, Unity Render As Service,是團(tuán)結(jié)引擎車(chē)機(jī)版的一個(gè)重要的功能,它區(qū)別于傳統(tǒng)的 UAAL Unity As a Library,在傳統(tǒng)的 UAAL 里面一個(gè)進(jìn)程中只能存在一個(gè)實(shí)例中,只能為當(dāng)前進(jìn)程服務(wù)。但是在 URAS 中,可以支持引擎可以作為渲染服務(wù)被嵌入原生 APP 中,多個(gè)工程共用一個(gè)渲染服務(wù),互不干擾,從而提升開(kāi)發(fā)效率和節(jié)省車(chē)機(jī)資源


如圖所示,這是 3D 地圖使用 URAS 的方式,我們輕 Client 端和重 RenderService 端, 可以看到,Client 端只有跟安卓相關(guān)的顯示內(nèi)容和為 RenderService 提供的 SurfaceView。 其他所有的內(nèi)容和業(yè)務(wù)邏輯都是放在 RenderService 端,Client 端和Service 端通過(guò) aidl 通信。

另外,在傳統(tǒng)非 URAS 的方式啟動(dòng)的時(shí)候,畫(huà)面的第一幀渲染需要有很多的依賴(lài)加載項(xiàng),而且是在用戶(hù)點(diǎn)擊地圖導(dǎo)航的時(shí)候才做啟動(dòng),這樣啟動(dòng)速度很慢,但如果用了 URAS 的方式,在車(chē)點(diǎn)火系統(tǒng)啟動(dòng)的時(shí)候,下面 RenderService 就開(kāi)始做異步啟動(dòng)了,極大地提升了用戶(hù)體驗(yàn),而且在給車(chē)廠(chǎng)集成的時(shí)候,用的是 Client 端,它是一個(gè)輕量的,而不是 Service 端,我們給車(chē)廠(chǎng)做集成的時(shí)候,非常方便地加速我們的效率。

5. 基于 dots 開(kāi)發(fā)


我們的 3D 地圖項(xiàng)目是基于 dots 開(kāi)發(fā)實(shí)現(xiàn)的,dots 本身就有很多提升性能的特點(diǎn):

  • ECS loop,我們的整個(gè)業(yè)務(wù)都是規(guī)劃為各種 System,和 SystemGroup 的數(shù)據(jù)和行為分開(kāi),使得數(shù)據(jù)訪(fǎng)問(wèn)極其高效,提高 CPU cache 的命中率。

  • Job System,我們的很多業(yè)務(wù)都是放在 Job 中去做的,比如地圖數(shù)據(jù)的整理、篩選、組織、Mesh 構(gòu)建等等工作都是放在 Job 中跟其他線(xiàn)程并行完成,能極大地提高資源的利用率以及降低功耗。

  • Burst,幾乎所有的 Job System 都用 Burst 編譯,使得在做三角面化和其他執(zhí)行效率在某些數(shù)學(xué)庫(kù)調(diào)用上比一般的 C++ 還要快。

  • Entity Graphics,Entity Graphics 是 2022.3LTS 的 dots 1.0 版本中很重要的一個(gè)特性,可以更加快速地設(shè)置 Drawcall 和組織渲染元素和命令,利用更高效的 Instancing 模式的 Shader 和 DOTS Instancing 來(lái)組合合批并實(shí)例化,極大極少 DrawCall 的數(shù)量,從而更有效地渲染大量實(shí)例物件類(lèi)似 3D 地圖這樣的場(chǎng)景。

6. 針對(duì)特定硬件平臺(tái)使用了特定的優(yōu)化功能


為了更加極致地提升 GPU 的性能,我們還針對(duì)特定硬件平臺(tái)使用了特定的優(yōu)化功能,比如高通的 GPU 在 8295 上就支持 GLES 的VRS,VRS 也就是可變著色率,就是可以控制 GPU 渲染器在光柵化物體的時(shí)候,可以不一定要按照固定的每個(gè)像素點(diǎn)一次采樣計(jì)算的方式,而是可以用2個(gè)或自定義的三個(gè)、多個(gè)像素行列來(lái)做一次 Fragment Shader 計(jì)算。在項(xiàng)目當(dāng)中,可以針對(duì)畫(huà)面中顏色變動(dòng)很小的物件材質(zhì)使用比如 1x2 或者 2x1 的 VRS,在地圖 SDK 里面,我們目前是對(duì)地面、普通建筑、天空使用了 VRS,對(duì)于精模比較貼近相機(jī)的物體,精細(xì)化的模型我們是沒(méi)有使用的。這樣在不影響畫(huà)面的情況下,極大地提升了 GPU 性能和幀率。


如圖所示可以看到,在關(guān)閉和開(kāi)啟 VRS 的情況下,幀率從 39 幀提升到 51 幀,提升了近 30%,帶來(lái)的收益是 CPU 的各個(gè)線(xiàn)程的工作時(shí)間直接減少,GPU 的開(kāi)銷(xiāo)也降低,同時(shí) CPU 在等 GPU 的時(shí)間也并行地減少,這樣在不影響畫(huà)面質(zhì)量的情況下,極大地提升幀率和降低硬件的算力和功耗。

7. Map 層優(yōu)化


除了在引擎層做了優(yōu)化之外,我們?cè)?Map 層我 們做了這些優(yōu)化內(nèi)容,包括 Shader 變體的裁剪,Tile 做了一些 cache,我們會(huì)根據(jù)最近一段時(shí)間沒(méi)有被用到的 Tile 清除掉,這個(gè)時(shí)間和緩存大小目前都是可配置的。 我們還加入了異步加載 tile 的方式,使得加載卸載 Tile 的時(shí)候不會(huì)卡主線(xiàn)程,保證幀率的穩(wěn)定。

我們后續(xù) 3D 地圖 sdk 的規(guī)劃內(nèi)容如下。


后續(xù)我們會(huì)繼續(xù)嘗試 SGSR 超分的 GPU 優(yōu)化方法,以及嘗試使用 Shader LOD 對(duì)場(chǎng)景中的物件材質(zhì)根據(jù) LOD 來(lái)選擇不同的消耗的 Shader 和動(dòng)態(tài) LOD 來(lái)最優(yōu)化 GPU 性能。

以上是我分享的內(nèi)容,謝謝大家。

團(tuán)結(jié)引擎車(chē)機(jī)套件是基于團(tuán)結(jié)引擎車(chē)機(jī)版及相關(guān)開(kāi)發(fā)工具打造的智能座艙 3D HMI 應(yīng)用集合(車(chē)模車(chē)控、導(dǎo)航智駕、游戲娛樂(lè)、3D Launcher 等)支持主流座艙系統(tǒng)和平臺(tái),覆蓋座艙主要應(yīng)用場(chǎng)景,并提供一流的視覺(jué)效果體驗(yàn)。作為車(chē)載應(yīng)用渲染方案的最佳實(shí)踐集合,能夠有效縮短項(xiàng)目開(kāi)發(fā)周期,降低成本。截止五月,智能電動(dòng)車(chē)品類(lèi)中超過(guò) 85% 的主機(jī)廠(chǎng)用 Unity 來(lái)打造中控屏、儀表盤(pán)。Unity 中國(guó)已與 35 家車(chē)廠(chǎng)合作,推出了 68 款量產(chǎn)車(chē)型。

[1]團(tuán)結(jié)引擎官網(wǎng):

https://unity.cn/tuanjie/tuanjieyinqing

[2]團(tuán)結(jié)引擎專(zhuān)區(qū):

https://developer.unity.cn/plate/tuanjie-engine

[3]團(tuán)結(jié)引擎問(wèn)答專(zhuān)區(qū):

https://developer.unity.cn/plate/tuanjie-engine?tab=ask

Unity 官方微信

第一時(shí)間了解Unity引擎動(dòng)向,學(xué)習(xí)進(jìn)階開(kāi)發(fā)技能

每一個(gè)“在看”,都是我們前進(jìn)的動(dòng)力

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
鄧文迪翻車(chē)?百萬(wàn)禮服走紅毯撞衫楊冪,一個(gè)俗氣一個(gè)貴氣,好尷尬

鄧文迪翻車(chē)?百萬(wàn)禮服走紅毯撞衫楊冪,一個(gè)俗氣一個(gè)貴氣,好尷尬

觀察鑒娛
2025-05-07 09:58:27
鄭民華醫(yī)生被網(wǎng)暴注銷(xiāo)賬號(hào),以后誰(shuí)來(lái)為我們發(fā)聲?

鄭民華醫(yī)生被網(wǎng)暴注銷(xiāo)賬號(hào),以后誰(shuí)來(lái)為我們發(fā)聲?

歷史總在押韻
2025-01-24 23:31:51
杭溫高鐵、滬蘇湖高鐵明起推出定期票和計(jì)次票,不限車(chē)次執(zhí)行優(yōu)惠折扣

杭溫高鐵、滬蘇湖高鐵明起推出定期票和計(jì)次票,不限車(chē)次執(zhí)行優(yōu)惠折扣

澎湃新聞
2025-05-07 22:36:26
劉太陽(yáng):中國(guó)臀神,身材豐滿(mǎn),曲線(xiàn)玲瓏,魅力無(wú)限,風(fēng)采卓絕

劉太陽(yáng):中國(guó)臀神,身材豐滿(mǎn),曲線(xiàn)玲瓏,魅力無(wú)限,風(fēng)采卓絕

草莓解說(shuō)體育
2025-05-07 10:34:26
國(guó)小骨頭硬!兩個(gè)小國(guó)拒絕武契奇飛越其領(lǐng)空赴俄:菲佐也不給過(guò)

國(guó)小骨頭硬!兩個(gè)小國(guó)拒絕武契奇飛越其領(lǐng)空赴俄:菲佐也不給過(guò)

大風(fēng)文字
2025-05-07 10:33:06
亞冠資格危!沙特聯(lián)積分榜:勝利掉至第4,吉達(dá)聯(lián)合6分領(lǐng)跑

亞冠資格危!沙特聯(lián)積分榜:勝利掉至第4,吉達(dá)聯(lián)合6分領(lǐng)跑

直播吧
2025-05-08 04:14:11
痛心!30歲女游客命喪印尼,87米海底只為撿相機(jī),長(zhǎng)得十分漂亮。

痛心!30歲女游客命喪印尼,87米海底只為撿相機(jī),長(zhǎng)得十分漂亮。

南南說(shuō)娛
2025-05-07 10:20:31
殲10C戰(zhàn)果證實(shí),印軍陣風(fēng)1號(hào)機(jī)殘骸曝光,巴外長(zhǎng):殲10C尚有余力

殲10C戰(zhàn)果證實(shí),印軍陣風(fēng)1號(hào)機(jī)殘骸曝光,巴外長(zhǎng):殲10C尚有余力

說(shuō)天說(shuō)地說(shuō)實(shí)事
2025-05-08 06:57:08
“買(mǎi)個(gè)38元面包還只能用1張10元券!”宜芝多“重生”數(shù)月,質(zhì)疑不斷!最新回應(yīng)→

“買(mǎi)個(gè)38元面包還只能用1張10元券!”宜芝多“重生”數(shù)月,質(zhì)疑不斷!最新回應(yīng)→

新民晚報(bào)
2025-05-07 19:45:51
趙心童奪冠后2天,世界排名亂了:中國(guó)大贏家,前TOP1炮轟世臺(tái)聯(lián)

趙心童奪冠后2天,世界排名亂了:中國(guó)大贏家,前TOP1炮轟世臺(tái)聯(lián)

大秦壁虎白話(huà)體育
2025-05-08 08:45:54
王博談總決賽G1失利:剛剛第一場(chǎng)球,還可以打回來(lái)

王博談總決賽G1失利:剛剛第一場(chǎng)球,還可以打回來(lái)

懂球帝
2025-05-07 22:16:07
劉強(qiáng)東:大家餐桌上吃的鴨子,可能一輩子都沒(méi)下過(guò)水,吃的雞一輩子走的路可能都不超過(guò)3米!

劉強(qiáng)東:大家餐桌上吃的鴨子,可能一輩子都沒(méi)下過(guò)水,吃的雞一輩子走的路可能都不超過(guò)3米!

V記錄號(hào)
2025-05-07 20:28:24
13點(diǎn)16分!正式官宣!名帥因戰(zhàn)績(jī)不佳告別,主動(dòng)請(qǐng)辭彰顯君子風(fēng)度

13點(diǎn)16分!正式官宣!名帥因戰(zhàn)績(jī)不佳告別,主動(dòng)請(qǐng)辭彰顯君子風(fēng)度

璞玉話(huà)體壇
2025-05-07 14:36:35
42歲老板睡員工女友,穿起褲子罵她太騷,結(jié)果自己和懷孕情人被殺

42歲老板睡員工女友,穿起褲子罵她太騷,結(jié)果自己和懷孕情人被殺

情感藝術(shù)家
2025-05-06 22:54:54
警方公布中國(guó)旅游團(tuán)慘烈原因:皮卡車(chē)越線(xiàn)違規(guī),旅游巴司機(jī)死亡

警方公布中國(guó)旅游團(tuán)慘烈原因:皮卡車(chē)越線(xiàn)違規(guī),旅游巴司機(jī)死亡

大洛杉磯LA
2025-05-08 06:20:27
巴黎隊(duì)史第四次打進(jìn)歐戰(zhàn)決賽,此前曾有一次奪冠

巴黎隊(duì)史第四次打進(jìn)歐戰(zhàn)決賽,此前曾有一次奪冠

懂球帝
2025-05-08 06:33:09
董小姐古小姐火了之后,北大“0臨床基礎(chǔ)”副院長(zhǎng)也火了

董小姐古小姐火了之后,北大“0臨床基礎(chǔ)”副院長(zhǎng)也火了

洞見(jiàn)報(bào)告
2025-05-07 22:16:05
范冰冰,又翻車(chē)了。

范冰冰,又翻車(chē)了。

于小戈
2025-04-17 15:24:23
時(shí)隔八天,籃協(xié)終于公開(kāi)承認(rèn)誤判,用24字認(rèn)定劉傳興屬于違體犯規(guī)

時(shí)隔八天,籃協(xié)終于公開(kāi)承認(rèn)誤判,用24字認(rèn)定劉傳興屬于違體犯規(guī)

南海浪花
2025-05-07 18:19:30
3-6,2-6!中國(guó)莎娃羅馬1000賽1輪游,送5次雙誤,鄭欽文孤軍奮戰(zhàn)

3-6,2-6!中國(guó)莎娃羅馬1000賽1輪游,送5次雙誤,鄭欽文孤軍奮戰(zhàn)

劉姚堯的文字城堡
2025-05-07 22:50:22
2025-05-08 09:39:00
Unity incentive-icons
Unity
Unity中國(guó)官方帳戶(hù)
2300文章數(shù) 6718關(guān)注度
往期回顧 全部

汽車(chē)要聞

《臺(tái)州宣言》再進(jìn)一步 吉利汽車(chē)將全資控股極氪

頭條要聞

國(guó)泰航空空姐誤給3歲男童白葡萄酒 家屬:她一直未道歉

頭條要聞

國(guó)泰航空空姐誤給3歲男童白葡萄酒 家屬:她一直未道歉

體育要聞

未來(lái)是你們這些年輕人的,但現(xiàn)在還不行!

娛樂(lè)要聞

出道15年零緋聞,被劉濤贊揚(yáng)演技的他

財(cái)經(jīng)要聞

特朗普修改AI芯片出口管制?美商務(wù)部回應(yīng)

科技要聞

蘋(píng)果宣布重大計(jì)劃 谷歌市值蒸發(fā)1500億美元

態(tài)度原創(chuàng)

親子
健康
時(shí)尚
本地
軍事航空

親子要聞

教你給孩子睡前按按小腳心,必須睡得好!

唇皰疹和口腔潰瘍是"同伙"嗎?

從 “白粥姐” 到 “妖妃” 逆襲!王楚然靠美貌殺回內(nèi)娛頂流?

本地新聞

為什么太行山上長(zhǎng)滿(mǎn)了韓國(guó)人?

軍事要聞

巴基斯坦與印度在巴控克什米爾發(fā)生交火

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 阳信县| 桑植县| 阳西县| 陆丰市| 郁南县| 潢川县| 绥滨县| 稻城县| 达拉特旗| 玉龙| 邳州市| 井研县| 神木县| 锡林郭勒盟| 和政县| 无极县| 乌审旗| 海安县| 启东市| 龙胜| 宁河县| 柏乡县| 沙雅县| 金沙县| 左云县| 泾川县| 叙永县| 定南县| 垦利县| 利辛县| 弋阳县| 闸北区| 星座| 洱源县| 儋州市| 安丘市| 观塘区| 仁寿县| 和龙市| 大城县| 太白县|