PRT 公式 (Direct3D 9)

若要完全了解实现 PRT 的着色器,派生着色器用于计算退出辐射的公式非常有用。

首先,以下公式是一般公式,用于计算使用任意距离照明的漫射对象上直接照明产生的退出辐射。

使用任意远程照明的漫射对象上直接照明产生的退出辐射的公式

哪里:

参数 描述
Rp 顶点 p 处的退出辐射。 在网格上每个顶点求值。
pd 表面的 albedo。
圆周率 常量,用作节能规范化因子。
L(s) 照明环境(源辐射)。
Vp₍s₎ 点 p 的二进制可见性函数。 如果点可以看到光线,则为 1;否则为 0。
Hnp₍s₎ 兰伯特法律中的余弦词。 等于 max(Np· s), 0,其中 Np 是点 p 的图面法线。
s 在球体上集成的变量。

 

使用球面基函数(如球面调和),以下公式近似于照明环境。

照明环境公式

哪里:

参数 描述
L(s) 照明环境(源辐射)。
一个整数,用于对基函数数求和。
O 球面调和的顺序。
li 系数。
Yi(s) 球体上的一些基础函数。

 

这些系数的集合 L'为函数 L(s) 提供了基函数 Y(s)的最佳近似值。 替换和分布将生成以下公式。

替换 l(s) 和分布公式

Yi(s)Vp₍s₎Hnp₍s₍ s₎ 是模拟器预计算网格上每个顶点的传输系数 tpi。 替换此公式将生成以下公式。

替换传输系数公式

将此表示法更改为矢量表示法会生成以下未压缩的公式,以计算每个通道的退出弧度。

在更改为向量表示法退出辐射的公式

哪里:

参数 描述
Rp 顶点 p 处的退出辐射。
pd 表面的 albedo。
L' li的向量,是源辐射到球面调和基函数的投影。 这是球面调和系数的顺序 2 向量。
卫生纸 顶点 p 的 order 日下午传输向量。 模拟器将传输系数除以 p。

 

这两个向量都是球面调和系数的顺序 2 向量,因此请注意,这只是一个点积。 根据顺序,点可能很昂贵,因此可以使用压缩。 称为聚集主体组件分析(CPCA)的算法可以有效地压缩数据。 这样就可以使用高阶球面调音近似值,从而产生更尖锐的阴影。

CPCA 提供以下公式来近似传输向量。

近似传输向量公式

哪里:

参数 描述
卫生纸 顶点 p 的传输向量。
Mk 群集 k 的平均值。
j 一个整数,用于对 PCA 向量数求和。
N PCA 向量的数量。
wpj 点 p 的 jth PCA 权重。
Bkj 群集 k 的 jth PCA 基向量。

 

聚类只是共享相同平均向量的一些顶点。 下面讨论了如何获取分类平均值、PCA 权重、PCA 基础向量和顶点的分类 ID。

替换这两个公式生成:

替换传输向量后退出辐射的 公式

然后分布点积会生成以下公式。

在分布点积公式

因为两者 (Mk·L' 和 (Bkj·L') 是每个顶点的常量,样本使用 CPU 计算这些值,并将其作为常量传递到顶点着色器;由于 wpj 每个顶点的更改,因此示例将此每个顶点数据存储在顶点缓冲区中。

预计算辐射传输