
UE5 的功能越来越强但“强”背后是巨大的渲染开销。很多人遇到的问题是项目里开了 Lumen、虚拟阴影、高精度后处理帧率掉到 30 甚至更低于是第一反应是开 DLSS/FSR/TSR 这类超分辨率方案把帧率拉回来。那如果禁掉超分呢还能不能把帧率做到 3 倍这篇文章正面回应这个争议在 UE5 中不依赖超分辨率通过系统化的性能分析和渲染管线优化完全可以获得非常明显的帧率提升。注意这不是“无脑降低画质换帧率”而是先定位瓶颈再按收益排序裁剪不必要的渲染开销尽量保住画面观感和原生分辨率。文章会按“工具准备 - 瓶颈判断 - 项目设置优化 - 场景与材质优化 - CPU优化 - 数据验证”的顺序展开。无论你用的是 UE5.0 还是 UE5.4这套流程都适用。1. 核心能力速览能力项说明项目类型UE5 帧率性能优化方法论非具体插件适用引擎UE5.0 ~ UE5.4部分命令也兼容 UE5 后续版本核心目标不使用 DLSS/FSR/TSR/XeSS 等超分辨率重建实现帧率大幅提升优化维度渲染设置、光照方案、阴影、后处理、场景资源、材质、CPU 逻辑硬件门槛能正常打开 UE5 项目的电脑即可建议 DX12 显卡、16GB 内存是否需要超分否全程保持原生分辨率输出性能验证stat unit、stat gpu、Unreal Insights、日志脚本统计上手难度中等不需要改 C会调整项目设置和场景属性即可适合人群UE5 美术、技术策划、独立开发者、项目优化负责人这套流程的核心是“用数据说话”。优化前先用 Profiling 工具明确瓶颈再逐项调整。不靠猜不靠玄学。2. 适用场景与使用边界这套优化思路适合以下场景PC 或主机平台的 3D 游戏项目目标帧率是 60 FPS 或 120 FPS。建筑可视化、虚拟展厅、数字孪生等实时大屏漫游项目。场景中大范围使用动态光源、体积雾、Lumen 全局光照导致帧率偏低的项目。CPU 瓶颈明显、Draw Call 高、蓝图每帧计算过重的项目。不想依赖超分辨率重建担心画质变糊、动态细节丢失的团队。也有明确不合适的场景项目本来跑得很流畅只是某几个镜头短暂掉帧不需要全项目大改。项目必须开启 Lumen 和碰撞、破坏、物理模拟等动态效果且美术标准不接受任何妥协。显卡过老连引擎最低 DX11 要求都达不到那再优化也很难“3倍”。代码和资源处于快速迭代期每天都有大量临时 Actor这时候优化数据没有参考价值。关于“3倍帧率”的边界必须说得清楚一点。30 FPS 提升到 90 FPS 是 3 倍45 FPS 提升到 135 FPS 也是 3 倍。能不能做到取决于原始帧率卡在哪个瓶颈上。如果瓶颈是 GPU 后处理全开优化空间可能非常大如果瓶颈是一个不可绕过的循环逻辑那要先解决代码问题。因此本文的验证流程特别重要它帮你确认“这个 3 倍是不是真的可以通过某项优化达成”。还有一层边界是“心态”上的标题里提到“正面回应恶意开发者的攻击”最好的回应不是争辩而是把可复现的优化步骤和前后帧率数据贴出来。别人说不可能是别人的事你把自己项目里的帧时间曲线摆出来结论自然清楚。3. 环境准备与前置条件做性能优化前先确认基础环境。3.1 引擎版本推荐使用 UE5.3 或 UE5.4这两个版本对性能工具支持比较完整。UE5.0 和 UE5.1 也能用但部分渲染设置名称可能不同。建议在开始之前锁定项目使用的引擎版本避免升级引擎给优化数据带来干扰。3.2 系统与硬件操作系统Windows 10/11 64 位Linux 也可以但 Windows 下工具链最顺手。内存16GB 起步32GB 更稳。烘焙光照、捕获 Trace、跑编辑器同时开着内存占用会比较高。显卡支持 DX12 的显卡优先。优化过程中需要切换到 DX12 来做 GPU 性能分析。硬盘UE5 安装本身占用几十 GB项目再大一点更需要 SSD。编译器一般来说用引擎自带的二进制版本就可以了不需要装 Visual Studio。如果要从源码编译才需要 VS 2022 和对应的 Windows SDK。3.3 软件工具Epic Games Launcher安装对应版本的 UE5。一个测试工程新建第三人称或第一人称模板就能用来验证。Unreal Insights 是引擎自带的性能追踪工具通常位于Epic Games/UE_5.4/Engine/Binaries/Win64/UnrealInsights.exe3.4 环境检查清单在开始优化前按下面清单过一遍项目能正常打开展示场景。能使用 PIEPlay In Editor运行关卡。能通过命令行参数启动游戏窗口。能看到stat unit的输出。能打开 GPU Visualizer。如果以上任意一步失败先解决环境问题再谈优化。4. 启动方式与性能观察工具优化 UE5 性能不能只靠“目测”。下面这套启动和记录方式是整个流程的基础。4.1 使用命令行启动独立游戏进程在编辑器里按 Play 很方便但性能数据会和编辑器 UI 混在一起不够干净。建议用 Standalone Game 或直接通过命令行运行项目。命令行启动示例UE5安装目录/Engine/Binaries/Win64/UnrealEditor.exe 项目路径/你的项目.uproject -game -log -ExecCmdsstat unit -windowed -ResX1920 -ResY1080在 Windows 上路径写实际路径。-game表示以游戏模式启动-log会在窗口和日志中输出信息-ExecCmds用于启动时自动执行控制台命令-ResX和-ResY指定窗口分辨率。这样启动后屏幕上可以直接看到stat unit的实时帧时间信息。4.2 核心性能命令优化过程中最常用的命令控制台命令作用stat unit查看 Frame、Game、Draw、GPU 时间stat fps查看当前 FPSstat gpu查看各渲染阶段 GPU 耗时stat rhi查看 Draw Call 和 RHI 线程耗时stat scenerendering查看场景渲染相关数据profilegpu捕获一次 GPU Profilefreezerendering冻结渲染状态方便观察某帧每次打开项目顺手输入stat unit就可以判断当前帧率卡在 CPU 还是 GPU。4.3 使用 Unreal Insights 录制 TraceUnreal Insights 能提供更完整的帧率、耗时、线程分布数据。使用命令行启动时增加 Trace 参数UnrealEditor.exe 项目路径/你的项目.uproject -game -tracecpu,gpu,frame -tracefile路径/性能数据.utrace启动后跑一段固定路线退出后打开 UnrealInsights加载这个trace文件查看。这种方式的好处是数据可回溯别人质疑你的帧率结论时直接发 Trace 文件比吵架有用得多。4.4 固定测试路线性能对比最怕测试不一致。打开项目后先确定一条固定“跑图路线”例如固定相机位置和旋转角度。固定从 A 点走到 B 点时间固定。固定视角是否开启动态模糊。固定天气、时间、光照条件。后续每次修改配置都用同一路线重新跑结果才有可比性。5. 不用超分先确定瓶颈在哪很多项目卡帧不是 UE5 默认设置不行而是开发者不知道到底卡在哪。超分辨率方案之所以有效是因为它直接砍掉像素渲染压力让 GPU 负担大幅下降。但如果不打算用超分就必须做到“哪里贵优化哪里”。5.1 看懂stat unit启动项目后运行stat unit输出类似Frame: 28.0ms Game: 12.0ms Draw: 8.0ms GPU: 18.0ms这四项的含义Frame整帧所花时间FPS 1000 / Frame。Game游戏线程耗时包含蓝图、物理、AI、动画等。Draw渲染线程提交耗时Draw Call 主要在这里体现。GPUGPU 实际渲染耗时包括所有 Pass。判断瓶颈的方法很简单如果Game时间接近Frame说明 CPU 游戏线程是瓶颈。如果Draw时间高说明 Draw Call 或渲染线程提交压力大。如果GPU时间高说明 GPU 渲染负载重。如果Frame时间远大于三者可能存在线程等待同步问题。5.2 看懂stat gpuGPU 瓶颈时需要用stat gpu看具体是哪类 Pass 贵Total GPU Time: 18.0ms BasePass: 8.0ms Translucency: 2.0ms ShadowDepths: 3.0ms PostProcessing: 2.5ms ReflectionPass: 1.5ms常见的高开销来源BasePass高材质复杂、顶点数多、Overdraw 大。ShadowDepths高动态阴影太多阴影分辨率太高。ReflectionPass高Lumen Reflections 或 Screen Space Reflections 消耗大。PostProcessing高抗锯齿、泛光、景深、色调映射叠加。5.3 禁用超分前要先做的记录在动手改设置前先保存一组基准数据Frame: 28.0ms 约 35 FPS Game: 12.0ms Draw: 8.0ms GPU: 18.0ms然后把这一行数据记录到表格里。后面每改一项优化都单独记录一次不要连续改五六个设置然后再测那样你根本不知道是谁带来的提升。6. 项目级渲染设置优化UE5 默认开着非常重度的渲染特性。这里给出的是一套“保画面、压开销”的项目级调整顺序按收益从高到低排列。6.1 关闭 Lumen 或改用混合方案Lumen 是 UE5 的招牌动态全局光照但它的 GPU 开销在低中端设备上非常高。如果项目不需要动态日夜循环、动态光线反弹最简单的做法是将Project Settings - Global Illumination Method从Lumen改为None或使用光照烘焙贴图。在场景中放置Lightmass Importance Volume并烘焙光照。烘焙光照之后静态场景中依然可以得到不错的光照效果但 GPU 不再需要为实时 GI 计算买单帧率提升非常明显。如果美术场景必须保留 Lumen可以调节它的质量参数r.Lumen.Reflections.Allow1 r.Lumen.DynamicGlobalIllumination.Speed1 r.Lumen.ScreenProbeGather.RadianceCache1这些参数不可能让 Lumen 免费但可以降低部分开销。注意需要根据项目实际效果微调不要无脑照抄。6.2 降低阴影质量与阴影距离UE5 的动态阴影也很费 GPU。在项目设置中把Shadow Map Resolution和Dynamic Shadow Distance调低是最直接的手段。常用的控制台命令r.Shadow.MaxResolution1024 r.Shadow.DistanceScale0.6 r.Shadow.CSM.MaxCascades4MaxResolution从 2048 降到 1024远距离阴影锐度受影响但视角中近距离通常感知不强。DistanceScale决定动态阴影的生效距离调低后远处物体不再投射实时阴影这在大场景中能省下大量 Shader 复杂度。如果场景有很多小型植物围墙、碎石等物体强烈建议给它们关闭 Shadowsr.Shadow.CSM.TransitionScale0.5更好的做法是在静态网格体资产中把不需要投射阴影的物体设为Movable时关闭CastShadow或者使用Per-Object阴影控制。6.3 减少反射计算Lumen Reflections 和 Screen Space Reflections 都是资源大户。如果项目中有大量水面、玻璃和金属材质反射效果确实重要但如果反射只在少量材质上出现可以全局降低反射质量r.SSR.Quality0 r.SSR.HalfResSceneColor1 r.Lumen.Reflections.Allow0如果场景大量使用平坦地面和墙面改用静态Reflection Capture是比较划算的方案。在场景中放置数量合适的反射捕获球把反射烘焙进场景远看观感损失不大但 GPU 压力会小很多。很多项目反射开销高是因为“整个场景到处都在用镜面材质”而不是因为某个反射方案本身贵。先减少反射材质的面积再考虑方案切换。6.4 调整抗锯齿方案UE5 默认抗锯齿是 TAA效果不错但会引入模糊和拖影并且有额外 GPU 开销。如果不想用超分辨率重建但也不想用 TAA 的模糊可以考虑在项目设置里将抗锯齿方法改为TAA但配合更高分辨率这没必要。也可以改用FXAA或MSAA只适合部分场景。关闭 TAA 后画面边缘会闪烁需要靠材质和资源设计配合。常见控制台r.AntiAliasingMethod11对应 FXAA2对应 TAA。改成 FXAA 后GPU 压力降低画面变锐利但远处细节会有些噪点。如果项目的美术风格偏卡通、风格化FXAA 通常足够。6.5 精简后处理堆场景中如果放了一个很大范围的Post Process Volume里面 Bloom、Motion Blur、Depth of Field、Vignette、AO 全部开启GPU 开销会成倍增加。建议关闭Motion Blur帧率提升非常明显动态画面更清晰。将Bloom从标准降到低或者关闭。关闭Ambient Occlusion或换用浅层 AO。Depth of Field只保留在 UI 需要的镜头中不要在全局开启。不要小看这些后处理逐项关掉后PostProcessing时间能从 4ms 降到 1ms 以内在很多 GPU 上就是 10% 到 20% 的帧时间提升。6.6 体积雾与体积云如果场景没有特殊的云层、雾效需求直接关闭体积雾和体积云r.VolumetricFog0 r.VolumetricCloud0这两个特性对 GPU 的消耗非常夸张。去掉后天空和雾效退回到廉价模式低中端显卡会立刻轻松不少。对于大多数室内场景和半封闭地图关闭它们几乎不影响观感。7. 场景与资源优化项目级设置只是第一步很多帧率卡在场景资产本身。UE5 的“默认画面强”不代表“资产越多越好”。7.1 开启 Nanite如果适合的话Nanite 是 UE5 的虚拟化几何系统能有效降低大量静态网格体的顶点处理压力。如果你的目标是减少三角形开销Nanite 可以直接把极高面数的资产压到可控范围。使用条件静态网格体需要开启Support Nanite。材质需要满足 Nanite 的材质限制不能使用部分复杂效果。不适合变形、蒙皮骨骼网格体。在可用的地方开启 NaniteBasePass的负载会降低尤其是大量高模物体密集的场景。7.2 使用 LOD 让远处物体“变简单”如果某个物体不适合 Nanite那必须设置 LOD。UE5 会自动生成 LOD 吗不一定很多外包资源只有 Lod0。建议在静态网格体编辑器中使用自动生成 LOD 工具Mesh Settings - LOD Settings - Number of LODs设置合理的屏幕尺寸阈值让物体在远处切换到低模。这样 GPU 基 Pass 和 Draw Call 都会减少。7.3 减少 Draw CallDraw Call 过多会让渲染线程和 CPU 提交时间暴涨。减少 Draw Call 的方法将多个静态网格体合并为单一 Actor。使用 Hierarchical Instanced Static MeshHISM或 Instanced Static MeshISM大量相同物体时优先考虑。减少不同材质的数量同一种材质合并成一张图集。使用 Merge Actors 工具把多个小型物体合并。你可以用下面的命令查看 Draw Callstat RHI如果DrawCall数量高到几千上万那即使 GPU 渲染再快帧率也上不去。优化完场景后DrawCall 明显下降帧率一般会有直观改善。7.4 调整剔除距离UE5 默认的可见性剔除已经不错但对于大场景手动设置更合理的剔除距离能省大量开销。对静态网格体资源设置Distance Culling对体积、粒子、阴影设置单独的剔除距离。远处不可见的物体越早剔除GPU 和 CPU 的负担越低。如果项目场景很大还可以使用Level Streaming把地图切成多个子关卡按玩家位置动态加载。配合预计算可见性可以让渲染内容尽量接近“当前真是可见范围”。7.5 减少 OverdrawOverdraw 对 GPU 来说就是“同一个像素被画了多次”。多出现在半透明材质、粒子特效、大量植被叠加的场景。排查方式启用 Viewport 的Overdraw显示模式颜色越亮越严重。粒子数量过多时用 GPU Spawn 替代 CPU 发射。半透明排序复杂时考虑用不透明材质替代。Overdraw 高的项目GPU 时间会高到离谱哪怕场景面数很低也卡。这是很隐蔽的瓶颈。8. 材质与着色器优化UE5 的材质系统很灵活但灵活不等于免费。同一个材质不同写法性能差距可以很大。8.1 查看 Shader Complexity在 UE5 的材质编辑器中点击材质球的预览视口把 View Mode 切到Shader Complexity。颜色从绿到红红色说明该材质极贵。把画面中大面积出现的材质改到绿色是最直接的优化。尤其注意地面、墙面这类“填满屏幕”的材质它们的一点点开销都会被放大。8.2 减少纹理采样和数学运算材质蓝图中的Texture Sample数量、noise计算、Custom节点、复杂的Normal混合都会增加 GPU 负担。常见的省钱写法将多张纹理通道打包进 RGBA减少采样次数。把高频波函数换成简单的参数贴图。避免每帧在材质中做开方、倒数、多层嵌套运算。对于大面积基础材质目标是让 Shader Complexity 显示为绿色或浅绿。8.3 慎用 Masked 材质Masked混合模式会导致 GPU 多渲染一次用于裁剪透明区域。大量 Masked 材质叠加性能会明显下降。替代方案效果要求不高时使用Dithered Opacity。需要裁剪边缘很好看时尽量限制 Masked 材质的使用面积。8.4 合并材质参数和材质实例使用大量材质实例本身不一定会拖慢 GPU但如果每棵树、每块石头都单独搞材质实例管理成本高Draw Call 也可能分裂。尽量让同类模型共用一个材质实例只在实例里调整参数。材质优化的原则很简单越接近纯颜色/纯贴图越好越接近数学运算的“实时复杂效果”越贵。9. CPU / GameThread 优化很多项目 GPU 优化了一大轮帧率依然上不去。这时候要看Game时间。9.1 Tick 优化蓝图中最常见的坑是“每个 Actor 每帧 Tick 都做一堆事”。优化思路不需要每帧检测的事件使用Timer或事件触发。将 AI 检测、导航寻路改为低频检测。禁用不需要运行的 Tick。在 Actor 属性中关闭Start with Tick Enabled。使用Actor Set Tick Interval把高频 Tick 改成 0.1 秒甚至更低。大量 Actor 同时 Tick 是 CPU 杀手。可以用命令行看看stat Game如果Game时间高再用 Unreal Insights 查看 Game Thread 上具体是哪些函数消耗大。9.2 减少蓝图节点开销蓝图节点越多性能越差。常见的高消耗节点Get Actor Location / Rotation每帧调用多次。Line Trace每帧都跑。Spawn Actor高频执行。For Each Loop遍历大量 Actor。优化方法是缓存数据、减少循环、合并事件。更彻底的做法是把高频逻辑从蓝图搬到 C但那是后话。先改掉蓝图中的明显冗余。9.3 AI 与角色动画大量 AI 角色同时对玩家做视线检测CPU 会爆炸。建议增加 AI 感知帧间隔。降低 NavMesh 更新频率。减少同时更新的 Character Movement 数量。动画蓝图尽量简化状态机骨骼网格体数量多时使用动画 LOD。9.4 多线程与异步UE5 支持通过AsyncTask把耗时计算丢到后台线程。如果某些数据生成、物理查询、IO 不是必须由 GameThread 同步等待可以改成异步。不过这是一个相对进阶的操作通常在普通项目里不做。优先保证蓝图、Tick、AI 没有冗余然后才考虑多线程。10. 验证 3 倍帧率的实操流程前面优化做了一堆到底提升了多少这里给出一套可复现的验证流程。10.1 保存优化前基准优化前用固定路线跑 60 秒记录平均帧时间和关键耗时。如果希望用一个脚本从 UE5 日志里提取帧时间可以打开日志输出然后保存为trace_test.log。日志中stat unit会输出类似Frame: 28.0ms Game: 12.0ms Draw: 8.0ms GPU: 18.0ms写一个简单的 Python 脚本提取 Frame 并计算平均 FPSimport re frame_times [] pattern re.compile(rFrame:\s([\d.])ms) with open(trace_test.log, r, encodingutf-8) as f: for line in f: match pattern.search(line) if match: frame_times.append(float(match.group(1))) if frame_times: avg_frame_ms sum(frame_times) / len(frame_times) avg_fps 1000.0 / avg_frame_ms print(f平均帧时间: {avg_frame_ms:.2f} ms) print(f平均FPS: {avg_fps:.2f}) else: print(没有提取到Frame数据请确认日志格式)这个脚本比较粗糙但能快速给你一张“平均帧时间变化表”。要注意日志帧率数据如果用编辑器运行可能含编辑器 UI 开销建议使用命令行游戏模式。10.2 分阶段对比不要一次改完全部设置再测。建议这样操作阶段改动内容Frame 平均基准默认设置28.0ms阶段 1关闭 Lumen烘焙光照下降到 18ms阶段 2关体积雾/体积云下降到 15ms阶段 3降阴影距离下降到 11ms阶段 4关闭后处理和动态模糊下降到 9ms阶段 5场景 DrawCall 优化下降到 8ms如果基准 Frame 是 28ms优化到 9ms确实接近 3 倍帧率。这就是数据回应的方式。10.3 观察 1% Low平均 FPS 高不代表体验流畅。最好同时记录 1% Low 帧率。Unreal Insights 里可以直接看帧率分布也可以从日志中取所有 Frame 时间排序后取最低 1%。在 Python 脚本里加一点排序逻辑sorted_frames sorted(frame_times) percentile sorted_frames[max(0, int(len(sorted_frames) * 0.01) - 1)] print(f1% Low 帧时间: {percentile:.2f} ms) print(f1% Low 帧率: {1000.0 / percentile:.2f} FPS)如果优化后平均帧率提升但 1% Low 依然很差说明存在卡顿尖峰可能是加载、GC、或者某个瞬间很贵的特效触发。需要继续排查突然的峰值。10.4 判断优化是否成功判断标准不是“画面看起来流畅了”而是Frame平均时间明显下降。Game、Draw、GPU中关键瓶颈项下降。同一场景、同一路线视觉质量没有出现大面积不可接受的降低。1% Low 帧率没有明显恶化。如果满足这些条件那“不用超分实现 3 倍帧率”就不是口号而是可复现的结果。11. 资源占用与性能观察优化帧率的过程中显卡显存、CPU 占用、内存占用也要一并观察。11.1 观察显存和 GPU 占用使用 GPU-Z 或任务管理器查看显卡占用率、显存占用。如果 GPU 占用率 99%说明 GPU 是瓶颈继续优化渲染相关设置。如果 GPU 占用率只有 60%但 FPS 低说明 CPU 或内存带宽有瓶颈。显存不够时纹理可能被频繁换入换出造成卡顿。11.2 CPU 占用在任务管理器里看 CPU 主线程核心占用。UE5 是并行化的但游戏线程瓶颈会导致很多核心空闲。此时优化蓝图和 Tick 比继续压 GPU 更有效。11.3 降低显存占用的手段纹理流送距离控制r.Streaming.PoolSize。降低阴影贴图分辨率。减少渲染目标尺寸避免超大Render Target。用Texture Streaming后注意观察纹理池是否爆掉。11.4 避免端口冲突和进程残留UE5 性能分析时不要开太多后台进程。UnrealInsights 本身也会占资源。测试结束后一定要关闭游戏进程否则下一次启动端口、文件锁都会有隐患。12. 常见问题与排查方法问题现象可能原因排查方式解决方案stat unit显示 Game 时间极高蓝图 Tick 或 AI 逻辑过重Unreal Insights 查 Game Thread改低频 Tick合并函数缓存结果GPU 时间高但不知道贵在哪个 Pass没开 GPU Profile执行profilegpu或 Unreal Insights按stat gpu结果逐项优化关闭 Lumen 后画面明显变暗场景没有烘焙光照检查 Lightmass 体积添加 Lightmass Importance Volume 并烘焙阴影闪烁或远处阴影缺失动态阴影距离调太狠降低距离缩放值在画质和性能之间找平衡点关闭 TAA 后边缘闪烁严重抗锯齿方式切换不当查看场景材质和植被尝试 FXAA 或保持 TAADraw Call 数很高大量独立静态网格stat RHI查看合并网格使用 HISM/ISM优化后平均 FPS 提升但卡顿1% Low 帧率差分析 Trace 尖峰检查加载/GC/特效瞬发性能数据不稳定后台进程干扰关闭多余程序固定测试环境和路线波动大编辑器运行叠加 UI用命令行-game模式使用 Standalone 运行13. 最佳实践与建议每一步改动都单独记录不要一次改多个变量。性能优化最怕无法复现。固定一条测试路线和测试时间不要随手乱跑。性能目标写清楚GPU 成本预算多少、Game 线程预算多少、DrawCall 上限多少。场景和资源迭代很快优化完后的数据要经常重新跑一遍防止回归。不要盲目照搬网上参数每个项目的画面标准、场景复杂度、目标平台都不一样。保留一套“最小可运行配置”当项目被改废时能快速回退。使用版本管理工具记录项目设置文件的变更历史方便对比。如果有 C 能力优先将高频逻辑从蓝图移到 C收益比调渲染参数更稳定。14. 总结与下一步UE5 里不用超分辨率确实可以把帧率推到 3 倍前提是系统优化而不是“关几个勾选项”就完事。核心思路是先通过stat unit、Unreal Insights 定位瓶颈再按 GPU、场景、材质、CPU 分类逐项优化最后用固定路线数据验证结果。这篇文章最值得你尝试的就是第 6 章和第 7 章项目级渲染设置 场景资源控制。多数项目的帧率瓶颈就藏在 Lumen、动态阴影、体积雾、Draw Call 和过度后处理里。最容易踩的坑是一口气把所有画质降到最低然后发现画面已经没法看帧率也没翻倍。正确做法是一步步调每步都保留对比数据。下一步你可以做几件事打开自己的项目跑一次stat unit先确认瓶颈类型。用 10 分钟按第 6 章的设置选项过一轮看 GPU 时间下降多少。再用 Python 脚本提取帧时间建立自己项目的性能基线。帧率优化不是一次性工作应该成为项目迭代中的常规环节。等你把基础渲染开销压下来之后再考虑未来项目是否引入超分方案作为锦上添花那时心态会完全不一样。