软阴影(PCF、PCSS)

 软阴影与硬阴影的区别如下:上面为硬阴影,下面为软阴影。


 Percentage Closer Filtering (PCF)

 PCF最初是用来做抗锯齿的,后来发现可运用于软阴影上(PCSS)

        从相机出发看向场景中的一点,记录该点的深度,将这点投影到光源照向场景的深度图(shadow map)中(在光源的深度图中寻找这一点的深度)。

        在硬阴影中讲到比较该点的深度和光源的深度图中的深度进行比较,若不匹配说明有遮挡(为阴影区域),否则为可见区域。

        在这里我们不仅仅找该点的深度,在shadow map上还要找该点周围的点的深度。

  1. 假设这里取3X3的区域。
  2. 将区域内的每一个点的深度与该点(中心点/投影的点)的深度进行比较(每次比较后的值为1 or 0 ,1为小于该点的深度(可见),0为大于该点的深度(不可见))。
  3. 进行比较后将比较后的值平均起来为0.667。

 结果:(可到达抗锯齿的目的)

 


Percentage Closer Soft Shadows (PCSS)

 将前面的PCF进行推广,如果filter变得特别大那么阴影就变成了软阴影!但是filter到底要如何变大,那一部分变大,变大到那种程度上才能得到最真实的效果?

 比如上图,笔尖的地方接近硬阴影,笔帽的地方接近软阴影。可以观察到规律:阴影距离投射物越近越接近硬阴影,阴影距离投射物越远越接近软阴影。

所以要做软阴影,需要在物体阴影的不同位置上有不同大小的filtering-size,filtering-size与遮挡物与阴影的距离blocker distance有关.

 PCSS步骤:

在第一步做blocker  search的时候该使用多大的区域呢?

一般有两种解决办法:

1.使用5X5的格子

2.如下图:

 示例图

猜你喜欢

转载自blog.csdn.net/qq_48626761/article/details/126956901