Games101 图形学入门笔记

阴影

Shadow Mapping

定义:

首先表明这种阴影生成方案是基于点光源,硬阴影的方案,也就是要不就能看见阴影要不就看不见阴影,非0即1的过程,然后这种阴影方案是一种图像空间的做法,所谓图像空间就是说不需要知道几何信息来生成阴影,这种阴影方案是存在走样问题的,还有一个很重要的点是这种方案的最重要的思想就是 所谓有阴影一定是摄像机能看到这个点而光源看不到这个点才会产生阴影

演示图片

Shadow mapping 步骤:

第一步:先从光源位置向整个场景做一次光栅化,生成一张深度图,记录他在每个方向所能看到的点的深度信息

演示图片

第二步:摄像机看见这些点的时候,就需要做以下的事情,首先把看见的这个点投影到光源平面内,看这个点对应光源平面哪个像素,因为前面已经存过一张深度图,现在只需要拿当前这个点跟光源的距离和他对应像素之前存的深度做比较,如果一样即代表他可被光源看见,如果不一样说明这个地方是阴影,被其他点所遮挡

演示图片

有无阴影对比

演示图片

光源做深度图的视角

演示图片

光源所做的深度图

演示图片

存在的问题:

1.首先此阴影方案会对整个场景每个点做两次操作,一次深度图,二次比较

2.此方案只支持硬阴影

3.会有分辨率的限制,深度图生成的分辨率会影响最终的效果,也会有效率问题

4.会出现一些浮点数精度问题,虽然有一些方法去尽量保证,但是总会出现精度问题

演示图片

软阴影和硬阴影的区别

左边两幅图能清楚的看见两中阴影的区别,特别从边缘的地方能看到软阴影更加的分散,然后软阴影是怎么形成的,在物理上理解就是右图,是本阴影和半阴影的结合形成了软阴影的效果,所以简单理解就是如果光源没有大小,就只会有硬阴影,也就是点光源,如果光源有大小,就会形成软阴影,也就是说跟光源大小有关

演示图片