光照探針:技術(shù)信息
光照探針中的光照信息被編碼為球諧 (SH) 基函數(shù)。我們使用三階多項式,也稱為 L2 球諧函數(shù)。它們采用 27 個浮點(diǎn)值進(jìn)行存儲,每個顏色通道使用 9 個浮點(diǎn)值。盡管 Unity 使用 Geomerics 的 Enlighten,但我們使用的 SH 基函數(shù)與您在他們博客上看到的不同(y 軸和 z 軸進(jìn)行了交換)。Unity 使用的是 Peter-Pike Sloan 的論文愚蠢的球諧函數(shù) (SH) 技巧 (Stupid Spherical Harmonics (SH) Tricks)?中的表示法和重建方法,而 Geomerics 使用的是 Ramamoorthi/Hanrahan 的論文輻射環(huán)境貼圖的高效表示 (An Efficient Representation for Irradiance Environment Maps)?中的表示法和重建方法。
用于重建的 Unity 著色器代碼可在 UnityCG.cginc 中找到,并使用 Peter-Pikes 論文的“附錄 A10 輻射環(huán)境貼圖的著色器/CPU 代碼 (Appendix A10 Shader/CPU code for Irradiance Environment Maps)”中的方法。
數(shù)據(jù)在內(nèi)部的排列順序如下:
[L00: ?DC]
[L1-1: ?y] [L10: ? z] [L11: ? x]?
[L2-2: xy] [L2-1: yz] [L20: ?zz] [L21: ?xz] ?[L22: ?xx - yy]
R、G 和 B 的 9 個系數(shù)的排列順序如下:
L00, L1-1, ?L10, ?L11, L2-2, L2-1, ?L20, ?L21, ?L22, // 紅色通道?
L00, L1-1, L10, ?L11, L2-2, L2-1, ?L20, ?L21, ?L22, // 藍(lán)色通道?
L00, L1-1, ?L10, ?L11, L2-2, L2-1, ?L20, ?L21, ?L22 ?// 綠色通道
有關(guān) Unity 光照探針系統(tǒng)的更多背景信息,可閱讀 Robert Cupisz 在 2012 年游戲開發(fā)者大會 (GDC 2012) 上的演講報告“使用四面體曲面細(xì)分的光照探針插值 (Light Probe Interpolation Using Tetrahedral Tessellations)”- GDC 2012(Link:http://gdcvault.com/play/1015312/Light-Probe-Interpolation-Using-Tetrahedral)