全面分析UE4遊戲開發中的效能分析與優化

2021-10-06 13:51:18 字數 1327 閱讀 3566

遊戲效能優化是乙個非常重要的話題,在遊戲開發過程中,優化主要從三個方面入手,cpu端優化,資料傳輸過程和gpu端優化。

在遊戲效能遇到瓶頸時,首先要明確是誰拖了後腿,在cpu端還是gpu端,遊戲邏輯由cpu執行,如果是ue4藍圖或者c++**執行效率低,則是cpu端需要優化,如果是渲染速度慢,則需要gpu端進行優化,如果是cpu向gpu傳送指令過程慢,則說明要減少draw call(cpu向gpu傳送渲染指令數量)數量。

遊戲有「幀」的概念,

一幀的執行時間並不等於cpu渲染時間+cpu向gpu傳送渲染指令時間+gpu渲染時間,因為這三項是由三個執行緒執行的,基本等於其中耗時最長的那一項,因此只要降低耗時最長的一項,就能有效提公升幀速率。

由於上述三者之間執行由不同執行緒執行,但是只有cpu端處理完成後gpu才能進行渲染,因此有以下的執行順序:

在第0幀時什麼也沒做,第一幀時cpu處理邏輯,第二幀時cpu執行緒繼續處理邏輯,同時cpu開闢乙個執行緒向gpu傳送渲染指令(draw call),第三幀時gpu開始處理cpu第二幀傳送過來的資料,因此gpu每一幀處理的資料都是cpu前一幀傳送過來的資料,這樣就達到了看似順序執行的目的

cpu端主要處理的邏輯有動畫,物理,ai等

剛剛提到,cpu端主要處理邏輯,對效能影響最大的便是tick,如果在tick裡做複雜邏輯,就會使幀速率變低,因此能用事件觸發就用事件觸發,畢竟遊戲中大部分的邏輯都可以通過事件觸發,不必每一幀都去重新整理,如果必須在每一幀都重新整理,比如旋轉這種簡單的邏輯,可以嘗試使用shader實現。或者使用timeline是乙個很好的方案。

draw call對效能的大致影響如下:數百萬個頂點,大概3000次draw call,上萬次draw call,幀數已經慘不忍睹了。

資料傳輸就是draw call了,如果想減少draw call,可以選擇一下方案:

ue4的效能除錯工具,和unity的類似:

gpu端的優化主要就是簡化shader運算了,我做了以下總結:

UE4效能除錯分析常用方法

本文將介紹使用ue4開發專案常用到的效能分析的命令 ue4使用命令的方式是在遊戲執行的時候按 鍵就可以輸入命令了 顯示cpu和gpu端執行耗時命令 這裡frame是幀速率,game為遊戲邏輯耗時,draw為cpu向gpu傳送命令 draw call 用時,gpu為渲染耗時,之所以幀速率不是這三項的和...

UE4 虛幻4的網路適合開發什麼遊戲

使用虛幻4開發網路遊戲的兩種方式 一 虛幻4只做客戶端,伺服器端獨立開發,適用於任何網路遊戲 二 使用虛幻4同時開發客戶端和伺服器 使用虛幻4內建的伺服器 適用於一部分網路遊戲。如果使用虛幻4作為遊戲客戶端,最好也是要虛幻4的內建伺服器 這樣可以解決很多問題,同時節省很多巨大的工作量 自己開發伺服器...

UE4材質中的SphereMask

spheremask是個神奇的東東。看名字就知道大概什麼意思,球形遮罩。從演示中可以看出,當鏡頭距離越來越近時,材質開始發光。鏡頭邊遠時,材質發光變弱,直到完全不發光。spheremask有四個輸入引數。a 待檢查的位置。b 圓心的位置。radius 半徑。hardness 硬度,0是完整過渡,10...