国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介

這篇具有很好參考價(jià)值的文章主要介紹了Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

DOTS全稱是Data-Oriented Tech Stack,翻譯過來就是多線程式數(shù)據(jù)導(dǎo)向型技術(shù)堆棧(DOTS),它由任務(wù)系統(tǒng)(Job System)、實(shí)體組件系統(tǒng)(ECS)、Burst Compiler編譯器三部分組成。

ECS + JobSystem + BurstCompile = 高性能 + 多線程 + ?編譯層面優(yōu)化

DOTS保證相同類型組件在內(nèi)存中都是順序排列,極大程度增加緩存的命中率,此外配合任務(wù)系統(tǒng)(Job System)讓開發(fā)者無需頭疼多線程同時(shí)訪問數(shù)據(jù)需要手動(dòng)加解鎖的麻煩,最終加持Burst Compiler讓性能飛起來。

ECS、JobSystem、Burst,這三個(gè)組件是可以相互獨(dú)立使用,并不是說使用一個(gè)這三個(gè)必須同時(shí)用,你可以任意選擇其中一個(gè)來進(jìn)行使用,用于不同的應(yīng)用場(chǎng)景。

如果說我們需要使用JobSystem,其實(shí)它跟ECS沒有太大的關(guān)系,你可以在ECS里面用,也可以不在ECS里面用,只要是需要并行計(jì)算的地方都可以使用。

Burst也一樣,它也不需要配合ECS使用,不需要跟并行計(jì)算捆綁使用,它的作用僅僅是對(duì)于一些復(fù)雜的計(jì)算密集的東西去進(jìn)行編譯器優(yōu)化,來達(dá)到性能提升。

只要是計(jì)算密集型的東西,都可以使用Burst,同步方法也是可以的。

關(guān)于ECS,一個(gè)比較大的誤解,可能大家會(huì)覺得用ECS之后,所有東西都可以用ECS來寫,就會(huì)想U(xiǎn)I的業(yè)務(wù)邏輯怎么用ECS實(shí)現(xiàn)。大可不必,并不是說用ECS,所有東西全部都要用ECS來做,而是大家可以根據(jù)項(xiàng)目需求選擇其中適合那部分來用ECS去寫,剩下的部分還是使用傳統(tǒng)的面向?qū)ο蟮姆绞饺?,沒有任何問題,只要用代碼稍微結(jié)合一下就可以了。

在《黑暗之潮》當(dāng)中利用ECS的例子,我們通過ECS渲染了大量的怪物。我們游戲里面怪物通常有一個(gè)特點(diǎn),一組怪由幾名精英配合一兩種大量的存在的爪牙組成的,大家可以看到右面的圖只有三種怪,如果說用默認(rèn)的SkinMeshRenderer的話,就有一個(gè)非常嚴(yán)重的問題,沒有辦法合批了,畫面上面有多少個(gè)怪,有多少個(gè)DrawCall而且Animator開銷也不小,還有一個(gè)問題,GameObject為.Instantiate開銷也是比較大的,如果說我要同時(shí)刷出來三四十只怪的話,肯定會(huì)卡頓,用ECS就能比較好的解決這三個(gè)問題。
?

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介


使用ECS先把整個(gè)動(dòng)畫信息去烘焙到這么一張動(dòng)畫貼圖上面,在GPU當(dāng)中進(jìn)行蒙皮操作,我們?cè)偻ㄟ^JobSystem和Burst實(shí)現(xiàn)視錐剔除和動(dòng)畫系統(tǒng)的更新,最后我們?cè)僭诿嫦驅(qū)ο竽菈K業(yè)務(wù)邏輯那塊控制ECS Enity就可以了。也就是說ECS的部分,我們只是提供渲染的和動(dòng)作的結(jié)構(gòu),其他部分業(yè)務(wù)邏輯還是完全用面向?qū)ο笕?shí)現(xiàn)的,相當(dāng)于各取所長(zhǎng)。
?

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介


用ECS最大的好處就是性能。

