Shadow mapping
问题的提出
- 我们之前在进行着色时,对于每个物体仅考虑自己,而不考虑其他物体对它的影响。限定在光栅化中,如何解决阴影问题呢?
 - 阴影能被摄像机看到,但不能被光源所照亮。
 - 经典的Shadow mapping只能处理点光源(或者说方向光源)产生的阴影,这种阴影有明显的边界,即一个物体要么在阴影里、要么不在。这种非0即1的阴影叫做硬阴影。
 
Projection to light
- 将相机移动到点光源位置,进行投影,计算并记录点光源照射物体的深度信息。
 - 将相机移回角色头部,在角色视线方向进行投影,对每个片段进行变换。
 - 使用上一步的变换矩阵,获取刚刚记录的片段对应的深度信息,计算片段到相机的距离。
 - 如果距离等于深度,那么使用光进行着色,否则视为阴影。
 
从光源看向场景

记录物体的深度

从相机看向场景

需要探讨的问题
-  
深度的数值精度
 -  
Shadow Mapping使用多大的分辨率?
 -  
Shadow Mapping需要更多的计算
 -  
只能计算硬阴影(理论上)
 -  
硬阴影和软阴影有什么区别?

硬阴影就是被本影挡住的部分,而软阴影是被部分光源照亮。

如果要做出软阴影,必须使用具有一定体积大小的点光源。 



















![[组合数学]母函数与递推关系](https://img-blog.csdnimg.cn/ae5f58496c0e46668a549328fe1bbf61.png)