Отражения Плоскости в Unreal Engine 4

0
29
Отражения Плоскости в Unreal Engine 4

Отражения плоскости

UE4 поддерживает функцию Planar Reflection (отражения плоскости) в режиме реального времени, которая может давать более точные отражения, чем Screen Space Reflections (SSR), но при этом имеет более высокую стоимость рендеринга. Эта более высокая стоимость рендеринга обусловлена ​​тем, как работает Planar Reflection, поскольку Planar Reflection фактически снова выводит уровень из направления отражения.Отражения Плоскости в Unreal Engine 4

Отражение экранного пространства VS Planar Reflections

Отражатели экрана (SSR) намного эффективнее Planar Reflections, когда речь идет о рендеринге, но также гораздо менее надежны. Ниже приведено сравнение уровней SSR и Planar Reflections.

Отражатели экрана SSR UE4Отражатели экрана

(SSR)

Отражения Плоскости PR UE4Отражения Плоскости

(Planar Reflections)

 

  • Screen Space Reflections (Отражение экрана): изображение слева показывает ограничение отражения экрана SSR. Обратите внимание на значительное количество «утечек», которое происходит по краям изображения. Это происходит потому, что SSR не может отображать объекты, которые находятся вне экрана.
  • Planar Reflections (Плоскостное отражение): изображение справа показывает тот же уровень, однако на этот раз Planar Reflections были включены. Обратите внимание, что на изображении нет утечек, даже по бокам. Это связано с тем, что Planar Reflections может отражать объекты, которые находятся вне экрана.

Включение Отражений плоскости

Чтобы включить и использовать Planar Reflections в вашем проекте, вам нужно будет сделать следующее:

  1. На главной панели инструментов перейдите в меню Edit > Project Settings и в меню Project Settings перейдите в раздел Rendering > Optimizations. раздел Rendering > Optimizations UE4

2. Нажмите на флажок рядом с Support global clip plane for Planar Reflections и заново запустите редактор UE4 при появлении запроса.опция Support global clip plane for Planar Reflections UE4

Если перезапустить редактор UE4 после включения Planar Reflections, это приведет к тому, что Planar Reflections не будет работать.

3. После перезапуска редактора UE4 перейдите на панель Modes и из раздела Visual Effects выберите и перетащите Planar Reflection Actor на уровень.перетащить Planar Reflection Actor на уровень UE4

4. Теперь, когда Planar Reflection Actor находится на уровне, теперь вы можете использовать клавишу G, чтобы скрыть и отобразить Актера. Вы также можете использовать инструменты MoveRotate и Scale для улучшения положения и размера Planar Reflection Actor для удовлетворения ваших потребностей в уровнях.

Любые близлежащие отражающие материалы автоматически будут затронуты Актером Planar Reflection, как только он будет добавлен к уровню. Статик меши, размещенные на уровне, также будут иметь нормали, используемые для искажения отражения, что позволяет моделировать волны.

Свойства Planar Reflection Actor

У Planar Reflection Actor есть ряд свойств, которые при настройке могут существенно повлиять на внешний вид отражения. Следующая таблица описывает эти свойства и как они изменят внешний вид Planar Reflection.Свойства Planar Reflection Actor UE4

СвойстваОписание
Normal Distortion StrengthУправляет силой нормалей при искажении отражения плоскости.
Prefilter RoughnessЗначение резкости для предварительной фильтрации текстуры отражения. Это нужно для того, чтобы скрыть низкие разрешения. Большие значения имеют большую стоимость GPU.
Distance from Plane Fadeout StartПри получении пикселей на этом расстоянии от плоскости отражения начнет исчезать плоскостное отражение.
Distance from Plane Fadeout EndПрием пикселей на этом расстоянии от плоскости отражения полностью исчезнет из плоскостного отражения.
Angle from Plane Fade StartПринятие пикселей, нормали которых под этим углом от плоскости отражения начнут исчезать из плоскостного отражения.
Angle from Plane Fade EndПринятие пикселей, нормали которых находится под этим углом от плоскости отражения, полностью погасят плоскостное отражение.
Show Preview PlaneПереключает видимость отражения плоскости во время работы в редакторе. Это не влияет на плоскостное отражение.
Расширенные свойства 
Prefilter Roughness DistanceРасстояние, на котором будет достигнуто значение резкости предварительного фильтра.
Screen PercentageПроцент опроса может быть использован для уменьшения времени GPU, отражающего плоскостное отражение. Это напрямую влияет на качество отражения, возникающего при плоскостном отражении.
Extra FOVДополнительное поле зрения – Field of View (FOV), используемое при рендеринге для отражения текстуры. Это необходимо, когда искажение нормали вызывает чтение за пределами текстуры отражения. Большие значения увеличивают рендеринг потоков и стоимость GPU, так как больше объектов и треугольников необходимо отражать в плоскостном отражении.
Render Scene Two-SidedЯвляется ли рендеринг сцены двусторонним, что может быть полезно для скрытия артефактов, где искажение нормали будет читать «под» объект, который был обрезан плоскостью отражения. Когда этот параметр включен, задние поверхности меши будут отображаться в обрезанной области вместо фона, который потенциально является ярким небом. Обязательно добавьте плоскость воды в Скрытые Актеры (Hidden Actors), если это разрешено, так как плоскость воды не будет блокировать отражение.
LOD Distance FactorМасштабирует расстояние, используемое уровнем детализации (LOD). Установите значения больше 1, чтобы заставить захват сцены использовать более низкие LOD, чем основной вид, чтобы ускорить пропуск захвата сцены.