首先第一個(gè),因?yàn)槲覀儾捎昧薌PU蒙皮,整個(gè)DrawCall的數(shù)量下降到有幾種怪就是幾個(gè)DrawCall,這個(gè)就非常好了。實(shí)例化也是非常快,ECS基本上就是無感的,在極端機(jī)上消耗,即便同時(shí)刷一千只怪也不足1毫秒,借助Burst力量類似于視錐剔除這些計(jì)算量比較大的操作,在低端機(jī)上也是可以忽略不計(jì)的。

大家可以看到下面的截圖,演示我們整個(gè)動(dòng)畫更新階段,也是同樣在驍龍450 SoC上測(cè)的,100只怪左右的情況,動(dòng)畫整個(gè)更新過程只用了0.008毫秒,這就是忽略不計(jì),根本不需要考慮的一個(gè)量級(jí)。通過ECS,我們畫面上怪物的渲染完全取決于GPU本身的渲染性能,CPU的開銷完全不需要去考慮了,所以也不會(huì)出現(xiàn)卡頓。
?

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介


第二個(gè),我們通過Jobsystem去實(shí)現(xiàn)了怪物擊飛的效果,大家可以看到這個(gè)怪物被打下懸崖,它如果說碰到墻壁必須要被墻壁擋下來,需要進(jìn)行一些物理運(yùn)算,如果直接使用Unity的Ragdoll也就是布娃娃系統(tǒng),它的物理計(jì)算非常復(fù)雜,對(duì)于低端機(jī)會(huì)造成比較大的性能負(fù)擔(dān)。我們把這個(gè)過程稍微簡(jiǎn)化了一下,所有的這些怪物在被擊飛的時(shí)候,使用的是預(yù)先制作好的動(dòng)畫,我們只需要計(jì)算它的運(yùn)行軌跡就行了。

我們首先用Job去并行計(jì)算這些怪物的分析軌跡,再通過Unity提供的多線程Raycast方法去進(jìn)行射線檢測(cè)來判斷它是否撞到墻或者碰到地面了。最后如果說我們還有一些非ECS了對(duì)象,我們可以在計(jì)算完畢之后再通過一個(gè)單獨(dú)的Job把這個(gè)所有GameObject的位置給同步一下就可以了。
?

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介


第三個(gè),我們通過Burst實(shí)現(xiàn)的就是射線技能,這個(gè)東西看上去很簡(jiǎn)單,實(shí)際上需要對(duì)整個(gè)場(chǎng)景以及所有的怪物和其他對(duì)象產(chǎn)生交互。射線打到墻上能夠?qū)崟r(shí)產(chǎn)生反映,我們這個(gè)東西需要每幀對(duì)整個(gè)場(chǎng)景進(jìn)行射線檢測(cè),整個(gè)計(jì)算過程實(shí)際上是開銷比較大的。通過Burst我們相當(dāng)于把這個(gè)東西做成了一個(gè)Job,通過Job.Run的方法去直接進(jìn)行調(diào)用,就是在當(dāng)前這個(gè)線程進(jìn)行的操作。

使用起來跟一個(gè)靜態(tài)方法沒有太大的差別,還有像大家看到的這個(gè)技能,會(huì)有大量的子彈,對(duì)這些子彈我們同樣需要進(jìn)行運(yùn)行軌跡的計(jì)算。通過Burst非常有效的把這兩個(gè)計(jì)算開銷降的非常低,Burst開啟之后,它的性能提升基本能上百倍,通過剛才也提到Job.Run的方式實(shí)現(xiàn)同步調(diào)用,我們?cè)谡麄€(gè)計(jì)算流程當(dāng)中不需要開額外的線程,直接在當(dāng)前線程,單個(gè)靜態(tài)方法直接調(diào)用就可以了,也是非常方便的。
?

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介


