一般有渲染執行緒的遊戲引擎其Object位置被改變時是怎麼更新的?

時間 2021-06-04 23:04:12

1樓:

首先,只有動態物體(會動的物體)才需要更新Transform。這樣的物體在遊戲當中其實數目是不多的,一般在同一幀裡面最多也就幾百個。

通過使用SIMD,CPU可以在數個時鐘週期當中就完成乙個4維浮點向量的計算。當代CPU的主頻都高達數G Hz,且為多核心。所以這幾百個Transform的計算對於CPU來說並不是很大的事情。

而且,以乙個4x4矩陣16個float也就是64byte計算,1000個矩陣也就64k,是基本可以完整放在L2快取記憶體裡面的。所以記憶體讀寫的延遲也不是很明顯。

對於有父子關係的Object,還可以只更新父節點的Transform,然後在Vertex 。也就是將一部分工作轉移到GPU來做。而GPU做這種事情則更快了。

當然,如果是在諸如Unity等深度封裝的指令碼當中,乙個乙個遍歷物件拿transform然後更新的話,這個代價就高很多了。代價高的原因並不是矩陣計算本身,而是物件的查詢。正是為了解決這個問題,出現了ECS等方法。

2樓:

幹了八年unity了,從來沒發現這方面會觸發任何效能瓶頸……

渲染的更新是在render上, render在攝像機裡才去找transform的位置。 不然只是記憶體裡的乙個資料, 不會跟渲染有什麼關係。

何況矩陣變換這種東西從計算機效能不足現在的百分之一局開始用了。 要多喪心病狂才能積累到觸發效能瓶頸的地步? 那樣是不是應該檢討下自己的製作流程是否有問題了……

3樓:realTOM

耗時確實比較大,所以在unity中:

1)計算全域性座標(CalculateGlobalMatrix())是在RendererUpdateManager::UpdateAll()中統一計算的,而且分成了多個job,平行計算

2)transform.SetParent()介面在某些情況下耗時很嚴重。盡量不要切換層級結構。

4樓:「已登出」

做了2個MMO手遊後發現Object級的父子關係是偽需求,完全可以特殊處理,不需要再Object層面來維持Transform父子關係。Unreal就不管這個,反倒是cocos2d和unity3d多有Object父子關係這種效能坑

5樓:夏澤業

假設你問的是unity,unity的每個節點渲染前,向上遞迴,直到父節點為空,算出全域性的transform,然後進行渲染。

確實很費時,所以不能巢狀的太深了。

用遊戲引擎即時演算製作一部電影和一般的CG電影製作方式相比哪個成本更高?

指尖的風 電影創作過程中的 你要什麼畫面我們就做什麼畫面,和遊戲的方式作出個世界然後再去虛擬世界取鏡頭的區別 1成本會比電影更大,更浪費資源 2藝術效果遊戲的跟電影比差得很遠 張曦 毫無疑問肯定是遊戲引擎做出來的更貴!因為這是乙個新方法新流程根本就沒人這麼幹過!先不說可行不可行,中間解決困難所花費得...

長相一般,能力一般,家境一般的學藝術有出路嗎?

藝術漂流RCA 題主,介於你目前的情況,不是特別建議你走藝考路線。因為從興趣的角度出發,藝術漂流RCA也沒有看出你由衷或者發自肺腑的熱愛 如果你決心想藝考,問題的關鍵點肯定把錢的問題前置,而不是講相貌與才華 說到錢,對的,是錢,藝術正常來說還真的窮不起,很多落魄的藝術家他們的作品被世人認可都是在很久...

不玩遊戲的男人一般有什麼愛好?

時間不浪費 不愛玩遊戲的男人其愛好多了去了,這裡就不一一枚舉了。這裡只想說一點的是,個人以為,直男癌會對遊戲沒有感覺,有個朋友就是這樣的,因為同理心水平偏低,不能很好的換位思考,因此沒辦法將自己代入其中。所以會玩不下去,覺得非常無趣。 歐皓辰吖 目前不玩遊戲,喜歡玩c4d,渲染,耳機,音響,吉他,健...