Руководство пользователя Decal Actor в Unreal Engine 4

0
9
Руководство пользователя Decal Actor в Unreal Engine 4

Отложенные декали обеспечивают лучшую производительность и упрощают эксплуатацию. Написание в GBuffer вместо пересчета освещения имеет несколько преимуществ:

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

Декаль создается путем рендеринга области, на которую нанесена декаль.

Добавление Декалей на уровень

Самый простой способ добавления декалей на сцену – это выбрать материал подходящей декали в контент браузере, затем щелкнуть правой кнопкой мышки внутри вьюпорта и выбрать Place Actor (Разместить актера) из контекстного меню. Затем декаль может быть изменена и ориентирована с использованием инструментов трансформации.

Добавление Декалей на уровень UE4Изменение размера, выкладывание и смещение

После создания декаль может быть позиционирована и ориентирована с использованием виджетов трансляции и поворота.

Размерность, блоки и смещение UE4Неравномерный виджет масштабирования управляет шириной, высотой и дальним расстоянием от объема декали.

Свойства отложенной Декали

Отложенная декаль имеет всего пару свойств:

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

Настройки Материала

Параметр DecalBlendMode определяет, как свойства материала (диффузный, зеркальный, нормальный, непрозрачный …) применяются к GBuffer.

Прозрачность используется для смешивания нескольких декалей. Эффективная декаль может управлять только несколькими свойствами GBuffer. На данный момент оптимизируемый процесс представлен другими режимами: DBM_DiffuseDBM_SpecularDBM_EmissiveDBM_Normal.

Наименование свойстваОписание
Translucent/ ПолупрозрачныйБудет смешивать весь материал, обновляя GBuffer, и не будет работать для запеченного освещения.
Stain/ ПятноМоделирует BaseColor (основной цвет), смешивает остальные, обновляя GBuffer, и не работает для запеченного освещения.
Normal/ НормальСмешивает только свойства Normal, обновляя GBuffer, и не работает для запеченного освещения.
Emissive/ ЭмиссионныйОпция только для аддитивной эмиссии (путем добавления).
DBuffer_Translucent Color, Normal, Roughness (Полупрозрачный цвет, Нормальный, Резкость)Для неметалла и в DBuffer также работает для запеченного освещения. Становится свойством DBM_TranslucentNormal, если свойство Normal не подключено.
DBuffer_Translucent Color (Полупрозрачный цвет)Для неметалла и в DBuffer также работает для запеченного освещения.
DBuffer_Translucent Color, Normal (Полупрозрачный цвет, нормальный)Для неметалла и в DBuffer также работает для запеченного освещения. Становится свойством DBM_DBuffer_Color, если свойство Normal не подключено.
DBuffer_Translucent Color, Roughness (Полупрозрачный цвет, резкость)Для неметалла и в DBuffer также работает для запеченного освещения.
DBuffer_Translucent Normal (Полупрозрачный нормальный)Для неметалла и в DBuffer также работает для запеченного освещения.
DBuffer_Translucent Normal, Roughness (Полупрозрачный нормальный, резкость)Для неметалла и в DBuffer также работает для запеченного освещения. Становится свойством DBM_DBuffer_Roughness, если свойство Normal не подключено.
DBuffer_Translucent Roughness (Полупрозрачный резкость)Для неметалла и в DBuffer также работает для запеченного освещения.
Volumetric Distance Function (experimental)/ Функция объемного расстояния (экспериментальная)Это приведет к выданному значению расстояния в Opacity (непрозрачность) в зависимости от LightVector (направления света).

DBM_ScreenSpaceMask является особенной опцией, поскольку она влияет на специальный канал маскирования, который в настоящее время используется SSAO (Ambient Occlusion). Это позволяет декали переопределять значение или исчезать в некоторых областях.

DBM_DiffuseSpecularEmissive – это режим, который влияет на несколько каналов GBuffer.

Обратите внимание, что режим смешивания материала также влияет на то, как значения GBuffer смешиваются вместе. Таким образом, можно умножать диффузный цвет.

Вы можете использовать режим просмотра GBuffer для проверки значений GBuffer, которые хранятся в пикселях.

Своя позиция декали – это трехмерное положение в диапазоне от 0 до 1. Текстура UV дает вам компонент Х и Y. Если вам нужен компонент Z, вы можете подключить узел CameraVector, чтобы получить все 3 векторных компонента.

Производительность Декали

Сложность меши объектов, на которые влияет декаль, не влияет на производительность. Эффективность декали зависит от сложности шейдера и размера шейдерного блока на экране.

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

Режим просмотра ShaderComplexity (редактор UI или «viewmode ShaderComplexity») можно использовать для того, чтобы увидеть влияние на стоимость пиксельного шейдера, т.к. он использует эту оценку пиксельных шейдеров и накапливается там, где несколько декалей накладываются друг на друга. В настоящий момент функция маскировки декаля не имеет никакого эффекта (маскированные части должны иметь небольшую постоянную стоимость из-за использования аппаратной функции трафарета). Ниже показана сцена без декали (слева) и с декалью (справа), в обычном рендеринге (вверху) и с включенным ShaderComplexity (внизу):

Производительность Декали UE4Более темный цвет указывает на более высокую производительность этих пикселей. Эта информация может быть использована для оптимизации правильных шейдеров, для удаления едва заметных декалей или их более эффективного использования.

Текущие ограничения

  • В настоящее время мы поддерживаем только отложенные декали, и они работают только на статических объектах.
  • В настоящее время нормальное смешивание не обтекает объект.
  • Потоковая передача еще не подключена, поэтому убедитесь, что текстура не транслируется.
  • Маскирующие декали (не влияющие на другие объекты) не полностью реализованы.

Исправление Артефактов блока 2×2

Декали могут иметь артефакты в виде блоков размером 2×2 пикселя по краям, как показано на скриншоте ниже.

2x2 артефакты UE4Это то место, куда входит узел “Decal Derivative” (производная Декали). Этот узел следует использовать осторожно, так как он имеет очень большое влияние на производительность. Он возвращает производные на оси X и Y текстуры декаля на значения по умолчанию, необходимых для анизотропной фильтрации текстур, но вычисляется он иначе, чем когда используются узлы по умолчанию и узлы DDX / DDY, чтобы избежать этого самого артефакта в виде блока размером 2×2 пикселя.

Производная Декали UE4И использование его исправляет те артефакты на декали, которые приносят пользу от них.

Текущие ограничения

  • DecalMipmapLevel не поддерживает пользовательский UV, но вы можете исправить его выход.