大家可以看一下開啟和不開啟Burst效果的差別,左邊是開啟,右邊是不開啟,我們?cè)谝粋€(gè)計(jì)算體系化模型工具中測(cè)試,左邊只用241毫秒,右邊用了20毫,真是一百倍的差別。而不是說它用了多線程所以更快,大家可以看到每個(gè)線程都快了100倍,如果算總耗時(shí),這邊用了143秒,這邊只用了1秒鐘,如果把所有線程的時(shí)間加起來,就是100倍的差別,效果非常明顯。
?

Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介

什么項(xiàng)目用Dots?

具有大量相同類型運(yùn)算的項(xiàng)目,例如RTS、SLG、我的世界類型方塊沙盒。

Dots這套解決方案,暫時(shí)只能對(duì)CPU進(jìn)行優(yōu)化,GPU方向期待Unity后續(xù)計(jì)劃。

Burst目前還是Preview,正式項(xiàng)目中使用可能會(huì)有很多坑 。

https://aladdin.blog.csdn.net/article/details/105081530

Unity DOTS技術(shù)淺析_IT善男信女鬼的博客-CSDN博客

[Unity 活動(dòng)]-Unity DOTS技術(shù)詳解 - 宣雨松_嗶哩嗶哩_bilibili

ILRuntime作者林若峰分享:次世代手游渲染怎么做 - GameRes游資網(wǎng)

[Unity 活動(dòng)]-游戲?qū)?chǎng)|Unity 2019 新特性在次時(shí)代手游 《黑暗之潮》中的應(yīng)用經(jīng)驗(yàn)及技術(shù)分享_嗶哩嗶哩_bilibili

Unity2019 Dots初試_Hello Captain-CSDN博客

Unity DOTS學(xué)習(xí)教程匯總_學(xué)無止境的專欄-CSDN博客

ECS的泛泛之談 - 知乎

一種類ECS設(shè)計(jì)范式的介紹 鏈接: https://pan.baidu.com/s/1hH3YwgPvB9m39_e3HzlAcA 提取碼: 5wwm??文章來源地址http://www.zghlxwxcb.cn/news/detail-407191.html

