3DGS 性能参数逐项说明
本篇逐项说明每个参数的作用、取值以及调整后的实际效果,用于查阅单个参数的含义。按步骤定位瓶颈并调优的流程参考性能优化指南。
每个参数标题下的表格给出所在分组、取值范围、默认值、适用管线与生效方式。适用管线为「LCC」或「LCC2」时表示该参数只在对应管线上生效,标为「通用」的两条管线都可用。管线概念参考介绍。
Actor 面板参数
位于 Actor 的 Details 面板 Performance 分类,按适用范围分组:
- Base 组:两条管线通用,所有 LCC Actor 都有这一组
- 管线专有组:只在对应管线的 Actor 上显示,组名即管线名。当前版本只有 LCC 管线有专有组(组名 LCC),LCC2 管线的 Actor 只显示 Base 组

Base 组:两条管线通用的性能参数

LCC 组:仅 LCC 管线的 Actor 显示这一组
注:Performance 分类下每个参数左侧都有一个勾选框。不勾选时该参数使用插件内置默认值,填写的数值不会生效。调整没有效果时,先确认勾选框已勾上。
Max Distance
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 任意正整数 | 300 | 通用 | 立即 |
最大渲染距离,单位米。超出该距离的节点不参与渲染,也不会被加载。这是收益最直接的参数,调小后遍历、加载、上传、渲染的成本同时下降。
调小可显著提升帧率并降低内存与显存占用,代价是远处内容消失,边界处出现明显截断。需要与 Range For Level 一起看:若最大距离小于某个 Level 对应的距离,该 Level 及更远的层级不会被使用。
Max Splat Num
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 0 ~ 10000(单位:万) | 3000 | 通用 | 立即 |
每帧最大渲染点数。遍历结束后按距离由远及近剔除,直到总点数落到该上限内。它是一道硬性闸门,无论视野里有多少内容,单帧渲染量都不会超过这个值。
调小可锁定帧率上限、避免视野开阔时掉帧,代价是远处节点被丢弃,转动视角时可能看到远景缺失。填入过大的值会被自动限制到单帧实际可渲染的上限。
Level Factor
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 0.01 ~ 20 | 1 | 通用 | 立即 |
Level 选择的缩放系数,控制「多远开始降精度」。两条管线的实现机制不同:LCC 管线用它缩放全局的 Range For Level 距离表,LCC2 管线用它缩放屏幕空间误差阈值,效果方向一致。
大于 1 时更早切换到低精度层级,细节减少、性能提升;小于 1 时更晚降精度,画面更清晰但成本上升。建议保持 1,确有性能压力时小步上调。
Start Level
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 0 ~ 20 | 0 | 通用 | 立即 |
起始 Level,限定可使用的最高精度。默认 0 表示允许用到精度最高的层级。
设为 1 或更大时,即使贴近观察也不会加载最精细的层级,近处画面变模糊,但加载量和显存占用明显下降。低端设备或移动端可考虑上调。
End Level
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 0 ~ 20 | 20 | 通用 | 立即 |
结束 Level,限定可使用的最粗层级。默认 20 表示不做限制,实际能用到数据本身的最粗一级。
调小后即使数据里有更粗的层级也不会被使用,远处只能停留在 EndLevel 这一级。画面不会出现空缺,但渲染的点数比实际需要的更多,性能反而下降。因此它不是提速手段,通常保持默认 20。
Max Load Collision Distance
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 任意正整数 | 300 | 通用 | 立即 |
碰撞数据的最大加载距离,单位米。仅在启用碰撞后生效。
两条管线的碰撞数据都是分块加载:只加载相机周围该距离内的碰撞块,并随相机移动动态换入换出。因此这个值决定了任一时刻常驻的碰撞数据量。
调小可直接降低 Collision Data Usage 内存占用与 Update Collision 耗时,代价是远处没有碰撞。
配合寻路系统使用时通常需要调大,让目标区域的碰撞一次性全部加载完成。否则运行时碰撞随相机移动不断更新,会持续触发导航数据重新构建,造成明显卡顿。详见寻路系统支持。
Use Full Load
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 开启 / 关闭 | 开启 | 通用 | 重新加载数据 |
是否允许全量渲染。开启时,若 Level 0 点数不超过 Full Load Splat Number,整份数据一次性加载并常驻显存,跳过每帧的遍历与上传;否则回退为按需加载。
开启后小场景的帧率更稳、无节点边界与细节跳变,代价是整份数据常驻显存。关闭则始终按需加载。
两条管线关闭后的显存表现不同:
- LCC 管线按节点各自分配显存,占用随可见范围变化
- LCC2 管线的显存 buffer 按预算预先分配,占用不随可见范围变化,改变的只是 buffer 内实际填充的数据量
详见渲染。
Full Load Splat Number
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Base | 任意正整数(单位:万) | 1500 | 通用 | 重新加载数据 |
允许全量渲染的 Level 0 点数上限。
调大可让更大的场景走全量渲染,需确认显存足够;调小则更多场景回退为按需加载。
Sort Factor
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| LCC | 0.2 ~ 5 | 1 | 仅 LCC | 立即 |
排序频率的缩放系数,作用于全局的 Sort Frequency For Level 表,控制各 Level 的节点多久重新排序一次。
调大则排序次数减少、性能提升,但视角变化时半透叠加顺序更新滞后,可能出现短暂的穿插错误;调小则排序更及时、成本更高。建议保持 1。
Add Extra Preload Nodes
| 分组 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| LCC | 开启 / 关闭 | 开启 | 仅 LCC | 立即 |
是否向加载队列追加额外的预加载节点。开启时会预加载视锥边缘之外的一部分节点。
开启可缓解快速转动视角时屏幕边缘的空洞,代价是需要渲染的节点数增加;关闭则节点数更少,但快速转动时更容易看到边缘空缺。
ProjectSettings 全局配置
位于 ProjectSettings > Plugins > LCC4Unreal。这些设置对场景中所有 LCC Actor 生效,无法按 Actor 单独配置。

