UNITY3D ShadeSH9 属于Irradiance environment maps 方法,可以参考DX SDK PRTDemo,里面是几乎相同的实现,总之就是解光传输的积分方程
目前主流辐射度计算的两种主流方法
1.Irradiance environment maps 辐照环境贴图方法,可用于生成柔和的环境光照,计算量比环境贴图更小 ,适合于动态环境
ShaderX2: Shader Programming Tips & Tricks with DirectX 9 中 Efficient Evaluation of Irradiance Environment Maps 一文有详细解释。
Functions can be represented/approximated
using basis functions
2.precomputed radiance transfer 预计算辐射度,这个方法实际上市将光照方程简化近似,离线计算各顶点或者像素的球谐系数,并压缩存储到顶点或者像素上,运行时重建光照,不适合于动态环境,可用于Lightmapping
ShaderX2: Shader Programming Tips & Tricks with DirectX 9 中 Practical Precomputed RadianceTransfer 一文有详细解释。
Single Spherical Harmonic Lighting Shader
https://www.assetstore.unity3d.com/en/#!/content/10307