Детали реализации теневых каскадов
На этой странице описаны технические детали реализации теневых каскадов.
Перспективное псевдоизображение
Направленный свет, как правило, имитирует солнечный свет, и один направленный свет может осветить всю Scene. Это означает, что его карта тени покрывает большую часть Scene, что может привести к проблеме, называемой перспективным алюзированием. Перспективное алюзирование означает, что пиксели карты тени, близкие к Camera, выглядят увеличенными и крупными по сравнению с теми, которые находятся дальше.
Перспективное алюзирование происходит потому, что различные области карты тени масштабируются непропорционально по перспективе камеры. Карта тени от света должна покрывать только ту часть Scene, которая видна Camera, которая определяется пирамида видимостиCamera. Если вы представите простой случай, когда направленный свет приходит прямо сверху, вы можете увидеть взаимосвязь между frustum и картой тени.
В этом упрощенном примере дальней конец фрустума покрыт 20 пикселями карты тени, в то время как ближайший конец покрыт только 4 пикселями. Однако оба конца выглядят одинаковыми по размеру на экране. В результате разрешение карты значительно меньше для теневых областей, которые находятся вблизи камеры.
Как работают каскады теней
Перспективное алюзирование менее заметно, когда вы используете опцию Мягкие тени, и когда вы используете более высокое разрешение для карты теней. Однако эти решения используют больше памяти и пропускной способности во время рендеринга.
При использовании каскадов теней, Unity разделяет область фрустума на две зоны в зависимости от расстояния от камеры. Зона на ближнем конце использует отдельную карту теней уменьшенного размера (но с тем же разрешением). Эти поэтапные уменьшения размера карты теней известны как каскадные карты теней (иногда называемые параллельными картами разделенных теней).