到了這里,關(guān)于Unity項(xiàng)目技術(shù)方案Dots架構(gòu)方案簡(jiǎn)介的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 2-Docker架構(gòu)和底層技術(shù)簡(jiǎn)介
  • Docker技術(shù)--Docker簡(jiǎn)介和架構(gòu)

    Docker技術(shù)--Docker簡(jiǎn)介和架構(gòu)

    1.Docker簡(jiǎn)介 ??(1).引入 ? ? ? ? 我們之前學(xué)習(xí)了EXSI,對(duì)于虛擬化技術(shù)有所了解,但是我們發(fā)現(xiàn)類似于EXSI這樣比較傳統(tǒng)的虛擬化技術(shù)是存在著一定的缺陷: 所占用的資源比較多 ,簡(jiǎn)單的說,就是你需要給每一個(gè)用戶提供一個(gè)操作平臺(tái),這一個(gè)操作平臺(tái)就會(huì)占用你的資源。這樣

    2024年02月10日
    瀏覽(16)
  • Unity Dots學(xué)習(xí)內(nèi)容記錄

    Unity Dots學(xué)習(xí)內(nèi)容記錄

    DOTS未來的潛力還是挺多的,目前已經(jīng)陸續(xù)有項(xiàng)目局部投入該技術(shù),追求硬件到軟件的極致性能。 主要是記錄下學(xué)習(xí)unity dots技術(shù)的過程吧。 DOTS全稱Data Oriented Tech Stack,面向數(shù)據(jù)的技術(shù)堆棧。 是由Unity的下面幾個(gè)技術(shù)棧組成 1.Entities(ECS,Entity-Component Data-System) 2.JobSytem(多線程作

    2024年04月15日
    瀏覽(28)
  • Unity 萬人尋路(dots版本)

    Unity 萬人尋路(dots版本)

    時(shí)間:2023-7-29 北京下雨,公司停電,回家早了,更新一下。 尋路模塊,還是前前后后,打磨了2個(gè)月,中間穿插著搞很多其他的功能,有些螺旋迭代的味道。 進(jìn)入正題: 設(shè)計(jì)團(tuán)隊(duì),會(huì)從游戲性角度考慮,提出很多需求。 1,單位之間的規(guī)避,模型不能穿插 2,建筑物規(guī)避,模

    2024年02月08日
    瀏覽(19)
  • Unity DOTS從原理到應(yīng)用

    什么是DOTS? Unity的DOTS(Data-Oriented Technology Stack)是一種數(shù)據(jù)驅(qū)動(dòng)的技術(shù)堆棧,旨在提高Unity游戲引擎的性能和可伸縮性。它使用C# Job System,Burst Compiler和Entity Component System(ECS)來組合和處理數(shù)據(jù),讓游戲運(yùn)行更高效率。DOTS使開發(fā)人員可以使用最新技術(shù)來開發(fā)游戲,并在追求

    2024年02月11日
    瀏覽(18)
  • Unity DOTS1.0安裝

    2023年6月10日更新: 2022.3 Entities1.0 manifest.json添加一句

    2024年02月15日
    瀏覽(15)
  • PLC原理及PLC+FPGA(SOC)架構(gòu)方案簡(jiǎn)介

    PLC原理及PLC+FPGA(SOC)架構(gòu)方案簡(jiǎn)介

    工業(yè)生產(chǎn)和科技的發(fā)展都離不開PLC的自動(dòng)化控制,PLC可以廣義的理解為: 集中的繼電器延伸控制柜,實(shí)際的生產(chǎn)應(yīng)用中,PLC大大的節(jié)省了工業(yè)控制的成本,加強(qiáng)了設(shè)備的集中管理和自動(dòng)控制。 PLC (Programmable Controller,可編程程序控制器)它是一個(gè)以微處理器 為核心的數(shù)字運(yùn)

    2024年02月10日
    瀏覽(25)
  • 項(xiàng)目架構(gòu)簡(jiǎn)介

    項(xiàng)目架構(gòu)簡(jiǎn)介

    目錄 1?單體應(yīng)用架構(gòu) ?2?垂直應(yīng)用架構(gòu) 3?分布式架構(gòu) 3.1 RPC 3.2 SOA 4 微服務(wù)架構(gòu) 本文介紹后臺(tái)應(yīng)用的各種架構(gòu),以及各架構(gòu)的優(yōu)缺點(diǎn)對(duì)比 ????????將所有的代碼功能都寫在一個(gè)項(xiàng)目中(例如:MVC結(jié)構(gòu),SSM框架),同時(shí)打包,同時(shí)部署 ? ? ? ? ????????優(yōu)點(diǎn):便于管理,減少開發(fā)、

    2024年02月13日
    瀏覽(15)
  • Unity DOTS Baking與Baker詳解

    Unity DOTS Baking與Baker詳解

    Unity DOTS Baking與Baker詳解 ??最近DOTS終于發(fā)布了正式的版本, 我們來分享一下DOTS里面Baking 與Baker的關(guān)鍵概念,方便大家上手學(xué)習(xí)掌握Unity DOTS開發(fā)。 ??Unity DOTS開發(fā)模式,為了讓大家在”創(chuàng)作”游戲的時(shí)候使用原來組件方式來編輯游戲場(chǎng)景與資源,同時(shí)Unity提供了一種Baking機(jī)制

    2024年04月17日
    瀏覽(23)
  • DOTS Unity.Physics物理引擎碰撞事件處理

    最近DOTS發(fā)布了正式的版本,同時(shí)基于DOTS的理念實(shí)現(xiàn)了一套高性能的物理引擎,今天我們給大家分享和介紹一下這個(gè)物理引擎的碰撞事件處理以及核心相關(guān)概念。 Unity.Physics 物理引擎的主要流程與P ipeline ? Unity.Physics物理引擎做仿真迭代計(jì)算的時(shí)候主要通過以下步驟來執(zhí)行: ??

    2024年01月18日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包