渲染管线:从提交到像素

优化渲染之前先有地图。UE 的渲染管线大致是:

游戏线程(可见性判断、变换更新)
    ↓ 提交
渲染线程(剔除、排序、准备渲染命令)
    ↓ RHI 转换
GPU(阴影深度 → 基础通道 → 透明 → 后处理)

三处瓶颈的分工

在哪卡 工具 常见原因
渲染线程(CPU) stat render / Insights DrawCall 太多、剔除太重
GPU stat gpu / profilegpu 着色复杂、overdraw、纹理带宽
二者之间(RHI) stat rhi 状态切换、资源同步

渲染线程慢 ≠ GPU 慢:DrawCall 太多时 GPU 可能反而闲着(每帧都在等 CPU 提交命令)。stat unit 的 Draw 与 GPU 两行一眼区分。

视锥剔除与可见性

渲染线程每帧做"谁在镜头里"的判断:

  • 粗剔除(Bounds 相交)很便宜;
  • 精确剔除(逐三角形)很贵——这就是为什么要用 Bounds / 碰撞体近似而非实际几何做剔除;
  • stat scenerendering 的可见图元数是最直接的指标:同屏可见图元数超过六位数,渲染线程的开销就压不住了。

渲染线程优化的总思路

先减"提交的数量"(DrawCall、可见图元),再减"提交的质量"(阴影、材质、通道)。顺序反了会事倍功半。