在 ProjectSettings 中配置 LCC4Unreal 全局参数
Language
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| General | Follow Editor / Always English | Follow Editor | 通用 | 立即 |
插件界面语言。Follow Editor 跟随编辑器语言设置,Always English 强制英文。详见本地化。
AutoExposure Enable
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| LCC | 开启 / 关闭 | 关闭 | 通用 | 需重启编辑器 |
是否启用自动曝光。默认关闭,因为自动曝光会让 3DGS 的亮度随视野内容波动。开启后画面亮度会随相机移动自动调整。
SceneCaptureComponent Support
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| LCC | 开启 / 关闭 | 开启 | 仅 LCC | 立即 |
是否支持 SceneCapture 渲染 LCC 内容。
开启后 SceneCapture 中能看到 3DGS,代价是每个 Capture 算作一个独立视角,会增加遍历开销。项目不使用 SceneCapture 时关闭可省下这部分成本。
SingleLayerWater Support
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| LCC | 开启 / 关闭 | 关闭 | 仅 LCC2 | 需重启编辑器 |
3DGS 被单层水材质遮挡时启用。
开启后水面能正确显示 3DGS,代价是水面像素失去虚拟阴影贴图的阴影质量。该项会向项目的 DefaultEngine.ini 写入 r.Water.SingleLayer.DepthPrepass。详见单层水支持。
Splat Number For Discard Per Node
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| LCC | 任意正整数 | 5 | 仅 LCC | 重新加载数据 |
节点内点数低于此值时丢弃该节点的数据,在解析 index.bin 构建节点时判定。部分数据存在大量只含一两个点的碎节点,这些节点的调度开销远高于其渲染价值。
调大可减少节点总数、降低遍历与加载开销,代价是丢弃的点变多,稀疏区域可能出现缺失。
抗锯齿方法
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| AntiAliasing | 引擎支持的抗锯齿方法 | 见下表 | 通用 | 立即 |
抗锯齿用于消除物体边缘的阶梯状锯齿。常规网格有明确的几何边缘,锯齿明显,需要抗锯齿处理;3DGS 由大量半透明 splat 叠加而成,边缘本身就是渐变的,锯齿并不明显。
四个设置分别对应两条管线的 3DGS 与点云模式,在启用 Actor 上的 bAffectAntiAliasingMethod 后由插件自动应用。
| 设置 | 默认值 | 适用 |
|---|---|---|
| LCC1 Splat Anti-aliasing Method | FXAA | LCC 管线 3DGS 模式(无深度) |
| LCC2 Splat Anti-aliasing Method | TSR | LCC2 管线 3DGS 模式(有深度) |
| LCC1 Point Cloud Anti-aliasing Method | MSAA | LCC 管线点云模式 |
| LCC2 Point Cloud Anti-aliasing Method | TSR | LCC2 管线点云模式 |
LCC 管线默认不用 TSR / TAA,是因为缺少深度信息时这两种方法在相机移动时会产生重影。
抗锯齿的 GPU 成本不低,TSR 尤其明显。场景中只有 3DGS、没有常规网格时,可以把对应设置改为 None 关闭抗锯齿,通常画质损失很小而帧率收益可观。场景中混有常规模型、UI 或线框时,关闭会让这些内容的边缘出现明显锯齿。
各方法的实际成本差异需用 ProfileGPU 在目标场景上实测,不同分辨率与硬件下差距较大。
注:两条管线的 Actor 同时存在于场景时,最终生效的方法取决于执行顺序,需手动配置为一致,详见画面调节。
Enable Post Process
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Rendering | 开启 / 关闭 | 开启 | 通用 | 立即 |
LCC 像素是否参与引擎后处理管线。
开启时 3DGS 与场景中常规物体一同接受色调映射、Bloom、曝光等后处理,观感统一;关闭时 3DGS 保持原始色彩,不受色调映射及其之后的环节影响。关闭需引擎开启 Alpha 通道输出。详见画面调节。
Apply Tonemap Inverse
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Rendering | 开启 / 关闭 | 关闭 | 通用 | 立即 |
是否在色彩空间转换时应用 FilmToneMapInverse。
开启后预先抵消引擎的色调映射,使最终画面还原数据原本的对比度与色彩;关闭则 3DGS 与常规物体走同一套色调映射。
Quad Extent Threshold
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Rendering | 0.001 ~ 0.1 | 0.006 | 仅 LCC2 | 立即 |
控制 splat 四边形自高斯中心向外延展的距离。每个 splat 都要栅格化成一个四边形,四边形越大,被覆盖的像素越多。
调大使四边形更紧凑、overdraw 减少、像素填充成本下降,但可能裁掉半透明 splat 的边缘,表现为轮廓变硬或边缘缺失;调小则边缘更完整、填充成本上升。
Small Splat Threshold
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Rendering | 0.0 ~ 4.0 | 0(关闭) | 仅 LCC2 | 立即 |
屏幕尺寸小于此像素值的 splat 折叠为单个像素并跳过 SH 计算。
调大可跳过大量远处细小 splat 的着色计算,GPU 成本下降明显;代价是远景失去视角相关的颜色变化,可能出现颗粒感或轻微闪烁。
Frustum Cull Margin
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Rendering | 1.0 ~ 2.0 | 1.2 | 仅 LCC2 | 立即 |
逐 splat 视锥裁剪的边距系数。
大于 1.0 时视锥向外扩展,避免屏幕边缘的 splat 在相机转动时突然弹出;值越大保留的边缘 splat 越多、成本略高。设为 1.0 则严格按视锥裁剪,边缘可能出现弹出感。
Max CPU Usage Percetage For Free
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Usage | 50 ~ 100 | 90 | 通用 | 立即 |
内存占用达到该比例时触发节点释放。
调低会更早开始释放,内存占用更保守,但换入换出更频繁;调高则占用更多内存,接近系统上限时有崩溃风险。
CPU Release Percetage
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Usage | 10 ~ 100 | 30 | 通用 | 立即 |
每次触发释放时清理的数据比例。
调大单次释放更多、触发次数更少,但被释放的数据需要重新加载,容易造成一次性卡顿。不建议设为 100。
Max GPU Usage Percetage For Free
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Usage | 50 ~ 100 | 80 | 通用 | 立即 |
显存占用达到该比例时触发释放。释放时按最后渲染时间、访问频率、数据大小与 Level 综合排序,优先释放最久未使用的节点,高 Level 节点受保护。
调低更安全:超出显卡可用显存后,驱动会把数据交换到系统内存,帧率下降比换入换出严重得多。
GPU Release Percetage
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Usage | 10 ~ 100 | 30 | 通用 | 立即 |
每次触发时释放的显存数据比例。判断依据同 CPU Release Percetage。
LCC2 GPU Memory Budget
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Usage | 2048 ~ 8192 | 2048 | 仅 LCC2 | 需重启编辑器 |
单个模型 splat 数据的显存预算。排序 buffer 不计入该预算,每个视角的每个常驻 splat 额外占 16 字节。
调大可让更多数据同时常驻显存,减少换入换出导致的空洞与模糊;但预算只是插件申请的上限,超出显卡实际可用显存后反而更慢。单文件格式的可加载量在 4096 MB 时已达上限,继续调高无效。详见渲染。
Range For Level
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Level | 固定 11 项浮点数组 | 15, 50, 80, 110, 140, 170, 190, 220, 250, 280, 350 | 仅 LCC | 立即 |
各 Level 对应的距离范围,单位米。第 N 项表示 Level N 生效的距离界限。
这是 LOD 的基准表,直接改动影响全部 LCC Actor。通常不直接改它,而是用 Actor 上的 Level Factor 做整体缩放。需要注意最大渲染距离与该表的关系:若最大距离小于某项数值,对应 Level 不会被使用。
Sort Frequency For Level
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Level | 固定 11 项浮点数组 | 5, 15, 25, 40, 50, 70, 90, 110, 130, 150, 170 | 仅 LCC | 立即 |
各 Level 的排序频率。Level 越高、距离越远,重新排序的间隔越长。
整体调大可减少排序开销,代价是远处节点的半透顺序更新更滞后。通常用 Actor 上的 Sort Factor 做整体缩放而不直接改这张表。
注:LCC2 管线按屏幕空间误差选择 Level,不使用 Range For Level;其排序是统一 Buffer 内的逐 splat 全局排序,不使用 Sort Frequency For Level。
Default Traversal Type
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Traversal | Sector / Circle | Sector | 通用 | 需重启编辑器 |
节点遍历方式。Sector 按视锥筛选可见节点,Circle 按距离做圆形筛选。
Sector 只处理视野内的节点,成本更低,是推荐值;Circle 会把相机周围一圈的节点都算进来,成本更高,但相机快速转动时不会因为节点刚进入视锥而来不及加载。多视口或高速转动的场景可以试 Circle。
线程池设置
| 分类 | 取值范围 | 默认值 | 适用管线 | 生效方式 |
|---|---|---|---|---|
| Loader / Traversal / Sort / Exporter | 见下表 | 见下表 | 仅 LCC | 需重启编辑器 |
这些线程池由 LCC 管线的加载、遍历、排序模块使用。LCC2 管线的数据加载走引擎自身的线程池,不受这些设置影响;例外是碰撞数据加载,两条管线共用 Loader 线程配置。
线程池在模块初始化时按配置创建,修改后需重启编辑器才生效。
四类线程各有「最大线程数」与「预创建线程数」两个设置:
| 设置 | 取值范围 | 默认值 | 用途 |
|---|---|---|---|
| Max Loader Thread Number | 5 ~ 100 | 20 | 数据加载 |
| Pre-Create Loader Thread Number | 0 ~ 100 | 5 | 预创建加载线程 |
| Max Traversal Thread Number | 5 ~ 100 | 20 | 节点遍历 |
| Pre-Create Traversal Thread Number | 0 ~ 100 | 5 | 预创建遍历线程 |
| Max Sort Thread Number | 5 ~ 100 | 20 | 排序 |
| Pre-Create Sort Thread Number | 0 ~ 100 | 5 | 预创建排序线程 |
| Max Exporter Thread Number | 5 ~ 100 | 20 | 数据导出,与运行时渲染无关 |
| Pre-Create Exporter Thread Number | 0 ~ 100 | 5 | 预创建导出线程 |
线程数不是越多越好。瓶颈在磁盘 IO 时增加加载线程没有帮助,反而加剧争抢。只有在 stat xgrids 中看到对应线程的队列持续积压、且 CPU 有余量时才考虑上调。
预创建线程可避免运行时临时创建线程的开销,调大能减少场景刚开始加载时的延迟。
统计数据
通过控制台命令 stat xgrids 开启统计面板,或在 Actor 面板 Developer 分类点击 Stats。

