【Unity3D技术文档翻译】第3.6.6.1篇 光照探针:技术说明

96
何三思
2018.08.18 10:27* 字数 428
Unity3D技术文档翻译

上一章:【Unity3D技术文档翻译】第3.6.6篇 光照探针概述 (Light Probes)

本章原文所在章节:【Unity Manual】→【Graphics】→【Graphics Overview】→【Lighting】→【Global Illumination】→【Light Probes】→【Light Probes: Technical information】

光照探针:技术说明 (Light Probes: Technical information)

光照探针中的光照信息被编码为球面谐波基函数(Spherical Harmonics basis functions)。我们使用三级多项式,又称为 L2 球谐函数。它们被存储为27个浮点值,每个颜色通道使用其中9个值。虽然 Unity 使用了 Geomerics 的 Enlighten 技术,我们使用了一种与他们博客中不同的球谐(简称 SH)基础(y 和 z 轴被交换了)。Unity 使用了 Peter Pike Sloan 的论文 Stupid Spherical Harmonics (SH) Tricks 中提到的符号和再建方法,而 Geomerics 使用的符号和再建方法来自于 Ramamoorthi/Hanrahan 的论文 An Efficient Representation for Irradiance Environment Maps

Unity 中用于再建的 shader 代码可以在 UnityCG.cginc 中看到,使用的是来自 Peter-Pikes 论文中用于辐照度环境映射的附录 A10 中的 shader/CPU 代码。

数据的内部排序就像这样:

                        [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个系数排序如下:

L00, L1-1,  L10,  L11, L2-2, L2-1,  L20,  L21,  L22, // red channel

L00, L1-1,  L10,  L11, L2-2, L2-1,  L20,  L21,  L22, // blue channel

L00, L1-1,  L10,  L11, L2-2, L2-1,  L20,  L21,  L22  // green channel

想要了解更多关于 Unity 光照探针系统的内容,你可以查看 Robert Cupisz 在 GDC 2012 上发表的演讲 Light Probe Interpolation Using Tetrahedral Tessellations”, GDC 2012

如果本文对你有帮助的话,点个赞或者评论一下吧!

下一章:【Unity3D技术文档翻译】第3.6.6.2篇 放置光照探针

Unity3D技术文档翻译
Web note ad 1