久久精品人妻一区国产传媒国产精品|51黑料吃瓜网在线观看色噜噜色偷偷30根|久久久久久久久国产在亚洲中文字幕人妻|91av福利china人妻91九色|国语精品视频自产自拍|色婷婷av一区二区三区久久|国产91丝袜在线|亚洲二区中文字幕|91久久精品中文内射|中文 欧美 日韩,3d色噜噜狠狠一区二区三区,国产精品福利99,国产精品传媒网站

我的訂單|我的收藏|我的商城|幫助中心|返回首頁
搜維爾[SouVR.com]>服務(wù)>案例分享 應(yīng)用研究>案例分享>軟件開發(fā)

Unity Burst:Neon intrinsics更新

文章來源: 作者:frank 發(fā)布時間:2021年08月11日 點擊數(shù): 次 字號:

Unity最近發(fā)布了Burst 1.5。新版本重點添加了多條Neon intrinsics指令。Neon intrinsics指令支持精確設(shè)定矢量指令,,為Arm CPU的處理進程生成最為高效代碼,。Neon指令集傳統(tǒng)上只適用于C/C++語言,而Unity目前已成功將其移植到了C#中。

不過,,要找到最合適的指令并沒那么簡單,Arm為此特地制定了一份“Neon intrinsics在Unity中的運用”指南,,外加一個帶有開源代碼的Unity項目,,供廣大開發(fā)者參考。這篇指南將幫助你以正確的結(jié)構(gòu)構(gòu)建Burst代碼,,讓代碼自動應(yīng)用Neon指令集,,享受其帶來的性能提升,為你省去自行編寫指令集的麻煩,。我們下面就來看看怎樣才能充分利用起Neon intrinsics。

自動矢量化(Auto-vectorization)

Burst編譯器將自動采用Neon intrinsics來提高性能收益,,而我們?nèi)钥梢允褂闷渌椒▉磉M一步提高Burst性能,。舉例來說,我們可根據(jù)一定的結(jié)構(gòu)來調(diào)整數(shù)據(jù)和函數(shù)循環(huán)結(jié)構(gòu),,利用自動矢量化來獲取大量的性能提升,。

要想在Burst編譯器中將四條指令合并為一條Neon SIMD指令,我們可編寫簡短,、連貫并保留內(nèi)聯(lián)的函數(shù),。此外,經(jīng)我們在物理碰撞模擬中測試發(fā)現(xiàn),,傳入Burst函數(shù)的指針在添加[NoAlias]屬性后,,其速度可提高4倍。??

開發(fā)者現(xiàn)身說法

本文中的案例重點在于展示物理碰撞,,因此上方演示場景僅使用了簡單的膠囊型和立方體圖形,。例中對兩種類型的碰撞進行了優(yōu)化:用于角色-墻體間碰撞的軸向邊框盒(Axis-Aligned Bounding Boxes,AABB),,及用于角色之間碰撞的截面半徑碰撞,。

手動編寫的指令要快于編譯器并不簡單,但這里將介紹幾種方法,??梢宰屝阅芨倪M不僅是個難以實現(xiàn)的目標(biāo)。在進入分析優(yōu)化階段后,,我們可以先分析線程的運行耗時,,再進行調(diào)整,如此循環(huán)往復(fù),。我們能使用Profile Analyzer,,或自己的計時方法來完成這一階段的優(yōu)化。

這時我們需要將注意力放到代碼調(diào)整上,。在本例中,,我們將原先的Burst jobs代碼轉(zhuǎn)寫成了靜態(tài)函數(shù),,方便進行計時。異步執(zhí)行功能在最終的游戲代碼中發(fā)揮了巨大作用,,盡管性能計時使得代碼執(zhí)行更為復(fù)雜了一點,。在一個真正的游戲里,你需要使用ProfilerMarker,、ProfilerRecorder和ProfileAnalyzer來計算job的耗時,。而在此例中,改寫后的Burst靜態(tài)函數(shù)實際上強制在腳本中應(yīng)用了自動矢量化結(jié)構(gòu),。如果job使用的是由Burst靜態(tài)函數(shù)組成的NativeArray,,則基本類型的指針使用起來也會更加簡單,靜態(tài)函數(shù)會把數(shù)據(jù)拆分成更易矢量化的片段,。而應(yīng)用在指針上的[NoAlias]屬性會告訴編譯器指針調(diào)用的數(shù)據(jù)是否有重復(fù),。在此案例中,Burst的性能非常強大,,以至于只有極其出色的Neon代碼才能比它更快,。為了充分發(fā)揮Neon的作用,這兩種類型的碰撞都需要采用特定的數(shù)據(jù)和邏輯結(jié)構(gòu),。

矢量化的效果在同時比對四個或八個對象時超好,,因為這時運算可一次性完成(在Neon指令正確的情況下)。

新指令的效果可謂立竿見影,,其中一項優(yōu)化甚至能讓Burst代碼比結(jié)構(gòu)精巧的非Burst代碼快6倍,,讓手動編寫的Neon代碼快10倍。

電話:010-50951355 傳真:010-50951352  郵箱:[email protected] ,;點擊查看區(qū)域負責(zé)人電話
手機:13811546370 / 13720091697 / 13720096040 / 13811548270 / 13811981522 / 18600440988 /13810279720 /13581546145

  • 暫無資料
  • 暫無資料
  • 暫無資料
  • 暫無資料
  • 暫無資料