六一的部落格


行百里者半九十




性能分析

  1. 看帧率

    如果120帧每秒,我们称作为满帧,那么绘制一帧约8.3ms。

    1stat fps


    或者



  2. 看一帧各线程耗时

    每一帧的耗时,取决于以下三者中开销最大的线程

    线程 说明
    Game 游戏逻辑
    Draw 渲染所需信息,由CPU传送给GPU;梳理要绘制的信息,剔除屏幕外的部分
    GPU 绘制耗时

    Game和Draw在CPU运行,GPU线程在GPU。如果Game和Draw开销过大,GPU等待CPU,会发生卡帧;

    如果GPU开销过大,无法即时接收Game和Draw的数据,并渲染画面,那么也会卡帧。

    与每帧耗时最接近的,就是绘制时耗时较大的。

    有时也会出现两个线程耗时都与每帧耗时接近,这时有可能是其中一个导致另一个耗时较长,需具体分析哪个是源头。

    1stat unit


    其中Prims是面数。摄像机朝天和看向其他地方的面数是不一样的。绿色就是ok的,红色不ok。


Game Thread

瓶颈常见于Tick和开销较大的逻辑实现。

如果Niagara使用CPU,也是一个消耗点。

查看tick耗时

1stat game

查看开启tick的Actor log

1dumpticks

可以使用Unreal Frontend Profiler和Unreal Insights进行分析


Draw Thread

  1. 剔除 Visibility Culling

    剔除耗时

    1stat initviews
  2. Draw Call次数


GPU Thread

  1. 顶点处理
  2. 着色

可以使用RenderDoc进行分析


RenderDoc


安装

  1. 安装软件

    RenderDoc

  2. RenderDoc插件默认已安装


  3. 设置

    需在项目设置插件栏设置RenderDoc安装目录;勾选 Auto attach on startup



使用

点击视口按钮或者 Alt-F12 来获取一帧中GPU开销信息


Ctrl-Shift-, 调出GPU Visualizer(若没有弹出,聚焦到保存那一栏之后再按键)



光照烘培

  1. 设置光照质量
  2. 构建灯光


构建场景中的静态光照 Static Lighting

通过预计算(Lightmass)生成光照贴图(Lightmap),适用于固定光源(如场景中的灯、窗户透光)。

优点​​:性能开销低,适合静态场景。

​缺点​​:无法实时更新,物体移动时光照不变。

与物体的可移动性(Static/Stationary/Movable)有关。

可移动性
Static 阴影不会改变
Stationary 可以改变阴影
Movable 光源可移动

会生成BuildData。


查看未构建灯光物体

运行时查看需烘培灯光Actor

1DumpUnbuiltLightInteractions

Lumen

实时全局光照


半透材质优化

半透材质因为叠加会导致较大开销

  1. 半透材质


  2. 优化点

    • Shading Model为Default Lit无用,可以改为Unlit

    • 不勾选Cast Ray Traced Shadows(开启开销很大)

    • 视情况,可以将Blend Mode改为 Additive

    • 考虑需要 Two Sided 勾选


Niagara粒子优化

由CPU改为GPU



抗锯齿

Anti-Aliasing

默认 Temporal Super-Resolution TSR , 对GPU有要求


改为MSAA,并设置采样频率(越小帧率提高越多)



时间超分辨率

Temporal Super Resolution TSR

用于提升渲染效率并改善画质。

简单来说,它利用前一帧的信息来生成分辨率更高的图像,从而在不显著增加性能开销的情况下,提供更清晰的画面。

TSR不仅提升分辨率,还具备抗锯齿功能。它通过分析多帧图像,智能地平滑边缘、减少锯齿,同时保持细节。

相比传统抗锯齿技术,TSR在提升画质的同时,性能开销更小。它通过复用前一帧数据,减少了实时渲染的负担。

时序上采样器


多重采样抗锯齿

Multisample Anti-Aliasing


参考资料


RenderDoc

虚幻5渲染编程(Tips)[RenderDoc not working in UnrealEngine5.2Preview]​

使用RenderDoc分析虚幻引擎画面

UE4渲染管线笔记(一)


调试命令

【性能优化】虚幻项目分析与调试指令


抗锯齿

TSR,FSR,DLSS超级分辨率的原理分析

【实时渲染/Unreal Engine】浅谈Anti-Aliasing抗锯齿

Self Shadow