Свойства Scene Capture Актера отражения плоскости

Актер Planar Reflection Actor также обладает рядом свойств, которые позволяют вам контролировать стоимость исполнения отраженного в реальном времени отражения.Свойства Scene Capture UE4

СвойствоОписание
Primitive Render ModeУправляет тем, какие примитивы попадают в захват сцены.

  • Render Scene Primitive (Legacy) – отображает все примитивы в сцене.
  • Render Scene Primitives – отображает все примитивы на сцене, кроме добавленного в список Hidden Actors (скрытых актеров).
  • Use ShowOnly List – отображает только актеры, перечисленные в списке Show Only Actors.
Hidden ActorsСписок выбранных актеров, доступных на уровне, чтобы скрыть захват сцены.
Show Only ActorsСписок участников, доступных на уровне, который будет отображаться при захвате этой сцены при использовании режима Primitive Render Mode для Use ShowOnly List.
Capture Every Frame Показывает, обновлять ли содержимое захвата каждый кадр. Если этот параметр отключен, компонент будет отображаться один раз при загрузке, а затем только при перемещении.
Capture on Movement Показывает, обновлять ли содержимое захвата при движении. Параметр отключен, если вы собираетесь захватить вручную из Blueprint.
Always Persist Rendering State Показывает, сохранять ли состояние рендеринга, даже если параметр Capture Every Frame (захват каждого кадра) отключен. Это позволяет вычислять скорости для Motion Blur и Temporal Anti-Aliasing (TAA).
Max View Distance Override Устанавливает максимальное расстояние рендеринга (в сантиметрах) для примитивов, визуализированных при захвате сцены, когда значения больше 0. Это может использоваться для отбраковки объектов расстояния от отражения, если отражающая плоскость находится в закрытых областях, таких как прихожая или комната.
Capture Sort Priority Устанавливает приоритет захвата в кадре для сортировки захвата сцены на GPU, чтобы разрешить взаимозависимости между несколькими компонентами захвата. Первым будет наивысшее значение.
Profiling Event Name Устанавливает имя события профилирования при профилировании графического процессора. Это полезно знать – какое плоскостное отражение используется при использовании нескольких уровней на ваших уровнях.
Расширенные свойства 
General Show Flags Общая функция показывает флажки отображения, которые переключают некоторые объекты и актеры с рендеринга на захват сцены, например, Сглаживание, Туман, Статик и Скелетные Меши и многое другое.
Advanced Show Flags Общая расширенная функция показывает флажки отображения, которые переключают некоторые объекты и актеры с рендеринга на захват сцены. Это может быть, например, Листва, Экземпляры Статик Мешей, Paper 2D Sprites и многое другое.
Post Processing Show Flags Переключает флажки отображения для Bloom, Eye Adaptation и Motion Blur от рендеринга до захвата сцены.
Light Types Show Flags Переключает флажки отображения для Небесного освещения от рендеринга до захвата сцены.
Lighting Components Show Flags Переключает флажки отображения для Ambient Occlusion и Dynamic Shadows от рендеринга до захвата сцены.
Lighting Features Show Flags Переключает общие флажки отображения для Объектов Освещения от рендеринга до захвата сцены. Например, Distance Field Ambient Occlusion (DFAO), Световые функции, Отражения пространства экрана и многое другое.
Hidden Show Flags
 Переключает флажки отображения Освещения и Постобработки от рендеринга до захвата сцены.

