mobile_vs_pc_opt_diff

1. 减少带宽和显存消耗

2. 减少渲染中 Pass 切换的数目来降低带宽

1. OpenGL ES 中使用 Framebuffer Fetch

2. Vulkan 使用 Subpass 来减少带宽

例如,延迟渲染中的 GBuffer 和 Lighting Pass 两个 Pass 如果执行了 EndPass,会将 On-Chip Memory Store 到系统内存中,下个 Pass 要 Load On-Chip Memory。通过 Subpass Load 将利用 Tile 中的数据计算。

3. 每一帧显式提交一个 Clear 减少 Tile Load

3. 带宽压缩

1. ASTC 贴图格式压缩,不同资源压缩比例不同 4×4 - 8×8

2. 降低 RT 精度

2. Early-Z、HSR 硬件像素剔除比较关键

  1. 半透明材质不受 HSR,存在 Overdraw
  2. Alpha Test 材质会破坏 HSR,所以放到不透明物体最后渲染

3. 实际项目优化示例

1. 洛克王国

https://www.bilibili.com/video/BV1XK1YB4EyJ/?spm_id_from=333.1391.0.0&vd_source=c41c590d451803fc1f5905563f54cbb3

1.1 Buffer 图像格式从 FP16 转为 RGB10A2 格式,减少了带宽开销

同时导致了以下图像问题:

1. 产生色阶

像素值接近 0 的区域导致的,通过开平方根的方法实现在 0 附近分配更多的空间。扩展思考也可以用抖动方式解决色阶。

2. HDR 功能失效,无法实现 Bloom

image-20260514092343580

通过编码解决。