Отображение теней с параллельным разделением
The Parallel-Split Shadow Mapping (PSSM) is an advanced shadow mapping technique, alleviating the some of the problems produced by the standard shadow map. Параллельно-разделенное отображение теней (PSSM) - это усовершенствованная техника отображения теней, которая устраняет некоторые проблемы, возникающие при использовании стандартной карты теней.
The idea of PSSM consists in splitting the view frustum into depth layers parallel to the view plane and rendering independent shadow maps for the split parts. Depending on the distance from the viewer, the points being mapped need different sampling frequency. It is hard to provide the sufficient sampling density in the whole range due to the complexity of the scene geometry. However, the splitting of the view frustum into smaller parts with different depth ranges optimizes the distribution of texture pixels and provides the increased sampling rates. Идея PSSM состоит в разделении пирамиды обзора на слои глубины, параллельные плоскости обзора, и визуализации независимых карт теней для разделенных частей. В зависимости от расстояния от зрителя для отображаемых точек требуется разная частота дискретизации. Обеспечить достаточную плотность дискретизации во всем диапазоне сложно из-за сложности геометрии сцены. Однако разделение пирамиды обзора на более мелкие части с разными диапазонами глубины оптимизирует распределение пикселей текстуры и обеспечивает повышенную частоту дискретизации.
PSSM creationСоздание PSSM#
There are 4 basic steps in creating the parallel-split shadow map. Есть 4 основных шага в создании карты теней с параллельным разделением.
Step 1. Splitting the view frustum into several depth parts.Шаг 1. Разбиение пирамиды вида на несколько частей по глубине.#
The positions splitting the view frustum into parallel parts along the z axis are adjusted according to the chosen split algorithm and practical requirements of the application. The shadow map with higher resolution will be used for the part nearest to the viewer, and the ones with the lower resolutions for the parts further distanced. Позиции, разделяющие пирамиду вида на параллельные части по оси z, регулируются в соответствии с выбранным алгоритмом разделения и практическими требованиями приложения. Карта теней с более высоким разрешением будет использоваться для части, ближайшей к зрителю, а карты с более низким разрешением - для частей, находящихся дальше.
Depending on the chosen parameters the distribution of the split parts can be small, when they are compact and densely positioned, and large, with split parts bigger and more stretched. В зависимости от выбранных параметров распределение разделенных частей может быть небольшим, когда они компактны и плотно расположены, и большим, когда разделенные части больше и более растянуты.
Step 2. Splitting the light's frustum.Шаг 2. Разделение усеченной пирамиды источника света.#
As in standard shadow mapping, it is necessary to know the light's view to calculate projection matrices when generating the shadow map. The light's frustum is split into several parts covering the corresponding view frustum split parts. It also includes the objects potentially casting shadows onto the part though being outside of it. Как и в стандартном картировании теней, необходимо знать вид источника света для расчета матриц проекции при создании карты теней. Усеченная вершина источника света разделена на несколько частей, покрывающих соответствующие части усеченной вершины вида. Он также включает объекты, которые могут отбрасывать тени на деталь, хотя и находятся за ее пределами.
The range scale specifies the exact extension of the light's frustum split parts. For example, choosing the larger scale allows the high objects (like trees or houses) to cast shadow onto the scene even if they are not directly included in it. Шкала дальности определяет точное протяженность разделенных частей усеченной пирамиды источника света. Например, выбор большего масштаба позволяет высоким объектам (например, деревьям или домам) отбрасывать тень на сцену, даже если они не включены в нее напрямую.
Step 3. Rendering PSSMs.Шаг 3. Визуализация PSSM.#
Each shadow map is sequentially rendered with appropriate resolution and parameters for each split part. Каждая карта теней последовательно визуализируется с соответствующим разрешением и параметрами для каждой разделенной части.
Step 4. Synthesizing Shadows.Шаг 4. Синтезирование теней.#
With the PSSMs generated, the shadow effects can be synthesized for the whole scene. The algorithm is the same as used in standard shadow mapping. The only difference is selecting the correct shadow map from PSSMs when determining if a pixel is shadowed. Сгенерированные PSSM позволяют синтезировать теневые эффекты для всей сцены. Алгоритм такой же, как и при стандартном отображении теней. Единственная разница заключается в выборе правильной карты теней из PSSM при определении, затенен ли пиксель.
Advantages and DisadvantagesПреимущества и недостатки#
Compared to the standard shadow mapping technique the parallel-split shadow mapping has the following advantages, which are important for large-scale virtual environments: По сравнению со стандартной техникой отображения теней, отображение теней с параллельным разделением имеет следующие преимущества, которые важны для крупномасштабных виртуальных сред:
- Significant reducing of the aliasing errors due to increased sampling frequency in texture space. Значительное уменьшение ошибок наложения спектров за счет увеличения частоты дискретизации в пространстве текстур.
- Successful handling of the dueling frusta case, when the light and view directions are nearly opposite. Успешная обработка случая дуэльной фруста, когда направления света и обзора почти противоположны.
- Fully exploiting available shadow map resolution while implementing better dynamic shadowing effects. Полное использование доступного разрешения карты теней при улучшении динамических эффектов затенения.
- Split scheme that does not require expensive scene analysis. Схема разделения, не требующая дорогостоящего анализа сцены.
There also appear some difficulties by practical implementation of the PSSM: Также возникают трудности с практической реализацией PSSM:
- Multiple rendering passes are required for generating shadow maps and synthesizing shadows, trading performance cost for quality: in typical cases the number of polygons rendered using PSSM technique is much bigger compared to a standard shadow map. Для создания карт теней и синтеза теней требуется несколько проходов рендеринга, в результате чего стоимость производительности меняется на качество: в типичных случаях количество полигонов, визуализируемых с использованием метода PSSM, намного больше по сравнению со стандартной картой теней.
- Storage strategy should be carefully chosen, otherwise, it can place considerable demand on the available interpolators. Следует тщательно выбирать стратегию хранения, в противном случае это может вызвать значительную нагрузку на доступные интерполяторы.
- The splitting planes in PSSM introduce discontinuities that can interfere with texture filtering. Плоскости разделения в PSSM создают неоднородности, которые могут мешать фильтрации текстур.