Ограничения Планарного Отражения

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

  • Плоскостные отражения приводят к тому, что вся ваша сцена будет визуализироваться дважды, поэтому у вас возникнет желание выделить для нее половину своего времени кадра в потоке рендеринга и графическом процессоре!
  • Ограничьте количество планарных отражений в мире. Зачастую одного все еще будет слишком много.
  • Подберите соответствующий размер, чтобы его можно было отбраковать, когда он будет не виден.
  • Стоимость рендеринга Planar Reflection Actor напрямую зависит от того, что в данный момент отображается на уровне. Сцены с треугольным рисунком и интенсивным отображением будут страдать от большинства проблем с производительностью, если эта функция включена, поскольку эти затраты не масштабируются с процентным соотношением экрана.

Производительность Планарных Отражений

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

Чтобы показать, как влияют на производительность Planar Reflections, мы будем использовать версию 4.12 проекта Kite & Infinity Blade Grass Lands, которую можно найти в модуле запуска UE4.

Производительность Планарных Отражений и Kite Demo

Из-за размера и разной высоты демонстрации ландшафта, а затем масштабирования одного плоского актера отражения для охвата всего уровня не будут работать и могут привести к очень низкой производительности. Вместо этого, Плоские Отражающие Актеры были стратегически размещены и масштабированы, чтобы соответствовать областям уровня, который нуждался в них. На следующем изображении мы можем увидеть, как визуальное воздействие Planar Reflections на воду использует демонстрационная версия Kite.

Planar Reflection Off UE4Planar Reflection OffPlanar Reflection On UE4Planar Reflection On

В то время как визуальное воздействие на уровень оказывают плоские отражения, оно весьма драматично, так же как и их влияние на производительность. Если вы посмотрите на левое изображение ниже, Planar Reflection Off, вы увидите, что весь уровень рендеринга занимает 31 мс. Если вы посмотрите на правое изображение, Planar Reflections On, вы увидите, что весь уровень рендеринга занимает 29,19 мс. Кроме того, Planar Reflection добавляет дополнительные 23,07 мс. времени рендеринга, увеличив общее время рендеринга сцены с включенными Planar Reflections до 52 мс.

Planar Reflection Off UE4

Planar Reflection Off

Planar Reflection On UE4

Planar Reflection On

Причина, по которой планарным отражениям для рендеринга требуется около 31 мс., связана с полностью динамическим освещением и тенями, используемыми в Kite. Уровни, которые используют Стационарное / Предварительно вычисленное освещение и затенение, будут намного более эффективными при повторной визуализации для Плоского Отражения.

Производительность Планарных Отражений и Infinity Blade Dungeons

Из-за размера и расположения карты Эльфийских руин Infinity Blade было необходимо только одно плоское отражение, и оно было масштабировано в соответствии с уже существующей водной статик мешью, которая была размещена на уровне. На следующих изображениях мы можем видеть визуальное влияние добавления плоского отражения на вид воды на карте Эльфийских руин.

Planar Reflection Off UE4Planar Reflection OffPlanar Reflection On UE4Planar Reflection On

Хотя добавление Planar Reflection делает воду более реалистичной, ее влияние на производительность довольно мало по сравнению с демонстрацией Kite. Если вы посмотрите на изображение с левой стороны ниже, Planar Reflections Off, вы увидите, что без Planar Reflections сценарирование требует около 11 мс. для рендеринга. Если вы посмотрите на изображение с правой стороны, Planar Reflections On, вы увидите, что с Planar Reflections стоит около 1,67 мс. на рендеринг, а общее время рендеринга уровня – около 13 мс.

Planar Reflection Off UE4Planar Reflection OffPlanar Reflection On UE4Planar Reflection On

Причина того, что для рендеринга планарных отражений на карте Эльфийских руин стоит всего 1,67 мс., а для рендеринга планарных отражений в версии демонстрации Kite – 23,07 мс., объясняется тем, как были построены Статик Меши и материалы, используемые в эльфийских руинах. Поскольку карта Эльфийских руин и ее контент были разработаны для мобильных устройств, пристальное внимание было уделено количеству треугольников и инструкциям по материалам для каждого используемого ресурса. По этой причине, когда на карте эльфийских руин включены плоские отражения, они будут стоить дешевле, поскольку ресурсы, используемые на карте, значительно уменьшаются по сложности и размеру по сравнению с активами Kite Demo.