Files
rhinelab-ui/verification/RENDER-QUALITY.md
T

40 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 渲染画质设置 · 2026-09-09
入口:系统设置 → 渲染画质 → 精细设置。沿用参考视频与原生实现流程。
## 预设
| 预设 | 渲染比例 | DPR 上限 | 抗锯齿 | 阴影 | AO 采样 | AO 分辨率 | 景深 | 折射分辨率 | 纹理过滤 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 性能 | 80% | 1 | 原始 | 1024 | 关闭 | 50% | 关闭 | 50% | 4× |
| 原始(默认) | 100% | 1.5 | 原始 | 2048 | 32 | 100% | 100% | 100% | 16× |
| 高 | 125% | 2 | SMAA | 4096 | 32 | 100% | 100% | 100% | 16× |
| 极高 | 150% | 2 | SMAA | 4096 | 64 | 100% | 100% | 100% | 16× |
自定义渲染比例 50–200%,步进 5%;景深强度 0–150%,步进 5%。另支持 DPR 上限 3、AO 16 采样、AO 分辨率 75%、折射分辨率 25%/75% 及 1×/2×/8× 纹理过滤。纹理过滤限制到显卡实际支持值。
屏幕显示尺寸乘以 min(设备 DPR, 设置上限) 再乘渲染比例,得到请求分辨率。全尺寸缓冲限制到 8,294,400 像素及硬件纹理边长;达到限制时面板显示实际尺寸和限制提示。1080p、DPR 1 时极高渲染为 2880×1620,为原始的 2.25 倍像素,不能据此推断帧率。
## 实现
- `src/render-quality.ts` 负责预设、规范化、本地旧布尔设置迁移和分辨率计算。旧低画质继续保留 2048 阴影与全分辨率折射,只关闭 AO/景深并使用 DPR 1。
- 主场景顺序为 RenderPass → SSAO → Bokeh → SMAA → OutputPass。SMAA 按本地 Three.js 实现和[官方说明](https://threejs.org/docs/pages/SMAAPass.html)位于 OutputPass 前;旧主场景默认无额外抗锯齿。
- AO 更换采样数时替换并 dispose 旧 pass,切换阴影尺寸时释放旧 shadow map;AO 分辨率在 composer resize 后单独设置。相同画质不重复应用,音量调节不会重建画质资源。
- 使用 [WebGLRenderer 的 transmissionResolutionScale](https://threejs.org/docs/pages/WebGLRenderer.html)控制折射捕获精度,不改变透光率与颜色。
- 查看器同步清晰度、纹理过滤和折射设置。启用 SMAA 时用独立后处理管线,原始档位继续直接渲染以保留其原生抗锯齿。阴影、AO、景深只控制阵列,在设置标签中标明。
- 设置储存在 `rhine-settings.rendering`;修改单项自动标记自定义,选预设恢复整组参数。范围滑块拖动时更新数值,释放或键盘修改提交后应用,避免拖动期间连续重建大尺寸缓冲。
- 同步保留并行音频任务的开关、音量与场景音频接线。
## 验证
- `node scripts/check-quality.mjs`:通过。覆盖新旧设置、无效持久化值、范围约束、预设识别、序列化恢复、超采样比例及 48 组屏幕/DPR/硬件边长组合。
- `npm run build`:通过。Vite 保留大于 500 kB 的主包提示。
- 实际浏览器切换全部四个预设:主场景读取到对应分辨率、AO 采样、阴影尺寸和景深开关。
- 自定义 16 采样、50% AO 分辨率时,全尺寸 1180×664 对应 AO 590×332;关闭 AO 后其分辨率控件禁用。
- 构建后预览选择极高,再设置景深 0%、折射 50%、纹理 4×:刷新后上述值一致;查看器读取到相同分辨率、SMAA、50% 折射和 4× 过滤,模型载入、拆解和返回正常。
- 关闭阴影与 AO 后恢复原始:实际恢复 2048 阴影、32 采样、100% 景深;详情画面正常。
- 展开精细设置后面板内部可滚动;原生 select、range、summary 可键盘操作,模态焦点循环包含新增控件并排除折叠项与禁用项。
- 实际渲染与查看器检查未发现控制台 error。现有 PCFSoftShadowMap 被当前依赖自动降为 PCFShadowMap 的弃用提示与本次改动无关。
尚未进行跨显卡帧率、显存峰值或长时间稳定性基准测试。8.3 MP 上限限制尺寸,并不保证所有设备的帧率或显存占用。