UE高度雾性能分析

测试条件

机型系统
iPhone6sIOS 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宏或删除该部分

  • 保持体积雾开关关闭 (注意: 若是修改组件里体积雾开关配置, 实际使用的可能不是该配置)