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 每个顶点的更改,因此示例将此每个顶点数据存储在顶点缓冲区中。
相关主题