Мягкие Тени RayTraced Distance Field в Unreal Engine 4

0
457
Мягкие Тени RayTraced Distance Field ue4

Затенение из движущихся источников света обеспечивается с использованием Distance Fields объектов для каждой жесткой меши для расчета эффективного затенения области из динамических источников света. В Unreal Engine 4 (UE4) это называется Ray Traced Distance Field Shadows (RTDF). Чтобы рассчитать затенение, луч прослеживается от точки, затененной через Signed Distance Fields (SDF) сцены к каждому из них. Ближайшее расстояние до окклюзирующего (окружающего) объекта используется для аппроксимации дорожки конуса примерно по той же цене, что и трассировка луча. Это позволяет использовать высококачественную зону затенения из сферических источников света.

Настройка сцены

Для этой функции требуется, чтобы Generate Mesh Distance Fields были включены в настройках проекта в разделе RenderingДополнительную информацию читайте на странице Mesh Distance Fields.

Чтобы включить Ray Traced Distance Field Shadowing, начните с перетаскивания Light в сцену и установите Mobility на значение Movable, а затем на панели Light Details включите Ray Traced Distance Field Shadows.Ray Traced Distance Field Shadows ue4

Для пошаговой инструкции следуйте руководству Использование Ray Traced Distance Field Shadowing, чтобы узнать больше.

Настройки Теней

Каждый тип Light может использовать тени Distance Fields для создания мягких теней области. Эти тени имитируют реальные тени, сохраняя острые контактные тени ближе к основанию и смягчая там, что тень отходит.

Традиционная теневая карта ue4

Традиционная теневая карта

Тени Distance Fields ue4Тени Distance Fields
Дополнительную информацию о настройках источника света и дополнительных примерах читайте на странице Руководство по Mesh Distance Fields.

Радиус источника Point и Spot Light

Для Point и Spot Lights радиус источника используется для определения того, как большие теневые полости находятся на свету. Зональные тени вычисляются с помощью острых контактов, которые становятся более мягкими на больших расстояниях. На Point и Spot Light, он представлен желтой сферой.Радиус источника Point и Spot Light ue4

Редактор рисует форму источника света желтыми линиями.

Сфера радиуса источника света не должна пересекать сцену, иначе это приведет к появлению артефактов освещения.
Радиус источника: 0 ue4Радиус источника: 0Радиус источника 50 ue4

Радиус источника: 50

Тени Ray Traced Distance Field от Point Light с использованием Source Radius (радиуса источника), чтобы смягчить тени, бросаемые дверью, скамейкой и фортепиано на окружающую геометрию.

Демонстрация Точечного Света, движущегося через сцену, отбрасывая area shadows (теней области) от каждой меши, отбрасывающей тень.

Дополнительные сведения о настройках освещения Point and Spot Light читайте на странице Руководство по Mesh Distance Fields.

Угол источника направленного света

Для Направленного света Light Source Angle (Угол источника света) используется для определения того, как большие полутени находятся на свету. Тени Ray Traced имеют очень мало проблем с самопересечением и поэтому избегают проблем с утечкой и чрезмерным смещением на расстоянии, которое может иметь традиционное теневое отображение.

Угол источника света 1 ue4Угол источника света: 1Угол источника света 3 ue4Угол источника света: 3

Тени Ray Traced Distance Field от Направленного Света с помощью угла источника света (Light Source Angle), настроенного для более мягкого затенения.

В большинстве случаев каскадные теневые карты (Cascaded Shadow Maps – CSM) используются для обеспечения динамического затенения направленного света. Они требуют рендеринга меши в сцене в несколько каскадных теневых карт (уровни детализации для затенения). Стоимость затенения увеличивается на больших расстояниях от тени из-за того, сколько мешей и треугольников отображается в теневых картах.

Тени Ray Traced Distance Field работают намного более изящно на расстоянии, делая работу затенения только для видимых пикселей. Каскадные теневые карты могут использоваться для теневой области рядом с камерой, в то время как тени RTDF будут затенять более отдаленные области до заданного Distance Field Shadow Distance.

Только Cascaded Shadow Maps ue4Только Cascaded Shadow MapsCascaded Shadow Maps и Тени Ray Traced Distance Field shadows ue4Cascaded Shadow Maps и Тени Ray Traced Distance Field shadows

Когда Тени Ray Traced Distance Field активированы, все, что превышает установленное значение для Cascaded Shadow Map Distance, будет затенено с помощью Distance Fields. При сравнении с использованием как CSM, так и RTDF тень CSM устанавливается на 1000 см., что обеспечивает четкое затенение рядом с камерой с большим количеством дополнительных деталей. В области затенения более 1000 см используется теневое изображение RTDF, которое затеняет объекты на расстоянии до 1,2 км. Это позволяет деревьям на далеком расстоянии отбрасывать тени, когда это будет слишком дорого для каскадных карт теней.

