THE WIZARD'S
LIBRARY
这座完整制作于 Blender 的哥特大厅,被重译成桌面端第一人称 Three.js 漫游。沿烛光走道前进,从地面读到回廊,经过天球仪与旋梯,最后走向大窗外那片冷光。
进入图书馆 线上正式版本 · 桌面键盘与鼠标
请使用桌面浏览器,并等待体积较大的场景包完整载入。点击 ENTER 按钮取得鼠标控制,推荐全屏游玩。移动端布局可以展示大厅,但当前没有触摸控制,因此不把它称为移动端可玩版本。
点击 ENTER 按钮进入 · 鼠标观察 · WASD 或方向键移动 · SHIFT 奔跑 · F 全屏 · ESC 释放鼠标。戴上耳机还能听到实时合成的脚步、烛焰噼啪、低频环境声和教堂混响。
保留原本的大厅,
换一套实时渲染契约。
浏览器版本不是在相机周围包一张全景渲染图。项目所有者提供的 Blender 场景按材质合并导出为 27 个网格与 27 套材质,书册颜色通过顶点色保持稳定;烘焙后的 base color、AO、roughness、metallic 与 tangent normal 则把程序化表面带进实时资产。
hero、gallery、stair、entrance、desk 五个 Blender 镜头成为回归锚点,用于守住相机位置、焦距意图与曝光。空间阅读方式保持一致,浏览器再接管行走相机、碰撞边界、局部灯管理、WebAudio,以及可确定性复现的对照接口。
知识留在暖光里,
日光停在冷色那端。
整间大厅围绕一条哥特纵轴组织:一层是阅读长桌与散落纸张,两侧是书墙与尖拱石柱,上层接木质回廊;吊灯、蓝金挂毯、天球仪和旋梯负责打破重复。烛光把木材与黄铜收进暖色光池,大窗则刻意保留苍白、偏冷的出口感。
Three.js r170 通过 AgX 与 OutputPass 输出画面。4096 PCF 太阳阴影、PMREM 室内反射环境、雾、明亮窗外 portal、克制的 Bloom、8 个常驻结构灯和 24 个近邻灯池共同重译原本的光线,但不假装复刻 Cycles。实时版没有多次反弹 GI、体积光柱,也没有 desk 镜头的 f/2.4 景深。

像素量放大四倍,
这才是卡顿主因。
之前的硬件 A/B 已把主要帧率瓶颈锁定在渲染分辨率,而不是 Shift 奔跑、碰撞或冻结阴影策略。同一台 Radeon 8060S / RADV、同一套完整 1K/512 KTX2 场景中,DPR 1 的 1280×720 backing canvas 达到 60.18 FPS;DPR 2 把实际画布放大为 2560×1440,静态阴影时降到 33.59 FPS。v34 因此让普通漫游从 DPR 1 或更低、2× 场景 MSAA 起步;最多预热 45 帧或 1.5 秒后,如果持续低于 52 FPS,会依次降到 0.85 与 0.7。冻结对照镜头和 ?quality=high 仍保留 DPR 2 / 4× MSAA。原始 1K–4K 贴图版本继续通过诊断用 original-texture fallback 提供。
- DPR 2 进程树 PSS:2150.4 → 669.6 MiB
- DPR 2 进程树 RSS:2428.7 → 939.8 MiB
- DPR 2 原始贴图 → 1K/512 KTX2 的 Ready:10567 → 9597 ms
- 历史 KTX2 帧率 A/B:DPR 1 / 4× MSAA 为 60.18 FPS;DPR 2 为 33.59 FPS
- v34 正式档:DPR ≤ 1 / 2× MSAA,低于 52 FPS 后自适应到 0.85 / 0.7
- DPR 2 阴影:静态 33.59 FPS;连续更新 30.19 FPS
- 冻结的静态/连续阴影对照帧:AE=0、RMSE=0,记录到的运行错误为零
上面的 FPS 数字是用于定位 DPR 的既有硬件基线,不代表已经对 v34 做了新的浏览器实测。AE=0 / RMSE=0 比较的是同一 DPR 2 机位下,冻结静态阴影与连续更新阴影的截图;它不是 Three.js 对 Blender/Cycles 的比较,更不是像素等价声明。