使用 stat xgrids 查看实时性能统计
面板分三段:
| 分段 | 列 | 含义 |
|---|---|---|
| Cycle counters (flat) | CallCount、InclusiveAvg、InclusiveMax、ExclusiveAvg、ExclusiveMax | 耗时项。Inclusive 含子调用,Exclusive 只算自身 |
| Memory Counters | UsedMax、Mem%、MemPool、Pool Capacity | 内存与显存占用,Physical 表示物理内存池 |
| Counters | Average、Max、Min | 数量项 |
Cycle counters(耗时项)
| 指标 | 含义与用法 |
|---|---|
| Update Collision | 碰撞数据的更新耗时。启用碰撞后才有数值;数值高说明碰撞正在频繁重建,应缩小碰撞加载距离 |
| Update Camera Info | 每帧收集相机信息的耗时。视图数量越多这一项越高,可与 Camera Num 对照 |
| Component Update | 组件每帧更新的耗时,属于 Game 线程成本。多个 LCC Actor 同场景时会累加 |
| Get Physics Trimesh Data | 向物理系统提供碰撞三角网的耗时。物理烘焙期间才出现,是碰撞卡顿的直接来源 |
| Get From Cache | 从缓存命中取数据的耗时。相对磁盘读取属于快路径,该项占比高反而是好现象 |
Memory Counters(内存与显存)
| 指标 | 含义与用法 |
|---|---|
| CPU Usage | LCC 占用的系统内存。与 CPU Occupy Percentage 一起判断是否接近释放阈值 |
| Collision Data Usage | 碰撞数据占用的内存。碰撞距离越大这一项越高,是关闭碰撞后最直接的收益项 |
| Position Data(For Raycast) Usage | 供射线检测使用的位置数据内存。不做射线检测时为 0 |
| GPU Usage | LCC 占用的显存。口径与 GPU Occupy Percentage 不同 |
Counters(数量项)
| 指标 | 含义与用法 |
|---|---|
| Total Splats | 数据集点数总数,固定值 |
| Level0 Splats | Level 0 的点数,决定是否满足全量渲染条件 |
| Current Render Main Splats | 当前帧渲染的主体点数。与 Max Splat Num 对照可判断是否触发了点数上限 |
| Current Render Nodes | 当前帧渲染的节点数 |
| Total Nodes | 数据集节点总数,固定值 |
| Released GPU Node Num | 已从显存释放的节点数。持续增长说明正在频繁换入换出,通常意味着显存预算不足 |
| Released CPU Node Num | 已从内存释放的节点数。判断依据同上 |
| GPU Occupy Percentage | 显存占用百分比。接近 Max GPU Usage 阈值时即将触发释放 |
| CPU Occupy Percentage | 内存占用百分比 |
| Loader Thread Num | 加载线程数。队列积压且 CPU 有余量时才考虑提高上限 |
| Pre-Loader Thread Num | 预加载线程数 |
| Collision Loader Thread Num | 碰撞加载线程数 |
| Sort Thread Num | 排序线程数 |
| Traversal Thread Num | 遍历线程数 |
| Exporter Thread Num | 导出线程数,与运行时渲染无关 |
| Camera Num | 参与更新的相机数 |
| Camera Num(Render) | 参与渲染的视图数,是判断 SceneCapture、分屏、nDisplay 开销的直接依据 |
| Node Vector Pool Num | 节点向量池中的对象数,属于内部对象复用统计 |
| Valid Node Num | 有效节点数,属于内部状态统计 |
调试工具
| 工具 | 说明 |
|---|---|
| Debug Node Bound | 可视化八叉树节点边界,颜色表示 Level(红为最高精度,白为最低)。用于确认 LOD 参数是否按预期生效 |
| Stats | 显示实时渲染统计,等同于 stat xgrids |
| FreezeRendering | 冻结当前渲染状态。冻结后移动相机不再触发遍历,可用于检查当前帧实际提交了哪些节点 |