Демонстрация изменения времени суток с использованием эффекта Затенения Ray Traced Distance Field с помощью Направленного света.

Дополнительную информацию о настройках Направленного освещения читайте на странице Руководство по Mesh Distance Fields.

Представление Сцены

Каждый уровень, который вы создаете, состоит из всех этих Mesh Distance Fields для ваших размещенных Актеров. Когда Mesh Distance Fields генерируются, они выполняются так «оффлайн», используя трассировку треугольника, которая сохраняет результаты в вольюм текстуре. Из-за этого генерация mesh distance field не может быть произведена во время выполнения. Этот метод вычисляет лучи Signed Distance Field по всем направлениям, чтобы найти ближайшую поверхность и хранит эту информацию.

Вы можете визуализировать Mesh Distance Fields, которые представляют вашу сцену, используя окно просмотра и выбрав Show > Visualize > Mesh Distance Fields.

Меню включения визуализации ue4Меню включения визуализацииВизуализация Mesh Distance Fields UE4Визуализация Mesh Distance Field

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

Качество Mesh Distance Field

Превосходность теней на расстоянии дает значительное влияние на точность теней в большей степени, чем Distance Field Ambient Occlusion. Увеличенное разрешение Mesh Distance Field улучшит тени, создаваемые Static Meshes. Используйте визуализацию Mesh Distance Field для проверки качества.

Разрешение Distance Field 1 ue4Разрешение Distance Field: 1Разрешение Distance Field 5 ue4Разрешение Distance Field: 5
Затенение Scene View с Distance Field
Разрешение Distance Field1 ue4Разрешение Distance Field: 1Разрешение Distance Field5 ue4Разрешение Distance Field: 5
Визуализация Mesh Distance Field

Тени Mesh Distance Fields вычисляются с половинной разрешающей способностью с учетом глубины. Temporal Anti-Aliasing (TAA) помогает справиться с мерцанием, которое может случиться с полуразрешением, но зубчатые края могут иногда появляться.

Дополнительную информацию о качестве Mesh Distance Fields читайте на странице Mesh Distance Fields.

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

На графике Radeon 7870 с разрешением 1920×1080 в полной сцене игры было выполнено следующее время GPU:

ТестСтоимость Каскадных карт / Cuebmap Shadow Maps (мс) Стоимость Distance Field Shadows  (мс)На сколько процентов  быстрее (%)
Directional Light с расстоянием 10 тыс. единиц, 3 каскадных теневых карты 3,12,325%
Directional Light с расстоянием 30 тыс. единиц, 6 каскадных теневых карт 4,92,843%
Один Point Light с большим радиусом1,81,330%
Пять Point Lights с небольшим радиусом3,21,845%

Оптимизации

Ниже приведены некоторые вещи, которые вы можете сделать или должны рассмотреть для оптимизации затенения Distance Fields:

  • На Направленном свете больший Light Source Angle (угол источника света) увеличивает стоимость, поскольку для каждой точки, подлежащей затенению, необходимо учитывать большее количество объектов.
  • Большие значения для Distance Field Shadow Distance уменьшают эффективность отбраковки.
  • Тени из мешей с Two-Sided Distance Field Generation (включены в Build Settings) будут стоить дороже, поскольку полученные тени никогда не будут полностью непрозрачными.

В Unreal Engine 4.16 можно включить следующие оптимизации:

  • Включите их из Project Settings > Rendering:настройка проекта ue4
  • Compress Mesh Distance Fields можно включить, чтобы сохранить объемную текстуру Distance Fields, сжатую в памяти. Это уменьшит количество памяти, которую они используют, однако, если вы используете потоковую передачу уровня, они будут вызывать зависания в вашем игровом процессе, когда эти уровни будут переданы.
  • Eight Bit Mesh Distance Fields могут быть включены для сохранения вольюм текстуры расстояний в формате 8-битной фиксированной точки вместо 16-битной с плавающей запятой по умолчанию. Он будет использовать только половину ранее использованной памяти, но может ввести некоторые артефакты, когда у вас большая или тонкая меш.

Ограничения

Затенение Ray Traced Distance Field разделяет общие ограничения техники Mesh Distance Fields. Дополнительные сведения об этих ограничениях читайте на странице Mesh Distance Fields.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите свой комментарий!
Пожалуйста, введите ваше имя: