Подвижный Свет в Unreal Engine 4

0
14
Подвижный Свет в Unreal Engine 4

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

Затенение

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

Применение

На любом свете, под категорией Transform, вы найдете свойство pull down под названием Mobility; измените его на Movable. Это свойство также появляется на компонентах света, добавленных в Blueprint.свойство movable UE4

Кэширование теневой карты

Когда точка или пятно света не движется, мы можем сохранить теневую карту для этого света и повторно использовать его в следующем кадре. Это делает проливание тени подвижных Точечного и Прожекторного Света намного более доступным в играх, где окружающая среда часто не движется. В следующем документе мы рассмотрим, как вы можете использовать эту функцию в своих проектах Unreal Engine 4 (UE4).

Кэширование и производительность теневой карты

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

Для последующей демонстрации кэширования карты теней использовался проект Sun Temple. Вы можете найти карту Храма Солнца (Sun Temple) на вкладке Learn (Обучение) в игровой приставке Epic.

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

2. Установите Mobility света на Movable и убедитесь, что Cast Shadows включен.Подвижный Свет в Unreal Engine 4

3. Нажмите клавишу Backtick (`), чтобы открыть Kонсоль, и введите Stat Shadowrendering, чтобы увидеть текущую стоимость динамических теней.Stat Shadowrendering UE4

4. Нажмите кнопку Backtick (`) еще раз, чтобы открыть Консоль, и введите r.Shadow.CacheWholeSceneShadows 0, чтобы отключить динамическое кэширование тени.отключить динамическое кэширование тени UE4

Обязательно обратите внимание на цифры в разделах CallCount и InclusiveAug.

5. Теперь еще раз нажмите клавишу Backtick, чтобы открыть Консоль, и введите r.Shadow.CacheWholeSceneShadows 1, чтобы повторно включить теневое кэширование. Если вы сравниваете номера CallCount и InclusiveAug, вы можете увидеть влияние этой функции на динамическую производительность тени.

Теневое кэширование включено UE4Теневое кэширование включеноТеневое кэширование выключено UE4Теневое кэширование выключено

Представление

Кэширование теневой карты оказывает значительное влияние на производительность. Ниже приведены результаты тестирования этой оптимизации с использованием графического процессора NVIDIA 970 GTX при разрешении экрана 1920 x 1200.

  • Перед тем, как включить эту функцию, трем лучам теневого точечного света без кеширования потребовалось 14.89 мс для визуализации глубины тени Shadow Depths.
  • Когда были активированы кешированные карты теней, тем же трем лучам теневого точечного света понадобилось 0.9 мс для рендеринга, что примерно в 16 раз быстрее!
Обратите внимание на то, что по-прежнему нужно 2 мс, чтобы отобразить вклад 33 точечного света, который может быть оптимизирован другими способами, но на это не повлияет.
  • Вы можете управлять памятью максимального объема, используемой кэшем теневой карты, с помощью r.Shadow.WholeSceneShadowCacheMb.

Ограничения

Хотя кэширование теневой карты может снизить стоимость использования динамических теней в ваших проектах UE4, существуют некоторые ограничения, которые могут привести к артефактам рендеринга, если они используются с не поддерживаемыми функциями. В следующем разделе мы рассмотрим, каковы ограничения кэширования карты тени и что вы можете с ними делать.

  • По умолчанию кэширование может происходить только тогда, когда объект отвечает следующим требованиям:
    • Примитивы имеют мобильность, Mobility установлена ​​на Static или Stationary.
    • Материалы, используемые на уровне, не используют World Position Offset.
    • Свет должен быть либо Point (Точечным), либо Spot (прожекторным) светом, его Mobility установлена ​​на Movable и включена функция Shadow Casting.
    • Свет должен оставаться в одном месте.
    • Материалы, которые используют анимированную Тесселляцию или Pixel Depth Offset (смещение пиксельной глубины), могут вызывать артефакты по мере того, как их теневые глубины кэшируются.