如何在虛幻引擎中優(yōu)化環(huán)境
本期內容:
如何在虛幻引擎中優(yōu)化環(huán)境,今天我們主要討論是關于延遲渲染管線,三角形開銷和著色器
性能優(yōu)化貫穿項目整個過程的東西,盡早設置性能指標經常檢查添加內容對性能影響
有專門的部門每天檢測性能,我們的QA部門每天都在地圖上他們要逐個設置攝像機,每次都使用完全相同的攝像機相同的變換相同的硬件,它們需要兩到三秒的平均幀時間。然后將其添加到報告中可能有20個攝像機,因為關卡很大我記得有一個洞穴,最長的運行時間是6毫秒9毫秒。我們的目標是每秒60幀即16.66毫秒一切都很順利
然后有一天它突然上升到25毫秒左右,因為我知道前一天它的運行時間是9毫秒。我知道是某個攝像機導致的問題,我找到我構建的那個攝像機對它運行圖片捕捉運用GPU分析工具,然后進入繪制調用弄清楚發(fā)生了什么結果發(fā)現(xiàn)Xbox One上有一個2080 x 2080的失真紋理。它是一個非常大的紋理上面有一個非常重的著色器,它是全屏的影響了屏幕上的每個像素,因為每天在檢測每個攝像機的性能。所以我們知道出了什么問題我們可以立即做出響應
這就引出了另一個問題你設置項目的方式有所不同我們用的是第一人稱攝像機攝像機在視平線正下方的位置我們不會在高空中俯瞰遠處所有的樹木
確定性能指標時務必保持一致
重要命令:stat FPS
我們看一下關于stat FPS 有兩個數字每秒幀數和毫秒數
你知道需要幾千個三角形來代表你的整個環(huán)境 因為你要在照明或后期處理上花費很多時間這由你來決定,所以我們將專注于環(huán)境并展示環(huán)境資產這意味著 我們的三角形數會非常非常多也許我們可以在其他不影響性能的地方彌補這一點

減少三角形數量與貼圖的大小,對于性能的另一個方面:后期處理,后處理材質進行優(yōu)化,并保存為一條指令。我不必運行屏幕上的每一個像素,但如果我擁有獨一無二的資產就像這塊石頭我不會專注于盡可能地優(yōu)化它
*陰影深度基本就是渲染所有的動態(tài)陰影我們有很多動態(tài)陰影,我經??吹竭@樣的問題,陰影在一段距離后消失或者離攝像機很近的陰影非常模糊。我該怎么辦?
這些都屬于層級陰影貼圖的范疇,這些基本上是從我們的角度從攝像機向前的角度渲染不同的陰影貼圖,它們可能是1024 2048之類的數字。然后層疊到一定的距離系統(tǒng)可以將第一個層級分解為X個單位,這些等于動態(tài)陰影距離
*定向光源:我知道它會投射陰影因為陽光在那里它應該投射陰影
有幾個地方需要注意:動態(tài)陰影距離是30000個單位,這意味著動態(tài)陰影一直延伸到距我們30000個單位距攝像機真的很遠(查看下我們場景物體距離攝像機距離)重點是我們要在不犧牲視覺質量的情況下提高性能,因為我知道不會真的看到那么遠的動態(tài)陰影,我們調小動態(tài)陰影的距離調整15000
根據我的經驗層級的數量比層級的大小或距離對性能的影響更大
Num dynamic shadow Cascades:3就是每一幀做三次陰影開銷會很大,但我使用高分辨率陰影一次開銷會很小
陰影延申到15000距離這時候就要用到距離場陰影,請記住當你為網格體生成距離場時這是一個項目設置所有靜態(tài)網格體都必須這樣,這里會有額外的內存負荷

還有一種情況就是級聯(lián)陰影,如果有一個柱子這個柱子離我們有十萬個單位遠則會選擇級聯(lián)陰影設置在這里

距離場陰影對我們的性能影響不大

接下來draw和三角形還有著色器

draw call:可將繪制調用視為擁有相同材質的相同幾何體,之所以說幾何體是因為頂點顏色是幾何體的一部分,這意味著如果有兩塊石頭它們是相同的靜態(tài)網格體資產。但對它們應用了不同的頂點著色,那么它們就是不同的繪制調用,所有這些都在同一個靜態(tài)網格體Actor中,我們還添加了動態(tài)網格體實例化它非常非常有用
stat RHI?調用draw call查看
我們看看如果執(zhí)行r.meshdrawcomman
完整版感興趣同學移步公眾號:Game藝視界? 重復內容不在排版了