UnigineEditor
Interface Overview
Assets Workflow
Settings and Preferences
Working With Projects
Adjusting Node Parameters
Setting Up Materials
Setting Up Properties
Lighting
Landscape Tool
Using Editor Tools for Specific Tasks
Extending Editor Functionality
编程
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine Tools
GUI
Double Precision Coordinates
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes

平行分割阴影映射

平行分割阴影贴图(PSSM)是一种先进的阴影贴图技术,可减轻标准阴影贴图产生的一些问题。

PSSM的思想在于将视锥平视体拆分为与视平面平行的深度层,并为拆分部分渲染独立的阴影贴图。根据与观察者的距离,被映射的点需要不同的采样频率。由于场景几何的复杂性,很难在整个范围内提供足够的采样密度。但是,将视锥的视图分成不同深度范围的较小部分可以优化纹理像素的分布并提供更高的采样率。

PSSM创建#

创建平行分割阴影贴图有4个基本步骤。

第1步。将视锥平视分为几个深度部分。#

根据所选的分割算法和应用程序的实际需求,调整将视锥的视线沿z轴拆分为平行部分的位置。分辨率最高的阴影贴图将用于距离观看者最近的部分,分辨率较低的阴影贴图用于距离更远的部分。

PSSMs distribution

根据选择的参数,当拆分部分紧凑且密集放置时,拆分部分的分布可以很小,而拆分后的部分则更大,并且拉伸程度更大。

第2步。分裂光的视锥。#

与标准阴影贴图中一样,在生成阴影贴图时,必须了解灯光的视图才能计算投影矩阵。灯光的视锥分离成几个部分,覆盖了相应的视锥视分离部分。它也包括那些可能在其外部投射阴影的对象。

PSSM range

范围标度指定光源的视锥拆分部分的确切扩展。例如,选择较大的比例可以使较高的对象(例如树木或房屋)将阴影投射到场景上,即使它们没有直接包含在其中。

步骤3.渲染PSSM。#

每个阴影贴图都以适当的分辨率和参数顺序地用于每个分割部分。

步骤4.合成阴影。#

生成PSSM后,可以为整个场景合成阴影效果。该算法与标准阴影映射中使用的算法相同。唯一的区别是在确定像素是否有阴影时从PSSM中选择正确的阴影贴图。

的优点和缺点#

与标准阴影映射技术相比,并行拆分阴影映射具有以下优点,这对于大规模虚拟环境很重要:

  • 由于增加了纹理空间中的采样频率,显着减少了混叠误差。
  • 当光线和视线方向几乎相反时,成功处理了决斗的视锥细胞情况。
  • 在实现更好的动态阴影效果的同时充分利用可用的阴影贴图分辨率。
  • 不需要昂贵的场景分析的拆分方案。

通过PSSM的实际实施还存在一些困难:

  • 生成阴影贴图和合成阴影需要多次渲染,以牺牲性能为代价进行质量转换:在典型情况下,与标准阴影贴图相比,使用PSSM技术渲染的多边形数量要大得多。
  • 应该仔细选择存储策略,否则,它会对可用的插值器产生相当大的需求。
  • PSSM中的分裂平面引入了不连续性,可能会干扰纹理过滤。
注意
考虑到该技术的所有优点和缺点,建议仅将PSSM与可照亮所有场景的全局光源一起使用。
最新更新: 2020-10-10