今天本來不想卷的,但
上次看GAMES202
有個部分沒想通,做個記錄
SH一瞥
SH是一組2維基函數
抓前面m個基函數來使用
投影到SH
因為Diffuse和視角無關,上面橘色框框只是1個2維函數F
把F投影到SH上,得到投影系數C1…Cm
Glossy BRDF一瞥
BRDF每個ωo,會對映到多個ωi
等同於每個ωo,都對映到1個2維函數Fn
在球面上取n個方向
令每個方向為ωn
每個ωn,都會對映到1個2維函數Fn
第1次投影:把BRDF投影到SH
對每個ωn,把Fn投影到SH上
得到投影系數Tn1…Tnm
(水平方向)
畫成表格就是
m ➡️ SH系數
n
⬇️ T11…T1m
⬇️ T21…T2m
⬇️ :
⬇️ Tn1…Tnm
方
向
用SH系數重新分組
令 m=1 為一組
可以得到1個2維函數S1
m ➡️ SH系數
n
⬇️ T11
⬇️ T21
⬇️ :
⬇️ Tn1
全部分組完,可以得到m個2維函數Sm
第2次投影
把每個2維函數Sm都投影到SH上
最後會得到m組t1m...tMm
(垂直方向)
m = M
m ➡️ SH系數
M
⬇️ t11…t1m
⬇️ t21…t2m
⬇️ :
⬇️ tM1…tMm
SH
系
數
到這裡都是預計算(Offline)
還原
已知ωo的方向為 n=2
進行m次基函數的疊加可以還原成
m ➡️ SH系數
n
⬇️
⬇️ T21…T2m
⬇️
⬇️
方
向
再把上面投影片
藍色框框的系數cp和T21…T2m做內積
就是最後的光照結果
|
我叫tMm,這裡叫tij
|
把上面的過程寫成矩陣乘法
L = ( B t ) l = B ( t l )
|
和下面是同個意思 |