UE高度雾性能分析
测试条件
机型 | 系统 |
---|---|
iPhone6s | IOS 14.3 |
影响因子
移动平台的高度雾, 默认是Forward管线, 在BasePass上的Vert
阶段计算雾效, 如UE指数高度雾中分析, 因计算方法是固定的, 故而影响的因素比较单一.
- 场景几何复杂度
- 体积雾的开启或关闭
进而两个处理优化方向
- 计算方法优化
- 场景几何复杂度优化
注意: 移动平台使用高度雾需关闭 Disable vertex fogging on mobile shaders
开关, 如下图所示.
场景性能图
无雾效场景性能图
有雾效场景性能图
无雾效时BasePass各Pass耗时
有雾效时BasePass各Pass耗时
有雾效场景近似GPUTime(1.96ms)此时相比无雾效场景GPUTime(2.35ms)耗时更低,
还可考虑对计算方法进行优化
诸如pow
函数优化
雾效的计算多处使用了pow
函数, 可以优化之
通用实现
// Generalized Power Function
float pow(float x, float n)
{
return exp(log(x) * n);
}
优化后
// Spherical Gaussian Power Function
float pow(float x, float n)
{
n = n * 1.4427f + 1.4427f; // 1.4427f -> 1/ln(2)
return exp2(x*n-n);
}
UE指数高度雾部分删除部分中间方法
比如雾效的散射部分, 关闭
SUPPORT_FOG_DIRECTIONAL_LIGHT_INSCATTERING
宏或删除该部分保持体积雾开关关闭 (注意: 若是修改组件里体积雾开关配置, 实际使用的可能不是该配置)