понедельник, 15 августа 2016 г.

Unreal Engine 4 - Настройка Decals

Включение Decals



Декали

Декали обеспечивают лучшую производительность и более легкое обслуживание. Запись в GBuffer не требует перерасчета освещения и имеет ряд преимуществ:
  • Сцена с большим количеством источников света становится намного более предсказуема, потому что нет никаких ограничений для декалей на количество и тип освещения.
  • Манипулируя пространством экрана маска позволяет создать эффекты которые в противном случае считались бы с большими ресурсозатратами (наремер эффект мокрой поверхности).
Декаль отображает рамку в редакторе вокруг затрагиваемой области.



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

Самый простой способ добавить декаль на сцену — выбрать соответствующий материал декали в Content Browser, а затем щелкнуть правой кнопкой мыши внутри View области и выбирать Place Actor из контекстного меню.
Декаль затем может быть изменена и ориентирована с помощью инструментов трансформации.


Масштабирование, тайлинг, смещение

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


Масштабирование виджета контролирует ширину, высоту и глубину объема наложения декали.
Свойства декалей


СвойствоОписание
MaterialУказывает материал, который будет использоваться в качестве декали.
Sort OrderЭто позволяет пользователю установить значение для управления тем как несколько декалей будут сортироваться при наложении друг на друга. Более высокие значения оказываются сверху.

Будьте осторожны при установке значения сортировки. Установка большого количества раличных значений для различных декалей может нанести вред производительности.

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

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

Opacity используется чтобы смешать несколько декалей. Эффективные декали манипулируют только несколькими GBuffer свойствами. В настоящее время некоторым свойствам, в целях оптимизации, представлена альтернатива: DBM_Diffuse, DBM_Specular, DBM_Emissive, DBM_Normal.


СвойствоОписание
TranslucentИспользуется для полупрозрачных декалей.
StainМоделирует BaseColor но не работает для запеченного освещения.
NormalОтображает Normal свойство и не работает для запеченного освещения.
EmissiveЛишь добавляет к текущему цвету цвет декали.
DBuffer_Translucent Color, Normal, RoughnessТрансформируется в DBM_TranslucentNormal если Normal не используется. Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent ColorДля неметаллов, работает для запеченного освещения.
DBuffer_Translucent Color, NormalТрансформируется в DBM_DBuffer_Color если Normal не используется. Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent Color, RoughnessДля неметаллов, работает для запеченного освещения.
DBuffer_Translucent NormalДля неметаллов, работает для запеченного освещения.
DBuffer_Translucent Normal, RoughnessТрансформируется в DBM_DBuffer_Roughness если Normal не используется. Для неметаллов, работает для запеченного освещения.
DBuffer_Translucent RoughnessДля неметаллов, работает для запеченного освещения.
Volumetric Distance Function (experimental)Будет выводить знаковое расстояние в Opacity в зависимости от вектора освещения.


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

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

Обратите внимание, что режим смешивания материала также влияет на то как значения GBuffer смешиваются друг с другом.

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

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

Сложность мешей на которые накладывается декаль не влияет на производительность. Производительность для декали зависит от сложности шейдера и её размера на экране.

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

Автоматизированный метод возможен, но хороший дизайнер может также регулировать размещение самостоятельно.

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

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





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


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

    Исправление артефактов


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



    Исправить это можно использовав Decal Derivative (однако осторожно, ибо эта нода имеет большое влияние на производительность). Она возвращает производные по X и Y оси текстуры декали в координаты по умолчанию, это необходимо для анизотропной фильтрации текстур, но вычисляется иначе чтобы избежать артефакта.



    Итог:

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

    DecalMipmapLevel не поддерживает пользовательские UV.

    Взято с сайта uengine.ru


    Комментариев нет:

    Отправить комментарий

    Примечание. Отправлять комментарии могут только участники этого блога.