4

我目前有一个延迟渲染系统设置,可以渲染点光源和定向光源。我的问题是,对于不同形式的阴影,我有哪些选择,可以根据点光源和方向灯制作阴影,这可能会利用延迟着色设置?

4

1 回答 1

7

延迟渲染需要独特的阴影技术并没有什么特别之处。大多数产生阴影的标准方法都适用于延迟渲染方案。

阴影映射是当今游戏等实时应用中最常用的阴影算法。模板阴影在几年前很流行,但由于各种限制而有点失宠。阴影贴图可以很好地与延迟着色一起使用。阴影映射的基本算法相当简单:

  1. 从灯光的角度将深度渲染到渲染目标纹理(您需要为点光源渲染立方体贴图的 6 个面)。
  2. 当您为灯光执行光照通道时,对于每个像素,将世界空间位置转换为灯光的视图空间,并将深度与存储在阴影贴图中的深度进行比较。如果它大于阴影贴图深度,则该点处于阴影中,否则正常点亮。

与渲染一样,魔鬼在细节中。为了获得高质量的阴影,您需要仔细设置阴影贴图投影,以充分利用阴影贴图中可用的像素(搜索透视阴影贴图、级联阴影贴图)。由于精度问题,您将获得各种具有自阴影表面的伪影(“阴影痤疮”是最常见的一种),并且有多种策略可以减少这些伪影的发生率(深度偏差、投影矩阵调整)。为了减少分辨率不足的阴影贴图的块状、像素化外观,您可能需要执行一些阴影贴图过滤。Percentage Closer Filtering 是标准方法,有多种方法可以执行 PCF。

您还面临着阴影的标准质量/性能权衡,而动态阴影往往是场景渲染中最昂贵的方面之一。有许多技巧和技术可以尝试最大化阴影映射的性能。

最近,基本阴影映射算法出现了许多变体,它们试图通过不同地处理过滤问题来为给定的阴影映射分辨率提供更好看的结果。方差阴影贴图和指数阴影贴图是两种最近的技术,它们有一些不错的好处,但也有一些独特的问题。

Nvidia 的开发者网站是一个很好的图形编程资源,并且有很多关于阴影的文章。还可以查看网站上提供的 GPU Gems 书籍的 HTML 版本,它们有各种关于阴影的文章,包括 GPU Gems 3 中关于 Variance Shadow Maps 的权威文章。

于 2009-07-31T17:42:21.937 回答