Перейти к содержимому
Софт и программы аналитика · 27 сентября 2026

Virtual Shadow Maps в UE5: качество теней и цена в кадрах

автор web3D.pro чтение 8 мин обновлено 27 сентября 2026 Telegram X
Virtual Shadow Maps в UE5: качество теней и цена в кадрах

Virtual Shadow Maps решили старую проблему: тени в больших сценах перестали быть набором компромиссов между качеством вблизи и покрытием вдали. Взамен они принесли собственную статью расхода в кадре, которая у неаккуратной сцены съедает больше, чем сама геометрия.

Дальше о том, как эта система устроена, откуда берётся цена, какие настройки на что влияют и что делать со сценой, которая по теням просела.

Сцена с мягкими динамическими тенями. Virtual Shadow Maps в UE5: качество теней и цена в кадрах

Чем это отличается от обычных теневых карт

Классическая теневая карта это рендер сцены со стороны источника в текстуру фиксированного размера. Отсюда все её беды: на большой сцене разрешения не хватает, тень становится ступенчатой, и приходится дробить область на каскады с разной детализацией.

Новая система работает иначе. Виртуальная карта огромного разрешения разбита на плитки, и в память попадают только те плитки, которые реально нужны в текущем кадре. Плитка, приходящаяся на далёкий угол за спиной, не считается вовсе.

Следствие: детализация тени привязана к тому, сколько пикселей экрана она занимает, а не к произвольно выбранному размеру карты. Мелкие предметы вблизи получают чёткую тень, дальний фон грубую, и это происходит само.

Откуда берётся цена в кадре

Три источника расхода, которые надо различать.

Отрисовка страниц. Каждая плитка, попавшая в кадр впервые, должна быть отрисована. Геометрия рисуется заново со стороны источника, и стоимость зависит от сложности сцены.

Инвалидация. Если что-то в сцене сдвинулось, все плитки, которых это касается, помечаются недействительными и рисуются заново. Это главный источник неожиданных просадок.

Выборка при затенении. Чтение теней при расчёте освещения. Сравнительно дешёвая часть, но растёт с количеством источников.

Понимание того, какая из трёх частей нагружает кадр, определяет, что именно чинить.

Кэширование: главный механизм экономии

Система рассчитана на то, что большая часть сцены статична.

Отрисованные плитки сохраняются между кадрами. Пока источник и геометрия не двигаются, тени не пересчитываются вовсе, и расход падает почти до нуля.

Ломается кэш в понятных случаях. Двигается источник света: сбрасывается всё, что он освещает. Двигается объект: сбрасываются плитки, куда попадает его тень. Меняется материал, влияющий на отбрасывание тени. Включается или выключается видимость объекта.

Практический вывод, который определяет всю работу со сценой: движущийся источник света стоит принципиально дороже неподвижного. Не на проценты, а в разы.

Суточный цикл и почему он дорогой

Частый случай, где сцена неожиданно проседает.

Солнце, медленно ползущее по небу, инвалидирует кэш каждый кадр. Вся сцена перерисовывается постоянно, и весь смысл кэширования пропадает.

Что с этим делают. Двигают солнце не каждый кадр, а шагами с небольшой паузой: глаз не замечает, кэш успевает пожить. Ограничивают дальность теней от солнца. Для дальнего плана используют отдельные запечённые решения.

Если суточный цикл не нужен по задаче, неподвижное солнце это самая дешёвая оптимизация теней, какая существует.

Растительность и всё, что колышется

Второй по частоте источник проблем.

Листва, анимированная в вершинном шейдере, формально считается движущейся геометрией. Каждый кадр она инвалидирует плитки, и лес превращается в самую дорогую часть сцены по теням.

Приёмы. Отключить анимацию ветра в проходе теней: тень от колышущегося листа никто не изучает. Ограничить дальность, на которой растительность отбрасывает тень. Убрать тени у мелкой травы совсем, заменив их затемнением у основания.

Разница между сценой с настроенной растительностью и сценой с настройками по умолчанию бывает кратной.

Разрешение и настройка резкости

Параметры, которыми регулируют баланс.

Главный смысловой параметр это то, сколько пикселей карты приходится на пиксель экрана. Повышение даёт более чёткую тень и пропорционально более дорогую.

Понижение это самый прямой способ вернуть кадры, если тени стали узким местом. Тень станет мягче, и на многих сценах это незаметно.

Отдельно стоит вопрос кэш-пула: если памяти под плитки не хватает, система начинает вытеснять и перерисовывать их постоянно. Это выглядит как необъяснимая просадка, а лечится увеличением пула.

Взаимодействие с Nanite

Две системы, рассчитанные друг на друга.

Геометрия Nanite рисуется в теневые карты по своему пути, и для неё это заметно дешевле, чем для обычных мешей. Это одна из причин, почему смешанная сцена ведёт себя непредсказуемо: часть объектов дёшева в тенях, часть дорога.

Практический вывод: если сцена тяжёлая по теням и состоит из обычных мешей, перевод статичной геометрии на Nanite помогает дважды, по геометрии и по теням.

Что именно подходит для такого перевода, разобрано в материале про требования Nanite к моделям.

Сцена с мягкими динамическими тенями. Virtual Shadow Maps в UE5: качество теней и цена в кадрах

Артефакты и как их читать

Мерцание тени при движении камеры. Обычно нехватка кэш-пула или слишком агрессивное вытеснение.

