From 2d01c2c101ccea8193a64bb46ceafca3009f0ef5 Mon Sep 17 00:00:00 2001 From: Yingjie Wang Date: Sat, 12 Sep 2026 15:29:36 -0400 Subject: [PATCH] Doc: Adopt CSV CIE 1931 blackbody reference --- nr_spacetime_movie_renderer_design.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/nr_spacetime_movie_renderer_design.md b/nr_spacetime_movie_renderer_design.md index 2a42d8f..fd99b32 100644 --- a/nr_spacetime_movie_renderer_design.md +++ b/nr_spacetime_movie_renderer_design.md @@ -1014,6 +1014,31 @@ p99 约 3744px,最大相邻三角形跳跃 p99 也约 3744px。因而不能把 真实流式端到端数据验证分桶成本。完整命令、hash、输出保护和原始记录见 [dummy chunk 统计](benchmarks/dummy_psf_chunks_2026-09-11/README.md)。 +2026-09-12,黑洞渲染的黑体颜色计算改为以仓库内数值 LUT 为默认实现,取代原先 +`optics.c` 中的 Wyman 解析 CIE 拟合。正常区使用仓库唯一的 +`assets/blackbody/cie1931_2deg_xyz_1024.grbblut`:以 40 位精度把 Planck 谱和 +`assets/CIE_xyz_1931_2deg.csv` 的 360--830 nm、1 nm 分段线性 CIE 数据积分,生成覆盖 +`[670.146556,101408.88] K` 的 1024 个 `log(T)` 等距 XYZ 节点。`GRBBLUT3` header +固定标识该 reference,loader 校验 magic/version/endianness/物理常数/范围/长度与 payload +checksum,并拒绝旧的 Wyman/5 nm 表与 runtime 造表。表内使用四点三次 Lagrange 插值, +在全部 1023 个区间中点相对独立 Gauss-16 积分的最大 XYZ channel 相对误差为 +`5.4633e-5`,没有负 XYZ。由 1 nm 线性插值自身约 `3.2e-4` 的最坏误差估计,正常区采用 +`1e-4` LUT 内部限与 `5e-4` 整体误差预算,避免继续追逐缺乏物理意义的 `1e-6`。 + +两端使用同一 CSV reference 的表外模型。高温端使用连续积分得到的 +`A T+B+C/T` Rayleigh--Jeans 展开,在 `[Tmax,10Tmax]` 最大 XYZ 相对误差为 `1.6635e-5`。 +低温端针对 X/Y 的 830 nm 端点和 Z 的 650 nm 零端点分别展开:在 `4.097321 K` 以下使用 +crossover 锚定、在 `T -> 0` 趋于极限的端点式,其上用六段八次 +`1/T -> log(scaled XYZ)` Chebyshev--Lobatto 插值接到 LUT。低温端点段/过渡段的最大 XYZ +相对误差分别为 `6.69e-5`/`8.16e-5`,因而三段均满足 `1e-4` 内部限;log 输出避免把极端 +低温的线性下溢误解为拟合硬下限。 + +最终 legacy Wyman/5 nm 与 CSV LUT 的 1920x1080 double-HDR 比较显示,每通道峰值归一化 +最大绝对变化为 R `9.00e-3`、G `7.02e-3`、B `8.12e-4`;这是 reference 升级本身造成的 +预期变化,而不是 LUT 插值误差。旧 Wyman/5 nm 积分实现、可切换的 integral/fixed/LUT +A/B 后端、有界性能证据与观测温度采样器保留在实验分支 +`codex/blackbody-cost-experiment`(tag `blackbody-cost-experiment-2026-09-12`)。 + ---