缩放器参考
Web Adaptive Performance 包含一套专门的缩放器 (Scalers)(优化模块)。索引器自动根据其 Visual Impact 和当前的瓶颈类型(Target: CPU 或 GPU)选择要部署的缩放器。
兼容性矩阵
以下是所有可用模块的兼容性矩阵和说明。
| 缩放器 | 管线 | 目标 | 描述 |
|---|---|---|---|
| Resolution | BiRP URP | GPU | 降低渲染分辨率,从根本上减少 GPU 填充率 (Fillrate) 的负载。详细信息请见下文。 |
| Shadows Quality | BiRP URP | GPU | 分阶段禁用阴影。 在 URP 中,首先禁用柔和阴影,然后是附加光源的阴影,最后是主要阴影。 在 BiRP 中,将阴影切换到 Hard Only 模式,然后再将其完全禁用。 |
| Shadow Cascades | BiRP URP | CPU/GPU | 减少阴影级联的数量。减少 CPU 的 Draw Calls 和 GPU 负载。 |
| Shadow Distance | BiRP URP | GPU | 缩短阴影绘制距离。 |
| Shadow Resolution | BiRP URP | GPU | 降低阴影贴图 (Shadow Maps) 的分辨率。 |
| Anti Aliasing | BiRP URP | GPU | 降低抗锯齿质量 (MSAA) 直至完全禁用。 |
| LOD Bias | BiRP URP | GPU | 强制 Unity 在距离相机更近的位置切换到低多边形 LOD 模型。 |
| Camera Clip | BiRP URP | GPU | 降低目标相机的 Far Clip Plane 参数,从渲染中剔除远处对象。 |
| Layer Culling | BiRP URP | CPU | 按比例缩小特定对象图层的剔除距离 (Culling Distance)。 |
| Physics Step | BiRP URP | CPU | 降低物理计算的频率。在浏览器出现繁重物理负载时拯救性能。 |
| LUT | URP 专用 | GPU | 将颜色分级 (Color Grading LUT) 的大小减小到最低限度。 |
| Mesh LOD Threshold | Unity 6+ | GPU | 更改在 Unity 6.2 中引入的 meshLodThreshold 参数,以进行激进的 LOD 切换。 |
对物理步长缩放器的注意事项
物理缩放器直接更改 Time.fixedDeltaTime 参数。如果角色控制器或游戏机制严格依赖于没有插值 (Interpolation) 的固定物理帧,对象移动在低质量级别可能会变得卡顿。
重置缩放器设置
如果您尝试了缩放器参数(例如,修改了 Min Bound 或 Max 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 对象上的鼠标点击继续正常运行,插件自动将目标相机上的标准 PhysicsRaycaster 和 Physics2DRaycaster 组件替换为自定义 WebScaledPhysicsRaycaster 组件。射线的精度在任何缩放级别下都完美无缺。
如何保持 UI 清晰度?(对于 BiRP RenderTextureScaling)
为了在使用 RenderTextureScaling 缩放 3D 图形的同时保持界面清晰,您必须正确配置您的 Canvas。选择以下两个选项之一:
选项 1:Screen Space - Overlay (推荐)
最简单和最可靠的方法。插件会自动处理所有工作。
- 在场景层次结构中选择您的 Canvas。
- 在 Canvas 组件中,将 Render Mode 设置为
Screen Space - Overlay。
结果: Unity 会以 100% 的原生分辨率将界面渲染在压缩后的 3D 世界之上。
选项 2:Screen Space - Camera (适用于复杂图层)
如果您需要混合 3D 模型、粒子和 UI,请使用此方法。您将需要跨两台相机分隔渲染。
- 主相机 (3D): 确保在缩放器的
Target Tags数组中指定了它的标签。在Culling Mask字段中,取消选中 UI 图层。将Depth设置为0。 - UI 相机 (新增): 创建一台新相机以渲染界面。不要将其标签添加到缩放器设置中。
- 将
Clear Flags设置为Depth Only(这样相机就不会擦除 3D 背景)。 - 专门将
Culling Mask设置为 UI 图层。 - 将
Depth设置为1(高于主相机)。
- 将
- Canvas 配置: 将 Render Mode 设置为
Screen Space - Camera,然后将新的 UI 相机拖入Render Camera插槽中。
