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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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

Известные проблемы

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

o Separate Translucency не работает.

o Отфильтрованные (билинейно) lookups не работают.

o Определенные lookups не работают в некоторых проходах (возможно, не все из них будут исправлены, ввиду больших затрат ресурсов компьютера).

o MaterialFunction может выдавать ошибку, хотя и продолжать работать с доменом постобработки.

Материалы

o UV в PostProcesMaterial не может принимать значения из промежутка от 0 до 1(например, при уменьшении размеров вьюпорта).

o Миниатюра ассета с материалами постобработки отображается неправильно.

o Альфа-канал в качестве выхода пока не поддерживается (используйте «Opacity» (Непрозрачность).

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

o В некоторых случаях изменение материала ни к чему не приводит в постобработке. Для исправления – перезагрузите редактор.

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

o Режим смешивания материалов не работает для материалов постобработки.

Смешивание

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


 

Blendables

Blendables – ассет, имеющий свойства, позволяющие ему аккуратно смешиваться с другими такими же. Мы в Epic Games чаще всего используем Blendables для PostProcessMaterials, но эта система подходит для всего, что зависит от вида (т.е. в основном, для связанного с камерой).

Blendable

Ассеты Blendable уже реализованы в движке, хотя и используются только для PostprocessMaterils / PostprocessMaterialInstances. Тем не менее, по идее, основная задача Blendable – предоставить возможность смешивать произвольные данные (как наиболее подходящие примеры: линейные значения, цвета) для выдачи результатов любой из подсистем.

К примеру, в случае со сплит-скрином вы сможете раздельно реализовывать постобработку для каждого из экранов.

Blendable – это объект, который имеет IBlendableInterface, в данный момент реализованный следующими типами ассетов:

● PostprocessMaterials

● PostprocessMaterialInstances

● LightPropagationVolumeBlendable

Контейнер Blendable находится в PostProcessSettings, которые имеются у следующих объектов:

● PostProcessVolume

● PostProcessComponent

● SceneCaptureActor

● CameraComponent

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

Blendable в контент-браузере имеют собственную категорию – «Blendable». Можно использовать кнопку «Add New» или отфильтровать ассеты по категориям.

Плюсы новой системы:

● Простота расширения и обновления (нет необходимости менять целую единую структуру, можно просто создать отдельный модуль)

● Гибкие связи между пакетами позволяют работать с контентом без определенного уровня доступа (СКВ)

● Они же дают возможность использовать один ассет во многих случаях (уменьшение избыточности, большая гибкость)

● Возможно создание отдельного UI для каждого blendable (гораздо сложнее делать это с единой структурой)

● Каждый экземпляр blendable имеет свой «вес», как и ассеты (см. LightPropagationVolumeBlendable), благодаря чему легко определить «вес» каждому свойству

● Разбиение крупной структуры упрощает работу с блупринтами, делая её эффективнее и лаконичнее.

Контейнер Blendables

Контейнер реализован как массив «весов» и ссылок на lendableInterface.

Открыв параметры PostProcessVolume и посмотрев на массив blendable, вы увидите массив «весов» с ссылками на ассет blendable. Значения «веса», как правило, располагаются в промежутке от 0 до 1. А ссылки указывают на ассеты, расположенные в пакете (созданном в браузере контента) или в объекте, содержащем массив blendables.

Blendables-контейнеры можно найти в настройках пост-обработки. Массив здесь имеет три элемента: LightPropagationVolumeBlendable (из объекта волюма), пока не используемый элемент массива и ссылка на ассет LPV0 из пакета. Значение веса равняются 1.0.

Когда вы создаете новый элемент массива, можно выбрать: создать blendable определенного типа (на данный момент только LightPropagationVolumeBlendable), либо использовать (LightPropagationVolumeBlendable, Material, Material Instance). Время от времени нам приходится создавать новые типы blendable (к примеру, Bloom, SceneColor, DepthOfField и другие). Ссылка может быть любого типа blendable (если реализовывается IBlendableInterface). Порядок в массиве обратен тому, как устроены слои, поскольку смешивание применяется к ним сверху вниз, перезаписывая прежние данные. Запомните, данные множества волюмов (или других объектов) комбинируются.

Примечание: Хорошим тоном считается иметь несвязанный «глобальный» PostProcessVolume с низким приоритетом на уровне. Для получения полного контроля над всем уровнем вы можете добавить несвязанный волюм с высоким приоритетом. Тогда, для проверки наличия эффекта у blendable, вам достаточно изменить его вес до 0 и обратно.

Blendable в пакете: как часть объекта (к примеру, волюма)/динамически созданные в блупринте

Это ваш выбор, но мы советуем метод с пакетом (ссылаться на ассет в пакете), так как это позволяет минимизировать конфликты в системе контроля версий. Для максимальной гибкость, конечно, можно создавать blendable прямо в блупринте. Так как блупринты, по сути, форма программирования, передача параметров в UI равносильна их жесткому определению в коде. Хотя последний метод считается менее гибким для других разработчиков.

LightPropagationVolumeBlendable описывает свое отображение в редакторе. Неважно, был ли создан blendable в контент-браузере (слева) или в объекте (т.к. волюм постобработки): пользовательский интерфейс не меняется. Хорошим тоном считается давать каждому свойству свой чек-бокс (weight=0 или weight=1), а всей структуре – смешанный вес.

Примечание: Параметры LightPropagationVolumeBlendable до сих пор существуют в PostProcessSettings для обратной совместимости. Однако мы планируем удалить их и сделать blendables одним методом.

Блупринт

Блупринт AddOrUpdateBlendable обеспечивает удобный доступ к контейнеру blendables. Вы передаете объекту, содержащему контейнер blendables, вес и ссылку на blendable. При наличии этих параметров они просто обновляются. Элементы контейнера не удаляются, так как это может привести к нарушению работы другого кода и сборки мусора. Удаление элементов не является необходимостью, ввиду малых затрат ресурсов.

Здесь вы можете увидеть, как ссылаться на ассет blendable в контент-браузере:

Переменная ‘BlendableVar’ типа LightPropagationVolumeBlendable (Object Reference) используется в качестве ссылки на ассет под названием LightPropagationVolumeBlendable ‘LPV0′.

С блупринт-функцией ConstructObjectFromClass вы можете создавать новый blendable непосредственно в блупринте. Соединяя вход «Outer» нового объекта с объектом, имеющим контейнер blendable, вы добьетесь аналогичного поведения, если бы создавали объект в UI.

Здесь мы создаем объект типа LightpropagationVolumeBlendable, получаем настройки и определяем членов с функцией SetMembersIn.

Примечание: Вам понадобится вручную определить флаг как true (установленный чек-бокс), иначе свойство с тем же именем не будет выбрано.

В качестве эксперимента вы можете использовать showflag VisualizeLPV (в редакторе: Visualize/Light Propagation Volume) для отображения смешанных параметров. Это реализовано в коде на C++ и только для данного типа blendable, но позже мы реализуем подобную возможность для каждого свойства без необходимости привносить в код какие бы то ни было изменения.

Showflag Visualize отображается смешанные значения, что полезно при отладке.


Scene Fringe

Scene Fringe – эффект хроматической аберрации, симулирующий изменения цвета при использовании обычных линз. Наиболее заметен на краях изображения.

Свойства Описание
Fringe Intensity Определяет, как сильно будут проявляться изменения.
0.0 1.0 5.0

 

Fringe Saturation Определяет заметность изменений. Низкие значения ведут к более размытому результату, а высокие – более выраженному.

Screen Space Reflections

SSR (Screen Space Reflection) – эффект, включенный по умолчанию, который добавляет отражения на поверхность объектов. Эти отражения работают в реальном времени.

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

У SSR всего лишь несколько настроек:

Свойство Описание
Intensity Активировать/Деактивировать функцию SSR. Значение в процентах: 0 – минимальное качество, 100 – максимальное. Изначально установлено 50% (с целью достижения лучшей производительности).
Max Roughness Используется для определения, при каком значении шероховатости эффект будет уменьшаться (отлично работает 0,8, меньшие значения могут повысить производительность).

Vignette

Vignette – Виньетирование. Эффект затемнения по краям изображения при использовании обычных линз. Высококачественные линзы стараются компенсировать его.

Настройки виньетирования можно найти в настройках постобработки под вкладкой Scene Color.

Свойство Описание
Vignette Intensity Обеспечивает затемнение по краям экрана. Не влияет на блюм (из-за возможных проблем с производительностью, но при необходимости, можно изменить настройку). Возможное использование: симуляция несовершенств камеры.
0.0 1.0

 

 


 

Аудио и звуки

Звуки

Звук имеет огромное значение для создания правдоподобной и виртуальной реальности. От окружающих звуков в уровне, до интерактивных звуков от транспортных средств или оружия, до звука диалога персонажей, звук в игре значит очень многое. Создание звука в игре звучащего так же как он должен звучать может быть трудной задачей. Аудиосистема Unreal Engine 4 предоставляет инструменты и функции формирования звуков в игре, чтобы придать им нужный вид. Это важно, поскольку это означает, что чистый вариант звука может быть создан один раз во внешнем приложении, после чего импортироваться, а затем быть обработанным в движке, чтобы получить соответствующий результат.

Обзор аудиосистемы

Аудиосистема в Unreal Engine 4 состоит из нескольких компонентов, все они работают вместе, чтобы создать нужное звучание. После импорта аудио файла в движок, у вас будет несколько способов представить его на уровне например Volume или Pitch,
для регулировки, а также более тонкой настройки параметров, таких как Sound Attenuation, который определяет, как звук слышен основываясь на вашем расстоянии до него.
Unreal Engine 4 также позволяет строить сложные звуки в виде звуковых сцен и Cue Editor Sound, которые позволяют комбинировать звуки, а также применить модификаторы называемые Sound Cues, чтобы изменить конечный результат.
Есть дополнительные элементы, которые используются для определения того, как звук слышен или воспроизводится, эти параметры описаны на этой странице.

Импорт звуковых файлов

Unreal Engine 4 в настоящее время поддерживает импорт несжатых 16-битных звуковых файлов с любой частотой дискретизации (см. таблицу ниже). Для достижения наилучших результатов рекомендуется, использовать частоту дискретизации 44100 Гц или 22050 Гц.

Спецификации PCM, ADPCM, DVI ADPCM
Формат .WAV
Битрейт 16
Количество каналов Mono, Stereo, 2.1, 4.1, 5.1 6.1, 7.1

Импорт звукового файла в редактор генерирует ассет Sound Wave, который может быть выставлен непосредственно на уровень или может быть использован для создания Sound Cues и отредактирован внутри Sound Cue Editor.

Импорт звукового файла может быть сделан двумя путями:

Через Content Browser:

1. В Content Browser, нажмите кнопку Import (на фото ниже).

2. Выберите файл. WAV, который вы хотите импортировать.

Или:

1. Выберите звуковой файл в окне Проводника Windows.

2. Перетащите его в Content Browser.

Unreal Engine 4 также поддерживает многоканальные (например, 5.1) звуки и использует специальное именование при импорте файлов для использования нескольких каналов.

Типы звуковых ассетов

Чтобы добавить звуковой ассет, нажмите кнопку в Content Browser и выберите звук который вы хотите добавить.

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

Sound Cue

Sound Cues являются составными звуками, которые позволяют изменять поведение воспроизведения звука, комбинировать звуковые эффекты, а также применять звуковые модификаторы Sound Nodes, чтобы изменить конечный результат.

Sound Attenuation

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

Реверберация

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

Sound Class

Sound Class представляют собой набор свойств, которые могут быть применены к ряду звуковых ассетов.
Свойства определенные внутри Sound Class будут осуществляться всеми звуковыми ассетами, определенным к этому классу.

Иерархии могут быть созданы путем добавления дочерних классов, которые позволят вам перенести вниз только специфические свойства из родительского класса. Вы можете подключить класс внутри Sound Class Editor, который имеет подобный Cue Editor Sound интерфейс.

Вы можете также добавить звуковое смешивание (смотрите раздел Sound Mix ниже) к Sound Class, которые будут активироваться автоматически всякий раз, когда звук класса играет
(например музыка может включаться автоматически когда проигрывается звука с классом диалога).

Sound Mix

Sound Mix позволяют устанавливать настройки эквалайзера и изменения громкости и высоты тона в свойства Sound Class.

Несколько Sound Mix могут быть активными в одно и то же время, все это способствует общему звучанию. Вы можете Push (Включить) или Pop (Деактивировать) Sound Mix непосредственно внутри блупринта.
Внутри самого Sound Mix ассета, который можно открыть с помощью двойного щелчка в Content Browser, существуют несколько свойств. Можно задать параметры эквалайзера для смешивания, чтобы отрегулировать высокие, средние и низкие частоты. Поскольку настройки эквалайзера нескольких Sound Mix не могут быть объединены, EQ Priority позволяет вам контролировать, какие активные Sound Mix свойства применяются в данный момент времени.
Раздел Sound Mix позволяет определить, каким образом свойства Sound Mix применяются. Delay указывает на то, как много времени пройдет, прежде чем свойства Sound Mix следует начинать применять. Fade in Time и Fade out Time определяют, как быстро будет происходить переход к указанным свойствам. Duration позволяет Sound Mix автоматически выключить себя по истечении указанного срока.

Значение -1 указывает на то, чтобы никогда не будет отключен автоматически Sound Mix так же не будет автоматически выключен.

Dialogue Voice & Dialogue Wave

Ассеты Dialogue Voice и Dialogue Wave используются для генерации в игре диалогов события, создания субтитров, и для упрощения усилий по локализации.
При редактировании вновь созданного Dialogue Voice ассета, вы можете определить Gender и Plurality актера, и, хотя вы не указываете какие-либо звуковые ассеты внутри Dialogue Wave, информация, представленная здесь, можно ссылаться на Dialogue Wave.

Dialogue Wave предоставляет больше возможностей. Кроме того, производится связь между диалогом аудио и текстовыми субтитрами.

Dialogue Wave представляет собой единую линию диалога и основной компонент настроек Dialogue Voice является разделом Dialogue Contexts.

Внутри раздела Dialogue Contexts, вы можете указать Speaker или Directed At в соответствующих разделах путем присвоения Dialogue Voice. Фактическая аудио линия диалога может быть добавлена в качестве звуковой дорожки через Content Browser.

В том случае, если у вас есть несколько актеров, которые говорят ту же линию диалога, Add Dialogue Context позволит вам создать новую запись для диалога, где вы можете установить новый Speaker и Directed At разделы.

Dialogue Wave также может быть применен к Sound Cue с помощью узла Dialogue Player внутри Sound Cue Editor.

Кроме того, вы можете получить доступ к Dialogue Wave непосредственно из блупринта с помощью Play Dialogue at Location и Play Dialogue Attached.

В дополнение к Dialogue Contexts, вы можете применить Mature фильтр. Под Script, вы можете ввести текст, на котором говорят в приложенном аудио внутри Spoken Text раздела.
Можно также ввести контекстную информацию для целей упрощения перевода или примечания к голосу актера в разделе Voice Actor Direction.

Общий объем, руководство

Что касается громкости в потенциальном объеме, здесь существует несколько различий. Например, стерео файл с 1,0 объемом будет в два раза громче, чем моно файл. Тем не менее, в конечном итоге мы попадаем под общий порог и выходной звук начинает искажаться.
В любой Sound Cue, настройки громкости примерно до 2.0 увеличит воспринимаемую громкость до предела, и всё что выше будет не существенно.
Вот вам по крайней мере некоторые рекомендации:

Категория Примерный объем
Диалог 1.4
Музыка 0.75
Оружие 1.1
Окружение 0.5

Volume Ducking

Volume Ducking, как правило, используется для уменьшения объемов всех других звуков, кроме одного, который должен быть услышан, чаще всего — диалога.
Процесс, как правило, состоит из:

● Идентификация Sound Class, который должен быть использован в Volume Ducking.

● Когда звук из этого Sound Class срабатывает, другие Sound Class начинают уменьшаться в объеме (Sound Mix: Fade In Time = 0,3 секунды).

● Укажите количество других Sound Class уменьшающихся в объеме (Sound Mix: Volume Adjuster = 0,4).

● Когда звук из Sound Class останавливается, другие классы увеличиваются в объеме и возвращаются к нормальной громкости (Sound Mix: Fade Out Time = 0,3 секунды).

● Вы можете также исключить Sound Class в процессе приглушения (например, музыки).

Этот подход будет гарантировать, что акцент делается на важных аспектах вашего аудио и что он не «утонет» под поверхностными или не-важных звуковыми элементами.



Поделиться:


Последнее изменение этой страницы: 2020-12-17; просмотров: 142; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.221.67 (0.065 с.)