geopro/.superpowers/sdd/task-12c-report.md

5.1 KiB
Raw Blame History

Task 12c 报告LOD-fps 探针(全量交互渲染最后一根链子)

状态

完成 / PASS —— 四件事(a/b/c/d)全做,双闸通过(无纹理维度错误 + 三段均回读非空像素), 真实实测未编造。LOD-based C 路线在本机判据下钉死可行。

实测数字(本机 RTX 3060 Laptop GPU离屏frames=120多次重跑稳定

维度 结果 交互级判据
(a) 粗层概览 fps level2 整卷 11119×8×41 (~3.6M 体素) ~752 fps(多跑 590~759 ✔ 远超 ≥30
(b) 全分辨率局部 fps level0 局部 256×29×162 (~120 万体素4 brick 列) ~380 fps(多跑 374~422 ✔ 远超 ≥30
(c) LOD 切换过渡 切换帧 60/120从远观(level2)dolly 拉近到近观局部(level0) 平均 1.09ms/帧,切换帧 ~5.5ms(尖峰 ~6×邻帧最大 ~6.95ms 无可感知卡顿 ✔
  • 粗层概览 fps~752 fps达交互级 ✔)
  • 全分辨率局部 fps~380 fps达交互级 ✔)
  • LOD 切换过渡帧耗时 / 是否卡顿:切换帧 ~5.5ms(仍 <1 个 60Hz 帧 16.7ms)→ 无可感知卡顿
  • 截图路径docs/superpowers/plans/poc-lod-shots/
    • lod-overview.pnglevel2 整线概览,全 2200m 线呈细带)
    • lod-fullres-local.pnglevel0 局部,全分辨率板面有细节)
    • lod-transition-mid.png(切换后推近的过渡中间帧)
  • 是否都达交互级。(a)/(b) 均 >>30fps(c) 切换无可感知卡顿。

设计与诚实测法

  • 在真实金字塔 storegpr_poc build ... --levels 3level0=44476×29×162 level1=22238×15×81level2=11119×8×41level3=5560×4×21上跑非合成。
  • (a)/(b):把对应 level 的所有 brick 重组成单张 VTK_SHORT vtkImageData (逻辑同 WholeVolumeSource,按 level 维度 + spacing×2^level / 局部段 X 偏移), 喂 buildVoxelI16FromImageSmartVolumeMapperGPU 路径),旋相机 120 帧测 fps。 level2/局部段单轴均 <16384 → 单 3D 纹理可成,无纹理墙。
  • (c)同一窗口相机从远观level2 整卷dolly 拉近;第 60 帧跨越 LOD 切换那一下 把体从 level2 概览换成 level0 局部 + 焦点移到局部段中心,逐帧记帧耗时 标切换帧尖峰。这是审核人加的验收点①(测切换动态,非两端静态)。
  • (d)vtkWindowToImageFilter+vtkPNGWriter 存 3 张 PNG供人眼判 “概览糊→拉近清晰”(审核人验收点②)。
  • 双闸(同 9c绝不把空纹理假帧率当性能CapturingOutputWindow 捕获 3D 纹理维度错误(实测=否); ② 真实回读前缓冲像素,统计非背景像素(概览 1889 / 局部 167612 / 过渡 21924 三段均非空。两闸全过fps 可信。

卡顿判据说明(避免误报)

切换帧含一次性建 actor / 换 mapper 输入,~5.5ms,是邻帧(~0.9ms)的 ~6×但绝对值 仍 < 1 个 60Hz 帧(16.7ms),人眼不可感。故采用绝对耗时判据:切换帧 >33ms(2 帧) 才记“可感知卡顿”16.7~33ms 记“轻微抖动”,亚毫秒基线下尖峰倍数虽大但绝对值低不算 卡顿。本机切换帧 ~5.5ms → 无可感知卡顿。

判据结论

粗层概览 + 全分辨率局部都达交互级≥30fps远超且切换无不可接受卡顿 → 命中 brief 第一条判据:LOD-based C 路线钉死可行

对照 12b整卷全分辨率 ray cast(2.08 亿体素)~10fps 是硬上限;本探针证实 “渲更少体素 = LOD” 这根杠杆有效——粗层 ~752fps、全分辨率局部 ~380fps两端都远 在交互级,且 LOD 切换瞬态 ~5.5ms 无卡顿。

最低配未验声明(审核人验收点③)

本探针仅在本机RTX 3060 Laptop GPUNVIDIA 555.97OpenGL 4.5)跑得上限数字最低配机器未验证,需用户在目标机跑 gpr_poc renderLOD <store> 或提供型号后再评估。 本机数字是上限,最低配可能更低。

进程峰值内存

~99 MB探针逐 level 重组单张 image未常驻整卷level0 局部仅取 4 brick 列)。

Concerns

  1. 截图视觉偏暗/偏细:体绘制 kMaxOpacity=0.15(复用探针传函)+ 整线物理纵横比 极扁2200m × ~1.5m × 8m故概览图中整线呈一条细带、过渡中间帧呈小斜板。 这是物理真实呈现(整线本就是长薄带),非渲染缺陷;但作为“人眼判可接受度”素材 偏素净。若需更醒目的生产视觉,需后续调传函不透明度/着色与取景,超出探针范畴(YAGNI)。
  2. (c) 为单次脚本化切换:测的是“从 level2 直切 level0 局部”一次硬切的瞬态; 生产里多级连续 LOD/视野自适应的换页节奏、预取与 morphing/淡入是探针过了之后的 工程brief 明确不在本探针范围)。
  3. (b) 局部仅取 4 brick 列(256 体素宽):证“全分辨率局部块快”;若生产需更宽的 全分辨率窗口(仍需 <16384 或分区/分块fps 会随体素数下降,需届时按窗口大小复测。
  4. 最低配仍是最大未知(见上声明)。