[UnrealCircle北京]仙劍7的性能優(yōu)化經(jīng)驗與教訓 | 萬新琪

仙劍7性能優(yōu)化經(jīng)驗和教訓筆記
1.陰影
用比正常低一個級別的LOD來優(yōu)化陰影和光追。
可以關(guān)閉投影貢獻少的材質(zhì)部分的投影以及一些動態(tài)陰影,用CastShadow彌補。
看不到方向光的時候可以關(guān)閉方向光。
注意點:關(guān)閉動態(tài)陰影可能會丟失距離場效果,所以最好是使用固定光的場景。
2.半透明
看不見的半透明物體依舊會參與渲染造成性能浪費,可以通過DistanceCull、流關(guān)卡、程序邏輯優(yōu)化。
壓縮粒子頂點減少OverDraw。
3.內(nèi)存
將粗糙度、金屬、AO等貼圖放一張貼圖的RGB通道中,能夠減少紋理采樣次數(shù)、包體和內(nèi)存。
將貼圖尺寸減小。
合并相同物體成Instance能夠減少顯存壓力,但instance過多會造成巨大的CPU開銷,需要將其拆分到子關(guān)卡中。
4.管理不用區(qū)域不同的渲染參數(shù)
用藍圖腳本來管理CvaR,而不是寫入ini文件中。根據(jù)UI中的畫質(zhì)選項設置自動切換渲染參數(shù)。
每個區(qū)域的地圖都要有自己的參數(shù)配置,可以用觸發(fā)盒切換。
5.光追
盡量消除BVH重疊。
盡量提高BoundingBox的填充率。
BLAS:針對BVH的加速結(jié)構(gòu),用于儲存場景中每個物體的BVH,可以實現(xiàn)更高效的光效物體相交測試。
世界中空白空間過多時考慮拆分BLAS。
AABB(世界空間軸對齊邊界框)重疊較多考慮合并BLAS。
松散幾何體的Actor考慮從光追中剔除。
合并的Actors會使用一個非常大的BoundingBox,很容易扼殺性能。
SupportRayTracing標志可以非常方便的組織光追場景。
限制幾何體更新距離:r.RayTracing.DynamicGeometryLastRenderUpdateDistance。
仙劍7的物體加入光追與否表格

大量水面場景處理思路:
1.復雜模型移除光追
2.水面反射附近減少BVH復雜度過高的模型
3.性能達到目標后再添加
4.Instances Foliage的WPO物體應該和Evaluate WPO的靜態(tài)網(wǎng)格物體在光追中區(qū)別對待:在一定范圍內(nèi)才做光追計算。
光追材質(zhì)盡可能簡單。