跳转至

只是储备

傅里叶变换

任何一个函数都可以用一个常数+多个由sin、cos组成的函数(傅里叶级数)进行逼近 - 这些函数有不同的振幅+频率 ![[Pasted image 20250304051955.png]] 傅里叶级数展开后,可以获得这些函数的==高频和低频==,可以反映图像的颜色变化 - 低频:图像会看起来更加smooth - 高频:图像更加尖锐

Filter滤波

所谓滤波,就是去除一部分频率。 - 低通滤波器:留下低频率的信号,反映出来的结果就是图像变模糊 - 高通:

卷积核(滤波器)

即去除信号的一种手段,不同的滤波器代表了对频谱不同的处理方式。通过对频域相乘来修改。 为什么叫卷积,反映到函数其实就是![[Pasted image 20250304052900.png]]

均值滤波器: ![[Pasted image 20250304052529.png]]

基函数Basis Functions

可以用一系列的函数的线性组合、去代替某个函数,我们称之为基函数。 典型的基函数: - 泰勒级数 - 傅里叶级数 - 多项式级数:F= ax +bx^2+···+c

球谐函数介绍Spherical Harmonics

这是定义在==球面==上的一组==二维==的==基函数==,类似于一维的傅里叶级数

频率、阶和编号

它也存在不同的频率: ![[Pasted image 20250304054715.png]] 每个频率l有==2l+1==种不同的球谐函数: - 对于l=0,我们可以称之为0阶,l=1,称之为1阶······ - 每个频率都有他自己的编号,分别是m =【-l,l】

为什么不用二维的傅里叶变换?

因为弄下来,会有很多缝一样的效果,而球谐函数就会比较和谐。

Legendre多项式、系数与投影

每一个球谐函数都和这个Lengendre多项式想概念。 我们需要如何得到每个球谐函数基函数的==系数==?

![[Pasted image 20250304055513.png]] 求这个系数的过程我们就称为==投影==

重建

使用截断的==基函数== +==系数==恢复原来的函数

f项,环境

f就是我们需要拿来处理的环境。 比如IBL,f就可以是我们天空盒的环境贴图

SH漫反射

BRDF

BRDF的Diffuse漫反射部分,其实就可以看做是一个==低通滤波器==,对漫反射处理只用前三阶效果就很好。 ![[Pasted image 20250304061042.png]]

计算消耗、蒙特卡洛

实际上,图形学上计算球谐函数一般最多只需要==前六阶==(甚至前三阶就够了,Unity只用了前三阶一共九个基函数,并压缩成了7个float4),带来的消耗依旧相当恐怖。所以一般都是==预计算==,并且使用==蒙特卡洛==方法进行优化

两行代码引领球谐时代!!!

计算出球谐函数后,就可以直接用两行代码算出漫反射环境光。

球谐函数的优秀性质

1. 正交

任意一个基函数投影到其他基函数,结果都是1.

这个性质可以大幅度简化计算,如PRT计算漫反射项中间的乘积。只有基函数相同时才有值,并且为1。不同的话结果就是0咯

2. 简单的投影与重建

3.简单的旋转(最重要)

想旋转原图= 旋转每个基函数 性质1:旋转任何基函数,都可以被同阶的其他基函数线性组合得到

4.简单的卷积

5. 基函数少,频率低

SH限制

低频率

SH性质决定的

动态光照,但是静态场景(材质)

改变材质和场景会使得预计算的材质失效

相当大的预计算数据