[UE4]性能优化指南(美术向)
參考自官方文檔:
Performance Guidelines for Artists and Designers
https://docs.unrealengine.com/en-us/Engine/Performance/Guidelines
但是官方文檔寫的太粗燥,對(duì)UE4沒有一定了解,很難理解文檔的意圖。這里我在官方文檔的基礎(chǔ)上,結(jié)合自己遇到的問題,重新整理了一下,適合對(duì)UE4不熟的美術(shù)查閱。
以下是針對(duì)美術(shù)人員和關(guān)卡設(shè)計(jì)師的常規(guī)提升性能的指導(dǎo)意見
面向美術(shù)
- 盡量減少每個(gè)物體上的元件數(shù)量。比如概設(shè)美術(shù)在設(shè)計(jì)角色形象時(shí),有沒必要為了表現(xiàn)效果為角色加很多裝飾性部件,要把握好。如果是做靜幀動(dòng)畫沒什么問題,但若是實(shí)時(shí)渲染的游戲角色,要做取舍。
- 為了讓元件的三角面數(shù)更合理(比如每個(gè)元件的面數(shù)為300+),建議相關(guān)模型合并起來(lái)。比如,如果游戲沒有換裝需求,那么就將角色的帽子、肩甲等身體部件和身體合并,以減少面數(shù)。
- Opaque貼圖(不透明貼圖)速度最快,因?yàn)樗腪 buffer裁切速度最快;Masked貼圖(蒙版貼圖)稍微慢一點(diǎn);Translucent貼圖(半透明貼圖)最慢,因?yàn)槠湫阅芟木薮蟆?/li>
- 限制UV接縫數(shù)量和硬邊(Maya中叫軟硬邊、Max和Blender中叫光滑組)數(shù)量,因?yàn)檫@兩項(xiàng)會(huì)在硬件中生成大量頂點(diǎn)。最壞的情況,帶硬邊的高模會(huì)生成3倍于建模軟件統(tǒng)計(jì)的頂點(diǎn)數(shù)(比如:Maya中顯示模型頂點(diǎn)數(shù)為1萬(wàn),顯卡中實(shí)際計(jì)算的頂點(diǎn)數(shù)為3萬(wàn))。
- Skined Mesh(蒙皮網(wǎng)格物體)的頂點(diǎn)處理性能消耗比Static Mesh(靜態(tài)網(wǎng)格物體)的高。比如,一個(gè)建筑從地面升起的動(dòng)畫,這種只是整個(gè)模型坐標(biāo)的變化,就不要讓動(dòng)作美術(shù)去K動(dòng)畫,而應(yīng)該使用UE4的Timeline去控制StaticMesh的坐標(biāo)變化,以提升性能;再比如門打開關(guān)閉的動(dòng)畫,也不要手K,可以參考官方ContentExamples中的使用Timeline的做法。
- 當(dāng)使用了morph targets(比如表情動(dòng)畫)或者WorldPositionOffset(世界坐標(biāo)偏移),頂點(diǎn)處理的消耗會(huì)大大增加。因?yàn)橐鼍彺?#xff0c;貼圖的查找過程也會(huì)非常慢。
UE4材質(zhì)中的Morph Targets:
UE4材質(zhì)中的WorldPositionOffset:
- Tessellation(曲面細(xì)分)的性能消耗巨大(UE4提供了的運(yùn)行時(shí)曲面細(xì)分),盡量避免使用;Pre-tessellation(預(yù)處理曲面細(xì)分,就是手動(dòng)在建模軟件中做好細(xì)分曲面)通常速度更快。(現(xiàn)在的次世代流程大部分都是使用法線貼圖+低模,也有部分次世代游戲在使用曲面細(xì)分,比如PS4游戲《地平線:黎明時(shí)分》) UE4材質(zhì)中的Tessellation Multiplier(開啟方式:修改D3D11Tessellation Mode):
Maya中制作細(xì)分曲面流程
https://www.youtube.com/watch?v=L5fOwSmSaW8
- 非常大的物體建議拆成多塊,這樣可以更好的做視距裁切和燈光裁切
- 貼圖格式越小則材質(zhì)性能越好。比如:DXT1格式為4 bpp(每像素的比特位數(shù)),DXT5格式為8 bpp,未壓縮的ARGB為32 bpp。
對(duì)于有Alpha通道的貼圖,默認(rèn)的DXT1格式會(huì)壓縮過度,不支持Alpha通道,導(dǎo)致效果丟失,此時(shí)可以修改為低壓縮率的格式,比如:UserInterface2D(RGBA)
- 貼圖尺寸越小性能越好(當(dāng)貼圖近距離顯示時(shí))。有時(shí)更小的貼圖尺寸甚至更加平滑,作為雙線性過濾(bilinear filtering )時(shí),比貼圖格式能提供更多的著色器(shader)效果。
- 材質(zhì)減少著色器指令(shader instruction)和貼圖數(shù)量,運(yùn)行時(shí)的查找過程更快。為了優(yōu)化材質(zhì),可以使用UE4材質(zhì)編輯器中的stats統(tǒng)計(jì)(材質(zhì)編輯器頂部菜單)以及材質(zhì)復(fù)雜度(ShaderComplexity,運(yùn)行模式下F5,場(chǎng)景編輯模式下Alt + 8,綠色表示消耗極低,白色表示消耗極高)。
點(diǎn)擊Stats,查看貼圖采樣數(shù)、貼圖查找時(shí)長(zhǎng)等。
點(diǎn)擊Platform Stats,查看各個(gè)平臺(tái)的性能統(tǒng)計(jì)(桌面級(jí)、安卓、iOS等)
- 如果貼圖在很小的范圍內(nèi)還能看見(比如視線遠(yuǎn)處的模型LOD),則不要禁用紋理貼圖(Mip Maps),否則會(huì)由于貼圖緩存缺失而導(dǎo)致性能下降。
Mip Gen Settings 設(shè)置為 NoMipmaps表示禁用。
- 一些材質(zhì)藍(lán)圖的計(jì)算表達(dá)式比較耗,比如:sin、pow、cos、divide、Noise;消耗較低的計(jì)算表達(dá)式包括:multiply、add、subtract、clamp。
- 陰影模型(shading models,最常見的光照模型,游戲工業(yè)中用得多)的性能消耗標(biāo)準(zhǔn):無(wú)光的區(qū)域消耗最低,有光的區(qū)域是消耗較大,這也是最常見的區(qū)域。其他光照模型(比如照明模型Illumination models,電影工業(yè)的光照模型)的性能消耗更大。
?
面向關(guān)卡設(shè)計(jì)
- 限制Stationary(固定光源,不是靜態(tài)光源)和 Dynamic(動(dòng)態(tài)光源) 燈光的數(shù)量。
- 盡量避免使用區(qū)域光源(Area light)。4.20提供了區(qū)域光源 Rect Light。
- 對(duì)場(chǎng)景中較小的物體,編輯其屬性draw distance來(lái)獲得更佳的LOD裁切效果
確保LOD設(shè)置在一個(gè)激進(jìn)變化的范圍內(nèi)(比如攝像機(jī)從很近一下拉倒很遠(yuǎn),距離變化很小的不用做LOD),且LOD的定點(diǎn)數(shù)量變化倍數(shù)至少是兩倍。優(yōu)化時(shí),打開wireframe模式,然后查看是否存在大的色塊,如果有說明優(yōu)化有問題。如果使用Simplygon(一款商業(yè)付費(fèi)的UE4插件),幾分鐘就可以處理掉整個(gè)項(xiàng)目的LOD。
- 盡量將類似信息的光源合并。比如,車的頭燈可以用一個(gè)光源以及一個(gè)光照函數(shù)讓它看起來(lái)是兩個(gè)燈的效果。
- 靜態(tài)光照最快,固定光照稍慢一些,動(dòng)態(tài)光照最慢。
- 按照需要,盡量限制光照的衰減半徑以及光錐的角度。
- 動(dòng)態(tài)/固定點(diǎn)光源是最費(fèi)的。方向光源要稍好一些,最好的是聚光燈光源。陰影貼圖生成的性能開銷和造成物體陰影的光照視錐體(light frustum)有關(guān)。
- 光照函數(shù)具有額外的性能開銷(實(shí)際開銷取決于材質(zhì)),并能防止燈光被渲染成 Tiled Light。
- IES profiles 具有額外性能開銷(比光照函數(shù)好一些),并能防止燈光被渲染成 Tiled Light。但不要在可以用聚光燈光錐就能完成效果的情形下,還使用 IES。
- Billboards,imposter meshes,或 skybox textures 都能用來(lái)代替實(shí)際的幾何體物件并有效的提高性能。
- 好的關(guān)卡設(shè)計(jì)師能夠?qū)⒄诒尾眉艏{入考慮優(yōu)化關(guān)卡(添加一些阻擋視線的物件來(lái)提高性能)。使用 r.VisualizeOccludedPrimitives 可以直接查看。
控制臺(tái)命令開啟遮擋物件可視化:
- 避免使用 Light Propagation Volumes,如果要使用,使用 GIReplace 材質(zhì)表達(dá)式,或者在大部分物件上禁用它,以提升性能。
- 在不需要的地方應(yīng)該關(guān)閉陰影生成( shadow cast),一個(gè)個(gè)物件的關(guān)閉,或者一個(gè)個(gè)燈光來(lái)關(guān)閉。
- 在編輯器中使用 ProfileGPU(Ctrl + Shift + ,)快速了解信息以及哪部分比較慢。
- 貼花的性能開銷和它們覆蓋的像素?cái)?shù)量有關(guān)。
總結(jié)
以上是生活随笔為你收集整理的[UE4]性能优化指南(美术向)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广发银泰信用卡怎么提额?提额失败怎么办
- 下一篇: 内联汇编用法