Такие дефекты часто путают с ошибками сглаживания, и разница разобрана в материале про нормали при импорте в UE5.

Отрыв тени от объекта. Смещение, введённое для борьбы с самозатенением, задано слишком большим.

Полосы на плавных поверхностях. Обратная ситуация: смещение мало, поверхность затеняет сама себя.

Резкая граница качества в кадре. Переход между уровнями детализации плиток, лечится настройкой дальности.

Тень пропадает вдали. Упёрлись в заданную дальность отбрасывания теней.

Прозрачность и маскированные материалы

Категория объектов, которая стоит непропорционально дорого.

Материал с маской прозрачности нельзя отрисовать в теневую карту простым способом: движок обязан для каждого пикселя прочитать текстуру и решить, отбрасывает он тень или нет. Это тяжелее обычной геометрии в разы.

Больше всего страдают именно те объекты, которых в сцене обычно много: листва, решётки, сетки, цепи, ткань с дырками.

Что делать. Для дальних планов заменять маскированную геометрию на непрозрачную упрощённую. Ограничивать дальность теней у таких объектов отдельно от остальных. Уменьшать разрешение текстуры маски: для теней детальная маска не нужна.

Полностью прозрачные материалы теней не отбрасывают вовсе, и это иногда используют как приём: стекло делают не отбрасывающим тень, а нужное затемнение добавляют отдельно.

Потоковая загрузка и большие миры

На открытых пространствах появляются свои особенности.

Когда часть уровня подгружается и выгружается на ходу, каждое такое событие меняет состав геометрии и сбрасывает соответствующие плитки. На границе загружаемых зон это выглядит как периодические рывки.

Смягчают это несколькими способами. Ограничивают дальность теней так, чтобы граница загрузки была за её пределами. Используют упрощённые представления дальней геометрии, которые не меняются при подгрузке. Разносят события загрузки по времени, чтобы они не совпадали.

Общий принцип для больших миров: тень нужна там, где её видно вблизи. Дальний план обходится общим затемнением рельефа, и это никем не замечается.

Инструменты диагностики

Без них настройка превращается в гадание.

В движке есть режимы визуализации, показывающие раскладку плиток, их состояние кэша и то, какие объекты вызывают инвалидацию. Именно последнее отвечает на вопрос, кто съедает кадр.

Порядок диагностики. Посмотреть общую долю теней в кадре. Если велика, включить визуализацию инвалидации и найти виновника. Проверить, не переполнен ли пул. И только потом крутить разрешение.

Ошибка, которую делают чаще всего: начинают со снижения качества, не выяснив причину. Качество падает, кадры не растут, потому что проблема была в одном анимированном объекте.

Сцена с мягкими динамическими тенями. Virtual Shadow Maps в UE5: качество теней и цена в кадрах

Сколько источников света можно себе позволить

Вопрос, на который нет единого ответа, но есть правила.

Неподвижные источники в статичной сцене почти бесплатны после первого кадра. Их может быть много.

Подвижные источники стоят каждый кадр. Их должно быть мало, и каждый должен быть оправдан.

Источник с большим радиусом дороже источника с малым: он затрагивает больше плиток. Ограничение радиуса до реально нужного это бесплатная экономия.

Отдельный случай точечные источники: они отбрасывают тень во все стороны, то есть стоят заметно дороже направленных.

Что делать со сценой, которая просела

Порядок действий, дающий результат быстрее всего.

Найти движущиеся источники и оставить подвижными только необходимые. Отключить анимацию ветра в тенях. Ограничить дальность теней от растительности и мелких объектов. Проверить радиусы точечных источников. Убедиться, что пул не переполнен. Снизить разрешение теней на один шаг и сравнить.

Первые два пункта обычно дают больше, чем все остальные вместе.

Общие принципы освещения сцены и то, как тени сочетаются с глобальным светом, разобраны в материале про Lumen в UE5.

Когда систему стоит выключить

Редкий, но существующий случай.

Проект на слабом железе, стилизованная графика, мобильная платформа. Там классические каскадные карты дешевле и предсказуемее, а преимущества новой системы не востребованы.

Признак, что стоит подумать о выключении: сцена простая, объектов мало, а тени всё равно занимают заметную долю кадра.

Частые вопросы

Почему тени стали дороже после перехода на UE5?

Потому что система по умолчанию рассчитана на качество, а не на экономию, и потому что кэш ломается движением. Сцена, построенная по привычкам прошлых версий, обычно содержит несколько подвижных источников, которые раньше стоили дёшево.

Нужно ли запекать освещение?

Для статичных сцен с фиксированным светом запекание по-прежнему даёт лучшую производительность. Динамическая система нужна там, где свет меняется.

Влияет ли количество полигонов на стоимость теней?

Да, потому что геометрия рисуется в карту. Но для Nanite-геометрии это влияние заметно слабее, чем для обычной.

Можно ли отключить тени у отдельных объектов?

Да, и это один из самых эффективных приёмов. Мелкие предметы, декор и всё, что не формирует читаемую тень, спокойно обходятся без неё.

Почему в редакторе кадров больше, чем в собранном проекте?

Редактор и сборка по-разному обходятся с кэшем и потоковой загрузкой. Измерять производительность теней надо в сборке, иначе выводы будут неверными.

Найдите движущиеся источники света в сцене и оставьте подвижными только те, без которых нельзя. Это самая быстрая правка из всех перечисленных.

© 2026 web3D.pro · все права защищены тема web3D Pro · made with html