一、回顾
在 着色 Blinn-Phong Model 的最后,我们遗留了 在光栅化里,是如何生成阴影的? 的问题。
着色是一种局部的现象,只考虑着色点自己、光源、摄像机进行着色,完全没有考虑其他物体。 实际来说不对,因为有其他物体挡在 shading point和光源之间,那就会挡住光线,光线就达到不了 shading point,自然计算出的结果是黑的。这就是为什么会有阴影。
二、处理阴影
1、定义
在光栅化中解决阴影问题的方法:Shadow mapping 阴影映射。 Shadow Mapping:只能处理点光源。这种阴影通常会有非常明显的阴影边界,叫硬阴影。
2、核心思想
不是阴影:你可以从摄像机看到这个点,并且光源也可以看到这个点。 阴影:你可以从摄像机看到这个点,但是光源看不到这个点。
3、Shadow Mapping
方法:使用shadow mapping做两次光栅化,通过深度对比方式,得到阴影。
(1)先从光源看向场景:将摄像机放置光源处,做一次光栅化,得到一幅深度图,不做着色处理。
(2)从眼睛再次看向场景,得到一幅深度图。
(3)对于一个点,相对应的两幅深度图的值时一样的,说明无遮挡。值不同,说明有遮挡。
4、分析
shadow mapping中第一步的操作,得到的深度图就是阴影映射。这个深度图的分辨率,决定阴影的质量。(类似于纹理贴图,纹理过大、过小的问题)。
shadow mapping只能处理点光源,生成硬阴影。