apex-legends-mobile

性能优化挑战

  • 还原度

    • 场景复杂

    • Gameplay 复杂

  • 高帧率

    • 基础开销

    • 功耗控制

  • 适配性

    • 伸缩性

    • 基础消耗

场景渲染优化

间接光

image.png

阴影

image.png

物件和关卡

image.png

植被

image.png

MipBias : Mipmap 生成纹理时, 纹理减小比例的增大系数 MipBias 知乎

Unity 纹理压缩方案

静态合批

Hism 层级实例化静态合批

  • Hierarchical stattic instance batching

  • Drawcall and GPU

  • Scalability

  • LOD distance scale

为了防止 Batch 被不可见物体打断, 再加一个动态合批

image.png

动态合批

image.png

UE 的 GpuScene 需要依赖 Compute Shader, 顶点着色器采样 TextureBuffer

不使用 GpuScene, 更改使用 Uniform buffer 来存储 Primitive

Uniform 超过 2K 有兼容性的问题.

剔除

image.png

遮挡剔除

软光栅剔除

视锥剔除

基于格子的预缓存, 和分区

基于三角形簇的剔除管线

image.png
  1. 基于空间划分三角形簇

  2. 剔除三角形簇并减少三角形提交次数

image.png

场景渲染优化小结

image.png

RenderPass 优化

UE 的渲染流水

image.png

自定义的 HDR 渲染管线

image.png

Tonemapping 比较

使用拟合 Filmic 的 aces, 好处是通过公式计算得到,不需要多一个 LUT Pass, 还能使用 Filmic 的参数

image.png

自动曝光

分帧处理

image.png

小结

image.png

Lite HDR

在画 pass 到 backbuffer 的同时, 在 Subpass 画一堆画面的平铺点的到 Hdr Storage 的 Texture, 来计算总体屏幕亮度. 进行 ToneMapping 和自动曝光

image.png

用 Subpass 另外画 depth 到低像素纹理, 去渲染低精度特效

image.png

最后更新于

这有帮助吗?