虚幻引擎性能分析与优化



性能分析

  1. 看帧率

    如果120帧每秒,我们称作为满帧,那么绘制一帧约8.3ms。

    1stat fps


    或者



  2. 看一帧各线程耗时

    每一帧的耗时,取决于以下三者中开销最大的线程

    线程 说明
    Game 游戏逻辑
    Draw 渲染所需信息,由CPU传送给GPU;梳理要绘制的信息,剔除屏幕外的部分
    GPU 绘制耗时

    Game和Draw在CPU运行,GPU线程在GPU。如果Game和Draw开销过大,GPU等待CPU,会发生卡帧;

    如果GPU开销过大,无法即时接收Game和Draw的数据,并渲染画面,那么也会卡帧。

    与每帧耗时最接近的,就是绘制时耗时较大的。

    有时也会出现两个线程耗时都与每帧耗时接近,这时有可能是其中一个导致另一个耗时较长,需具体分析哪个是源头。

    1stat unit


    其中Prims是面数。摄像机朝天和看向其他地方的面数是不一样的。绿色就是ok的,红色不ok。


Game Thread

瓶颈常见于Tick和开销较大的逻辑实现。

如果Niagara使用CPU,也是一个消耗点。

查看tick耗时

1stat game

查看开启tick的Actor log

1dumpticks

可以使用Unreal Frontend Profiler和Unreal Insights进行分析


Draw Thread

  1. 剔除 Visibility Culling

    剔除耗时

    1stat initviews
  2. Draw Call次数


GPU Thread

  1. 顶点处理
  2. 着色

可以使用RenderDoc进行分析


RenderDoc


安装

  1. 安装软件

    RenderDoc

  2. RenderDoc插件默认已安装


  3. 设置

    需在项目设置插件栏设置RenderDoc安装目录;勾选 Auto attach on startup



使用

点击视口按钮或者 Alt-F12 来获取一帧中GPU开销信息


Ctrl-Shift-, 调出GPU Visualizer(若没有弹出,聚焦到保存那一栏之后再按键)



光照烘培

  1. 设置光照质量
  2. 构建灯光


构建场景中的静态光照 Static Lighting

通过预计算(Lightmass)生成光照贴图(Lightmap),适用于固定光源(如场景中的灯、窗户透光)。

优点​​:性能开销低,适合静态场景。

​缺点​​:无法实时更新,物体移动时光照不变。

与物体的可移动性(Static/Stationary/Movable)有关。

可移动性
Static 阴影不会改变
Stationary 可以改变阴影
Movable 光源可移动

会生成BuildData。


查看未构建灯光物体

运行时查看需烘培灯光Actor

1DumpUnbuiltLightInteractions

Lumen

实时全局光照


半透材质优化

半透材质因为叠加会导致较大开销

  1. 半透材质


  2. 优化点

    • Shading Model为Default Lit无用,可以改为Unlit

    • 不勾选Cast Ray Traced Shadows(开启开销很大)

    • 视情况,可以将Blend Mode改为 Additive

    • 考虑需要 Two Sided 勾选


Niagara粒子优化

由CPU改为GPU



抗锯齿

Anti-Aliasing

默认 Temporal Super-Resolution TSR , 对GPU有要求


改为MSAA,并设置采样频率(越小帧率提高越多)



时间超分辨率

Temporal Super Resolution TSR

用于提升渲染效率并改善画质。

简单来说,它利用前一帧的信息来生成分辨率更高的图像,从而在不显著增加性能开销的情况下,提供更清晰的画面。

TSR不仅提升分辨率,还具备抗锯齿功能。它通过分析多帧图像,智能地平滑边缘、减少锯齿,同时保持细节。

相比传统抗锯齿技术,TSR在提升画质的同时,性能开销更小。它通过复用前一帧数据,减少了实时渲染的负担。

时序上采样器


多重采样抗锯齿

Multisample Anti-Aliasing


参考资料


RenderDoc

虚幻5渲染编程(Tips)[RenderDoc not working in UnrealEngine5.2Preview]​

使用RenderDoc分析虚幻引擎画面

UE4渲染管线笔记(一)


调试命令

【性能优化】虚幻项目分析与调试指令


抗锯齿

TSR,FSR,DLSS超级分辨率的原理分析

【实时渲染/Unreal Engine】浅谈Anti-Aliasing抗锯齿

Self Shadow