1.Introduction
从区域光源中生成精确的软阴影是图形学的一个基础课题,软阴影为物体间的距离关系提供了有价值的提示,当物体间彼此靠近时阴影边缘变得锐利,当距离比较远时则变得越来越模糊

这幅图应用了一种新的方法,叫Percentage-Closer Soft Shadow(PCSS),这种方法在shadow mapping([Williams 1978] 和 percentage‐closer filtering (PCF) [Reeves et al. 1987])的基础上, 生成了有精度自适应的软阴影,PCSS有下面这些主要特征:
1. 可以生成有精度自适应的软阴影。
2. 一次光源采样(一张shaow map)。
3. 不需要pre-processing,post-processing,或者其他一些图形技术
4. 可以非常容易地替换一个传统的shadow mapping查询方法(同时保留了传统shadow mapping方法具有的一些优点,如场景复杂度无关,可以和alpha testing,displacement mapping(位移映射)一起工作等等。
5. 在现今的硬件上可以实时渲染。
这些特点使得它在大量应用程序中都很适用,从次时代游戏到DCC/CAD程序都可以应用得很好。因为它只需要一次采样同时不需要其他比较特别的处理措施,这个方法可以容易地替换现有的应用程序中的shadow mapping的shader代码以得到更优秀的画面,唯一需要改变的地方就是把传统shadow mapping的pixel shader替换为PCSS shader。
2.Previous Work
在计算机图形学上阴影生成理论的历史是非常广泛和丰富的,一个非常好的调查统计可以在[Hasenfratz 2003]找到,里面总结了非常多的阴影生成方法,在相同的前提:易于结合,稳健,可交互性下,没有一个能生成像我们的成果一样真实的画面,通常不能产生随着半影扩展而收缩的本影是这些方法的败笔之一。
3.Percentage-Closer Soft Shadows
PCSS方法建立在标准shadow mapping的基础上:当在视线视角对每个像素着色时,PCSS返回一个浮点值表明这个像素的受阴影度(替换了普通shadow mapping的深度比较方法)。
PCSS基于当PCF采样区域的尺寸增大的时候阴影会变柔和的研究。其中的挑战是如何让采样区域尺寸灵活地变化以得到一个正确的阴影柔和度,为了达到这个目的,算法中对每个像素着色时包含了3个步骤:
Step 1:Blocker search(译者:不知道怎么翻译比较合适。。)。我们查找shader map,找到所有比当前像素(receiver)更靠近光源的像素,把它们的深度值做一个平均,查找区域的尺寸由光源的尺寸和当前像素距光源的距离决定。
Step2:半影测量。用一个平行的平面近似,我们根据光源的尺寸和blocker/receiver距光源的距离估量半影的宽度:

Step 3:过滤。现在我们运用标准的PCF步骤进行过滤,PCF的采样区域尺寸与步骤2中得到的半影测量宽度成正比。
4. Results
在NVDIA GeForce 7800 GTX上,640 x 480的分辨率这个方法一个没有优化的版本大概能跑75FPS,其中在block search和PCF步骤上分别进行了36次和64次采样。这是一个非常优秀的结果,对于需更具真实感的场景尤其如此,维持了一个很高的交互度。采样数可以根据光源的尺寸和对图像质量的要求进行修改。
从区域光源中生成精确的软阴影是图形学的一个基础课题,软阴影为物体间的距离关系提供了有价值的提示,当物体间彼此靠近时阴影边缘变得锐利,当距离比较远时则变得越来越模糊

这幅图应用了一种新的方法,叫Percentage-Closer Soft Shadow(PCSS),这种方法在shadow mapping([Williams 1978] 和 percentage‐closer filtering (PCF) [Reeves et al. 1987])的基础上, 生成了有精度自适应的软阴影,PCSS有下面这些主要特征:
1. 可以生成有精度自适应的软阴影。
2. 一次光源采样(一张shaow map)。
3. 不需要pre-processing,post-processing,或者其他一些图形技术
4. 可以非常容易地替换一个传统的shadow mapping查询方法(同时保留了传统shadow mapping方法具有的一些优点,如场景复杂度无关,可以和alpha testing,displacement mapping(位移映射)一起工作等等。
5. 在现今的硬件上可以实时渲染。
这些特点使得它在大量应用程序中都很适用,从次时代游戏到DCC/CAD程序都可以应用得很好。因为它只需要一次采样同时不需要其他比较特别的处理措施,这个方法可以容易地替换现有的应用程序中的shadow mapping的shader代码以得到更优秀的画面,唯一需要改变的地方就是把传统shadow mapping的pixel shader替换为PCSS shader。
2.Previous Work
在计算机图形学上阴影生成理论的历史是非常广泛和丰富的,一个非常好的调查统计可以在[Hasenfratz 2003]找到,里面总结了非常多的阴影生成方法,在相同的前提:易于结合,稳健,可交互性下,没有一个能生成像我们的成果一样真实的画面,通常不能产生随着半影扩展而收缩的本影是这些方法的败笔之一。
3.Percentage-Closer Soft Shadows
PCSS方法建立在标准shadow mapping的基础上:当在视线视角对每个像素着色时,PCSS返回一个浮点值表明这个像素的受阴影度(替换了普通shadow mapping的深度比较方法)。
PCSS基于当PCF采样区域的尺寸增大的时候阴影会变柔和的研究。其中的挑战是如何让采样区域尺寸灵活地变化以得到一个正确的阴影柔和度,为了达到这个目的,算法中对每个像素着色时包含了3个步骤:
Step 1:Blocker search(译者:不知道怎么翻译比较合适。。)。我们查找shader map,找到所有比当前像素(receiver)更靠近光源的像素,把它们的深度值做一个平均,查找区域的尺寸由光源的尺寸和当前像素距光源的距离决定。
Step2:半影测量。用一个平行的平面近似,我们根据光源的尺寸和blocker/receiver距光源的距离估量半影的宽度:
Step 3:过滤。现在我们运用标准的PCF步骤进行过滤,PCF的采样区域尺寸与步骤2中得到的半影测量宽度成正比。
4. Results
在NVDIA GeForce 7800 GTX上,640 x 480的分辨率这个方法一个没有优化的版本大概能跑75FPS,其中在block search和PCF步骤上分别进行了36次和64次采样。这是一个非常优秀的结果,对于需更具真实感的场景尤其如此,维持了一个很高的交互度。采样数可以根据光源的尺寸和对图像质量的要求进行修改。
