# Task 12d-polish 报告:梯度不透明度 + 光照 打磨探针 ## 状态 完成。真实离屏渲染、真实 fps,无编造。三张对比图均通过双闸(无 3D 纹理维度错 + 渲出高于背景像素)。 ## 命令 `gpr_poc polish tmp\store_lod_001 --frames 90`(默认取景 El45/Az30/Zoom1.5「斜穿俯视」,视线从上方斜穿体内部而非只看端面)。 ## 测试体 - 全分辨率 level0 局部段:256 x 29 x 162(沿线中段 4 brick 列 [345,349)/695),垂向夸张 exagg=8(放大薄 Y/Z 轴使截面可读)。 - 三图标量传函/配色/取景/夸张全相同,唯一变量是「梯度不透明度 / 光照」。 ## 梯度幅值分布(量化域,中心差分,545211 样本,按实测标定阈值) median=5.32,p75=20.1,p90=196.2,p99=9058.5,max=21470。 梯度不透明度 piecewise(按此分布标定,非猜):grad≤5.32→0.0、grad=196.2(p90)→0.5、grad≥9058.5(p99)→0.9。 即:占多数的低梯度均匀区透明,仅高梯度处(层界面)不透明。 标量不透明度峰值:基线 a=0.15(与默认体绘制同档→白雾);b/c 梯度门控压住均匀区后提到 0.6,让层界面净不透明度(标量×梯度)足够高、层面成实面。 ## 三张对比图(docs/superpowers/plans/poc-lod-shots/) | 图 | 路径 | 高于背景像素(>35) | 结构像素(>50) | 平均亮度(0-255) | fps | |---|---|---|---|---|---| | a 基线白雾 | polish-a-value.png | 219980 (21.5%) | 145874 (14.2%) | 20.07 | 160.8 | | b +梯度不透明度 | polish-b-grad.png | 50358 (4.9%) | 36430 (3.6%) | 15.71 | 58.2 | | c +梯度+光照 | polish-c-grad-shade.png | 25008 (2.4%) | 756 (0.07%) | 14.81 | 57.3 | 光照参数(c):ShadeOn,Ambient 0.3 / Diffuse 0.7 / Specular 0.2 / SpecularPower 10。 ## 目视结论:内部层是否「浮」出来了? **部分浮出来了,但不是全身——这正是层状数据的固有限制。** - **a(基线)**:一根平滑均匀的灰蓝色长条,没有任何内部层次,只有端面隐约可辨——就是需求描述的「体中间均匀白雾、只端面有层次」。穿透均匀水平层积分成雾。 - **b(+梯度不透明度)**:体的大部分(沿线中段那段均匀体)变透明、白雾消失,**端部/过渡区露出清晰的水平层状条纹**(层界面),底部另现一块淡蓝层状斑。证实:梯度不透明度确实把均匀积分雾抹掉、把层界面显出来了。 - **c(+梯度+光照)**:在 b 基础上端部层条纹带上轻微立体明暗(层带有了明暗起伏的层次感),但 shading 整体压暗,可见区更少更暗。 **关键如实结论**:梯度不透明度 + 光照**能消除均匀白雾、并让「确有梯度突变的层界面」浮出成可读的层状条纹**——打磨方向有效。**但对这条道路 GPR 数据,强梯度集中在端部/过渡区;沿线的长段水平层因「沿测线方向看过去是均匀的」(梯度低)会整段变透明,而不会显出层。**所以打磨**改善了「层界面可见性」**,但**无法让整条体内部都「长出层」——长均匀段的内部偏雾/偏空是层状数据本身的固有属性,不是没打磨。** 想看长段内部层,应配合切片/正交截面,而非纯体绘制穿透积分。 ## fps 代价 梯度不透明度需逐采样点算梯度,fps 从基线 160 降到 ~58(约 -64%),但仍远高于交互级 15fps,**可接受**。光照(c)相对 b 近乎免费(58→57)。本机 RTX 3060 数;最低配未验。 ## 提交自检 - 仅 `git add` tools/gpr_poc/main.cpp + 3 张 polish-*.png + 本报告;未 `git add -A`。 - `git diff --cached --stat` 确认无 chart/scatter/quill/rangeslider/Dialog/FormK。 - 未改任何交互默认(探针性质,仅新增 polish 子命令与三个 polish 专用辅助函数)。