由 astra 生成 · 更新于 2026-09-27 18:44(北京时间)
分析日期:2026-09-27。分析多角色竹林场景中已确认的后续几何着色、方向环境光、辅助几何反馈与公共运动接口,不沿用此前角色展示截帧的部件结论。
本文独立展开角色实现。公共光照、反射、雾和整帧后处理见 终末地场景分析;完成单游戏分析后的横向结论见 角色实现对比。
配图直接来自真实回放,关键效果用同一区域的阶段前后图解释。局部图已统一到便于阅读的方向,HDR 配对使用一致显示范围;最终画面另作外观参照。公式和通道按实际读写解释,未确认的部件归属明确保留。
1. 屏幕辅助数据会反馈到几何处理
| 数据步骤 | 处理规则 | 后续用途 |
|---|---|---|
| 主材质 | 建立表面颜色、法线、材质参数、运动与深度 | 供公共光照和辅助路径读取 |
| 分离辅助可见性 | 复制主法线与深度到独立目标,保留尚未写入的辅助颜色 | 辅助路径可以继续处理自己的表面关系 |
| 辅助几何栅格化 | 写八面体法线、alpha 中的对象/材质标记及深度 | 为后续几何建立可采样的空间与分类信息 |
| 辅助标量计算 | 根据相关输入生成标量图及辅助深度 | 标量的完整物理意义仍待确认 |
| 辅助几何求值 | 顶点阶段读取上述法线、标量、深度与标记,并更新几何数据 | 生成辅助颜色/法线,同时接回公共运动图 |
这里已确认的机制是“先栅格化辅助表面信息,再把纹理结果交回顶点阶段”。这与只在最终屏幕上叠加一张效果图不同;几何处理同样可以是屏幕数据的消费者。辅助路径还通过深度、模板与独立颜色混合控制接入范围,完整部件用途未确认。
2. 延迟之后的几何直接消费环境
全屏延迟光照结束之后,几何路径继续向主 HDR 颜色与运动图写入。前后对照可见,角色颜色在这里得到补充,因此角色的完整着色没有全部交给前面的全屏程序。
已拆解的几何路径使用相等深度测试,在已有可见表面位置写入颜色与运动;像素程序直接读取三层空间光照场和累计雾散射/透射体积:前者提供当前位置的环境光,后者提供相机到该表面之间的雾色与透射。角色几何在自己的着色阶段接入环境,而不是只依赖前面的全屏光照。
| 全屏光照结束 | 后续几何着色完成 | 最终角色外观 |
|---|---|---|
![]() |
![]() |
![]() |
观察角色轮廓内部,背景位置保持一致。 全屏光照结束时角色仍是黑色轮廓;后续几何阶段填入金发、肤色、白裙与金属亮部,直接证明角色颜色在这一阶段补入。前两图统一采用 HDR 显示范围 0–0.2,第三图为最终输出色彩;这里比较的是阶段贡献,不是 GI 或阴影开关。
主材质用于建立或更新表面,后续几何用于在已有表面位置补着色;两者的深度测试职责不同,移植时需要分别保留。
3. 后续几何着色的材质公式、方向控制与运动输出
代表后续几何程序已经能继续拆到材质计算。以下是此程序的已确认机制;它属于会补入角色颜色的事件组,但尚未证明该组所有匿名程序都有完全相同的材质分支。
金属与非金属响应分开构造。 程序使用 0.04 的介质反射基值,把一个材质混合量分别用于漫反射颜色和镜面反射颜色:
1 | 漫反射颜色 = 表面颜色 × 0.96 × (1 - 金属混合量) |
这支持将该混合量解释为金属/非金属控制,而不只是“某个材质参数”。但尚未逐个证明输入贴图各通道在所有材质变体中的同名意义,因此这里限定为本程序的运算语义。后面还可以按其他条件把高光宽度混向 0.01,说明视觉高光并非只由一张统一 roughness 贴图决定。
明暗分区同时使用几何方向与贴图方向。 程序将主光方向压到水平面,加入小的竖直分量再归一化;根据局部光方向符号镜像 U,采样材质控制纹理。其 B 通道被重建为一个平面方向:
1 | 带符号横向量 = 根据光照侧别选择 (2×B-1) 或 (1-2×B) |
同一采样的 R/G 平均值还与光方向推导的阈值做
smoothstep,构造明暗分界;分界参数限制在
0.001–0.999,避免退化区间。随后把明暗控制映射到横坐标、以纵坐标
0.5 采样一条色彩
ramp。因此这个路径组合了几何法线、贴图设计的分界与渐变查表,不能仅替换成普通
saturate(N·L)。
环境光包含方向性。
对场景三层光照体积解码后,红/绿/蓝各自得到四个系数,用
(着色方向.x, 着色方向.y, 着色方向.z, 1)
求点积并限制为非负。这是包含常量项和一阶方向项的环境光,而不是给角色乘一个与法线无关的
RGB ambient。体积的尺寸、分层和打包公式见 终末地场景分析。
运动输出与颜色并行写入。 当前与前一投影坐标差先变成纹理位移,再经两次平方根压缩:
1 | 屏幕位移 = (当前NDC - 前一NDC) × (0.5, -0.5) |
代表程序同时写 B=1、A=0.4。因为目标是 RGB10A2 UNORM,A 只有 2 bits,实际只有 0、1/3、2/3、1 四档,0.4 落入 1/3 档;后续按接近 0.3 的范围判断分类正是要匹配量化后的值。不能把 shader 中的 0.4 当作读回后完全精确的值。
雾最后作用于已算出的几何颜色。 程序采样累计雾体积,以 RGB 表示沿视线散射、A 表示透射,与解析高度雾等项组合,再把几何颜色乘以综合透射并加入雾色。颜色路径被雾衰减时,运动输出仍独立写入,保持时序重投影需要的几何对应关系。
证据:后续几何着色程序、实际资源与常量绑定。
4. 辅助合成与透明阶段保留公共接口
辅助颜色阶段再次写入独立辅助颜色图并使用辅助深度,随后合成回主 HDR。本帧路径的 depth 为 Less、关闭写深度;stencil Equal、mask=1、ref=1;颜色按 One / InvSrcAlpha 混合,只写 RGB。它先根据深度与分类筛选像素,再叠加辅助颜色;不能仅凭这一步断定具体角色部件。
透明/效果阶段继续写 HDR 颜色和运动矢量/分类图。最后,时序预处理读取当前运动矢量、当前深度以及前一帧的对应数据,判断历史是否仍然可信。角色、效果与场景必须先完成这些公共输出,再统一进行历史融合;完整历史图与 Bloom 见 终末地场景分析。
5. 分析边界与证据
对照图已确认后续几何路径会补入角色颜色;辅助几何的具体部件归属、脸/眼/头发分别采用哪些完整公式、每个角色的变形数据来源仍未全部还原。本文的材质公式限定为已拆解的几何程序,不将它冒充所有角色部件的统一实现。
角色绑定证据 保存原始状态,资源语义索引 对照数据用途;捕获编号和提交统计只用于附录定位。


