Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Смешивание различных типов материалов




Смешивание различных типов материалов

С волюмами постобработки крайне просто настроить плавный переход между различными материалами постобработки. Так мы используем один волюм, помеченный как непривязанный и имеющий большой радиус смешивания (около 1000):

Для каждого волюма мы определяем различный тип одного и того же материала. Цвет указывается как параметр, что и позволяет иметь различные настройки для разных типов материала.

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

При движении – уже двух.

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

Блок материала «SceneTexture»

Вы можете добавить блок материала «SceneTexture» к своему материалу и выбрать, какую текстуру необходимо использовать:

Нода имеет необязательный вход и несколько выходов:

UV-вход определяет, в каком месте вы хотите сделать lookup-текстуру (используется только для цветового выхода). Выход «Color» состоит из четырех выходов, выделенные (в зависимости от ID текстуры сцены (Scene Texture)) под отдельные каналы. Выход «Size» – это 2 компонента вектора: ширина и высота текстуры. Обратную им величину (1/ширина, 1/высота) можно получить на выходе «InvSize».
Это полезно в подобных случаях:

В примере выше, блок материала просчитывает разницу глубины данного пикселя и соседнего.

Использование параметров G-буфера

G-буфер состоит из нескольких текстур, которые содержат материалы (к примеру, подповерхностный/отраженный цвет, шероховатость; subsurface/specular color, roughness) и атрибуты объекта (нормали, глубина) без данных об освещении и его взаимодействии с материалом. В различных рендерерах мы сначала рендерим G-буфер, затем просчитываем все освещение (отложенное) с атрибутами G-буфера. Так как UE4 использует отложенное затенение (DirectX 11 или последние версии OpenGL), мы получаем доступ к данному буферу в процессе постобработки.

Но здесь нам несколько мешает сглаживание, поскольку пиксель/тексель G-буфера больше не относится как 1: 1 с итоговым пикселем (смотрите секцию ниже).

CustomDepth

Эта особенность предоставляет возможность скрывать определенный объект путем его рендера в буфер глубины, называющийся пользовательским буфером глубины (Custom Depth Buffer). Этот метод увеличивает количество вызовов отрисовки при том же количестве материалов. Рендеринг получается крайне дешевым, поскольку на выходе лишь глубина.
Функция активируется для мешей («Static Mesh Properties / Render Custom Depth»; Настройки статичного меша/Рендер пользовательской глубины):

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

Здесь вы можете посмотреть пользовательскую глубину:

А это материал, который мы использовали для визуализации:

Временное сглаживание или Почему G-буфер «дрожит»

Временное сглаживание – это уникальная особенность UE4, которая отлично влияет на качество изображения, потребляя при том среднее количество ресурсов.
По умолчанию, материал постобработки вставляется в конец графа (после тоновой компрессии). Это означает, что вы получаете финальное LDR-изображение после тоновой компрессии, цветокоррекции и применения временного сглаживания. И это лучший вариант для простых эффектов постобработки с точки зрения производительности и легкости использования.
Здесь вы можете увидеть, как мы использовали вход пользовательской глубины для визуализации силуэта определенных объектов:

Заметьте, что на предыдущем изображении края объекта не были сглажены. Но во время движения вы заметите, что силуэт объекта «дрожит». Это происходит по той причине, что временное сглаживание перемещает рендеринг все сцены каждый кадр на каждый пиксель. Из нескольких кадров, скомбинированных вместе, получается финальное сглаженное изображение. Хотя, мы, конечно, можем переместить материал в более раннее положение в графе постобработки для исправления подобных артефактов.
Вот результат:

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...