
全局光照 = 直接光照 + 间接光照,GI非常重要,但是很复杂,但如果只有考虑直接光照,很多地方都是黑的,减少了渲染的真实感。
Bling-Phone模型处理间接光照的方法:假设接收各个点的间接光照都是相同的,分解为环境光项。
实时渲染中,通常只考虑一次间接光照,把一切被直接光照照亮的物体称为次级光源。
需要知道什么来计算着色点p的间接光照?
主要有两项:
在游戏中常常用来做手电筒(flashlights)的效果。
思想:将每一个shadow map上的像素当成次级光源。
问题:需要知道每个像素位置每个出射方向的radiance,但实际上只能知道到相机的方向。
假设:所有的反射物都是diffuse的(不要求点p是diffuse的),因此点p的所有出射方向是相同的。

L
o
(
p
,
ω
o
)
=
∫
Ω
p
a
t
c
h
L
i
(
p
,
ω
i
)
V
(
p
,
ω
i
)
f
r
(
p
,
ω
i
,
ω
o
)
cos
θ
i
d
ω
i
=
∫
A
p
a
t
c
h
L
i
(
q
→
p
)
V
(
p
,
ω
i
)
f
r
(
p
,
q
→
p
,
ω
o
)
cos
θ
p
cos
θ
q
∥
q
−
p
∥
2
d
A
由于假设平面是漫反射的,所以上式中,


假设shadow map上离得比较近的点在世界坐标上也比较近。

优点:容易实现(Shadow Map)。
缺点: