Полезное

Мы Вконтакте

Декали

Добавлено Май 25 2016

Декали обеспечивают лучшую производительность и более легкое обслуживание. Запись в 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 (внизу):

ShaderComplexity

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

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

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

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

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

Артефакты

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

Корректирование материала

Итог:

Отсутствие артефактов

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

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

Добавил: Flakky Категория: Объекты и Геометрия


Комментарии

На данный момент комментарии отключены.

UEngine.ru © 2015
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница