Skip to content

缩放器参考

Web Adaptive Performance 包含一套专门的缩放器 (Scalers)(优化模块)。索引器自动根据其 Visual Impact 和当前的瓶颈类型(Target: CPU 或 GPU)选择要部署的缩放器。

兼容性矩阵

以下是所有可用模块的兼容性矩阵和说明。

缩放器管线目标描述
ResolutionBiRP URPGPU降低渲染分辨率,从根本上减少 GPU 填充率 (Fillrate) 的负载。详细信息请见下文。
Shadows QualityBiRP URPGPU分阶段禁用阴影。
URP 中,首先禁用柔和阴影,然后是附加光源的阴影,最后是主要阴影。
BiRP 中,将阴影切换到 Hard Only 模式,然后再将其完全禁用。
Shadow CascadesBiRP URPCPU/GPU减少阴影级联的数量。减少 CPU 的 Draw Calls 和 GPU 负载。
Shadow DistanceBiRP URPGPU缩短阴影绘制距离。
Shadow ResolutionBiRP URPGPU降低阴影贴图 (Shadow Maps) 的分辨率。
Anti AliasingBiRP URPGPU降低抗锯齿质量 (MSAA) 直至完全禁用。
LOD BiasBiRP URPGPU强制 Unity 在距离相机更近的位置切换到低多边形 LOD 模型。
Camera ClipBiRP URPGPU降低目标相机的 Far Clip Plane 参数,从渲染中剔除远处对象。
Layer CullingBiRP URPCPU按比例缩小特定对象图层的剔除距离 (Culling Distance)。
Physics StepBiRP URPCPU降低物理计算的频率。在浏览器出现繁重物理负载时拯救性能。
LUTURP 专用GPU将颜色分级 (Color Grading LUT) 的大小减小到最低限度。
Mesh LOD ThresholdUnity 6+GPU更改在 Unity 6.2 中引入的 meshLodThreshold 参数,以进行激进的 LOD 切换。

对物理步长缩放器的注意事项

物理缩放器直接更改 Time.fixedDeltaTime 参数。如果角色控制器或游戏机制严格依赖于没有插值 (Interpolation) 的固定物理帧,对象移动在低质量级别可能会变得卡顿。

重置缩放器设置

如果您尝试了缩放器参数(例如,修改了 Min BoundMax Level)并希望将它们恢复为默认值,只需在 Project Settings 窗口中将开关关闭再打开即可。插件将使用基准设置自动重新创建该模块。

剖析:分辨率缩放器 (Resolution Scaler)

这是插件中最强大的工具,提供最高的 FPS 提升。它的操作会根据活动的管线发生巨大变化。

在 URP 模式下 (Universal Render Pipeline)

在 URP 中,缩放运行无缝。插件直接连接到 UniversalRenderPipelineAsset 内的 renderScale 属性。界面 (UI) 自动保持清晰,因为 URP 能够在缩放后的 3D 世界之上渲染 Canvas。

在 BiRP 模式下 (Built-in Render Pipeline)

从历史上看,BiRP 缺乏一个可以在 WebGL 中运行而不会破坏界面或导致崩溃 (FBO Feedback Loop) 的内置渲染缩放 (Render Scale) 设置。WebAP 通过提供两种独占策略来解决这个问题。

模式 1:NativeBrowserScaling (原生浏览器缩放)

插件通过原生循环欺骗(将其注入浏览器的 devicePixelRatio 参数)直接缩放 HTML <canvas> 元素。

  • 优点: 最佳性能,GPU 端零开销。
  • 缺点: 游戏界面会随 3D 图形一起变得模糊。此模式仅在构建好的 WebGL 版本中运行(在 Unity 编辑器中看不到变化)。

模式 2:RenderTextureScaling (渲染纹理缩放)

插件将目标相机的渲染重定向到压缩的共享纹理中,并使用隐藏的合成器相机 (Compositor Camera) 显示图像。

  • 优点: 3D 世界被缩放,而 UI(文本、按钮)保持水晶般清晰。
  • 缺点: 由于 Blit 操作(将纹理复制到屏幕),会给 GPU 增加轻微负载。

修复鼠标点击 (Raycasts)

当利用 RenderTextureScaling 时,虚拟屏幕坐标会被压缩。为确保在 3D 对象上的鼠标点击继续正常运行,插件自动将目标相机上的标准 PhysicsRaycasterPhysics2DRaycaster 组件替换为自定义 WebScaledPhysicsRaycaster 组件。射线的精度在任何缩放级别下都完美无缺。

如何保持 UI 清晰度?(对于 BiRP RenderTextureScaling)

为了在使用 RenderTextureScaling 缩放 3D 图形的同时保持界面清晰,您必须正确配置您的 Canvas。选择以下两个选项之一:

选项 1:Screen Space - Overlay (推荐)

最简单和最可靠的方法。插件会自动处理所有工作。

  1. 在场景层次结构中选择您的 Canvas
  2. 在 Canvas 组件中,将 Render Mode 设置为 Screen Space - Overlay
    结果: Unity 会以 100% 的原生分辨率将界面渲染在压缩后的 3D 世界之上。

选项 2:Screen Space - Camera (适用于复杂图层)

如果您需要混合 3D 模型、粒子和 UI,请使用此方法。您将需要跨两台相机分隔渲染。

  1. 主相机 (3D): 确保在缩放器的 Target Tags 数组中指定了它的标签。在 Culling Mask 字段中,取消选中 UI 图层。将 Depth 设置为 0
  2. UI 相机 (新增): 创建一台新相机以渲染界面。不要将其标签添加到缩放器设置中。
    • Clear Flags 设置为 Depth Only(这样相机就不会擦除 3D 背景)。
    • 专门将 Culling Mask 设置为 UI 图层。
    • Depth 设置为 1(高于主相机)。
  3. Canvas 配置:Render Mode 设置为 Screen Space - Camera,然后将新的 UI 相机拖入 Render Camera 插槽中。