
Как было сказано ранее, Unreal Engine — в первую очередь игровой движок. Несмотря на то, что использование его возможностей вышло далеко за рамки создания видеоигр, включив в себя кинопроизводство, архитектурную визуализацию и создание видеоконтента, базовая структура и приоритеты разработки неразрывно связаны с задачами рендеринга в реальном времени.

перебивка пока что хз что
Прежде чем перейти к разбору каждого из алгоритмов рендеринга в Unreal Engine 5, необходимо разобраться с такими терминами как Software Ray Tracing (Программная Трассировка Лучей) и Hardware Ray Tracing (Аппаратная Трассировка Лучей)
Таким образом, представленная классификация служит базой для понимания последующих алгоритмов.
Демонстрация принципов глобального освещения программной трассировки лучей Lumen.
Lumen — это система динамического глобального освещения и отражений, представленная в Unreal Engine 5.0 с момента её релиза в 2022 году.
Данная технология представляет собой комплексный алгоритм, работающий в режиме реального времени, поддерживающий два метода трассировки лучей в сцене: Software Ray Tracing и Hardware Ray Tracing (при наличии необходимого оборудования)
Lumen renders diffuse interreflection with infinite bounces and indirect specular reflections in large, detailed environments at scales ranging from millimeters to kilometers.
Подход при котором каждая поверхность изображения воспринимается как источник, излучающий свет своего локального цвета, в 3D-программах называется «глобальным освещением»3
Прежде чем углубляться в технические особенности работы алгоритма, стоит остановиться на термине «глобальное освещение» и его значении.


1 — Без системы глобального освещения Lumen. 2 — С системой глобального освещения Lumen
Для понимания принципов работы Lumen необходимо прежде всего рассмотреть его техническую архитектуру.

Screen Tracing
Первый метод, который Lumen использует до обработки изображения программной трассировкой лучей, представляет собой технологию Screen Tracing.
Её сущность заключается в испускании лучей из позиции камеры для идентификации объектов, находящихся в её поле зрения на текущий момент. Таким образом, Screen Tracing позволяет оптимизировать вычислительные ресурсы, обеспечивая улучшение графики исключительно в пределах видимой области.
Технология Screen Tracing активирована в движке по умолчанию. Управление данным параметром осуществляется через два интерфейса:
1. В разделе визуализации: Show → Lumen → Screen Traces
2. Через Post Process Volume (изменение отобразится при рендере секвенции): Post Process Volume → Lumen Global Illumination & Lumen Reflections → Screen Traces


Расположение параметра в интерфейсе Unreal Engine | 1. Show → Lumen → Screen Traces | 2. Post Process Volume → Lumen Global Illumination & Lumen Reflections → Screen Traces
Тем не менее, применение технологии Screen Tracing сопряжено с возникновением ряда потенциальных артефактов. Согласно официальной документации, повышение интенсивности непрямого освещения (Indirect Lighting Intensity) источников света приводит к увеличению заметности переходов, связанных с активацией алгоритма Screen Tracing.
На демонстрационной сцене можно заметить, что по мере приближения объектов к периферийным областям кадра эффективность алгоритма снижается, что проявляется в виде затемнений в зонах стыков поверхностей.
Подобного рода артефакты могут так же проявляться в начальных кадрах секвенции, когда Screen Tracing только активирует свой алгоритм. Поэтому перед рендером рекомендуется закладывать несколько технических кадров для стабилизации алгоритма.
Демонстрация артефактов на стыках объектах при нахождении на периферии кадра. Indirect Lighting Intencity источника света — 10.0

Surface Cache представляет собой оптимизированную систему кэширования данных о поверхностях. Она используется для быстрого поиска освещения в точках попадания лучей в сцене. Для Lumen эта технология выполняет предварительную параметризацию видимых поверхностей сцены, формируя специализированные текстуры (Cards) с информацией о материалах, нормалях и освещенности для каждого меша под разными углами.
Mesh Cards можно визуализировать с помощью консольной команды: r.Lumen.Visualize.CardPlacement 1
Визуализация распределения Mesh Cards у одинаковых ассетов с разным значением Max Lumen Mesh Cards: 12, 4, 1, 0
По умолчанию Unreal Engine генерирует 12 таких плоскостей (Cards), однако это значение можно регулировать
Static Mesh Editor → Build Settings → Max Lumen Mesh Cards.
Это может быть уместно для обработки ассетов комплексных интерьеров, целиком загруженных как единый Static Mesh. При появлении визуальных артефактов на подобного рода объектах со сложной геометрией, можно проверить количество информации, которое получает Surface Cash от данного объекта, визуализировав параметр
Level Editor → Lumen → Surface Cash.
При данной визуализации розовым цветом обозначены области с недостаточным объемом данных в Surface Cache.
Наглядный пример недостающего объема информации Surface Cash для объекта с параметром Max Lumen Mesh Cards = 1
Surface Cash является критически важным параметром не только для сложных интерьерных ассетов, но и для объектов с простой геометрией.
На демонстрационной сцене визуализировано влияние недостаточности данных Surface Cache на качество отражений объекта.
Визуализация артефактов в отражении у одинаковых ассетов с разным значением Max Lumen Mesh Cards: 12, 4, 1, 0
По умолчанию Lumen использует Software Ray Tracing на основании Signed Distance Fields — технология, где для любой точки в 3D-пространстве хранится расстояние до ближайшей поверхности объекта. Для чего требует включения лишь одной настройки: Project Settings → Engine → Rendering → Software Ray Tracing → Generate Mesh Distance FIelds
Демонстрация регулировки параметра Generate Mesh Distance FIelds в интерфейсе Unreal Engine
Технология использует двухуровневую структуру, сочетая реализацию трассировки через использование Mesh Distance Fields (индивидуальные поля для каждого меша) и Global Distance Field (низкополигональное обобщенное представление всей геометрии в сцене)
Пользователю доступны две опции реализации программной трассировки лучей: Detail Tracing и Global Tracing.
Detail Tracing — метод по умолчанию, обеспечивающий высшее качество за счет использования индивидуальных Signed Distance Fields для каждого меша. На расстоянии первых 2 метров от камеры объекты обрабатываются с повышенной точностью (используя Mesh Distance Field), а оставшаяся часть обрабатывается с использованием Global Distance Field.
Global Tracing — трассирует лучи только через Global Distance Field для максимальной скорости.
Переключение между опциями так же доступно в настройках проекта: Project Settings → Engine → Rendering → Lumen→ Software Ray Tracing Mode
Демонстрация регулировки параметра Software Ray Tracing Mode в интерфейсе Unreal Engine
Качество Software Ray Tracing напрямую зависит от качества представления Mesh Distance Field.
Для их анализа в режиме реального времени предусмотрены инструменты визуализации, доступные через меню отладки:
Show -> Visualize -> Mesh DistanceFields / Global DistanceField
Global Distance Field — для визуализации объединенного глобального поля
Демонстрационная сцена для сравнения отображения визуализаций: Mesh Distance Fields, Global Distance Field и обычной сцены

Для объектов с тонкими деталями качество представления Distance Field может сильно ухудшаться. Однако качество отображения объекта можно улучшить двумя способами.
Первый из них — Distance Field Resolution Scale, регулируя который, можно увеличить разрешение для отдельного объекта, внутри режима редактирования меша.
Static Mesh Editor → Build Settings → Distance Field Resolution Scale
Демонстрационная сцена для сравнения идентичных объектов с различающимся значением Distance Field Resolution Scale: 1.0, 2.0, 5.0. Визуализация Mesh Distance Fields и Global Distance Field
Вторым способом является редактирования параметра Distance Field Voxel Density внутри самого проекта.
Project Settings → Engine → Rendering → Software Ray Tracing → Distance Field Voxel Density
Демонстрация регулировки параметра Distance Voxel Density в интерфейсе Unreal Engine


Демонстрационная сцена для сравнения идентичных объектов с различающимся значением Distance Field Voxel Density проекта: 0.2 и 0.4 | Параметр Distance Field Resolution Scale объекта = 1.0
Важно принимать во внимание, что увеличение разрешения или плотности Distance Field приводит к увеличению объема памяти, занимаемого проектом.
Так как значение Mesh Distance Fields просчитываются для каждого меша, это делает систему чувствительной к количеству объектов в сцене. При экстенсивном использовании модульных объектов с многочисленными слоями пересекающихся мешей алгоритм Detail Tracing будет требовать значительных вычислительных ресурсов.
Для облегчения нагрузки в сцене рекомендуется отключить параметр Affects Distance Field Lighting внутри режима редактирования меша у наименее важных объектов, не оказывающих сильного влияния на глобальное освещение или отражения в сцене, тем самым увеличив её производительность.
Аппаратная трассировка лучей обеспечивает улучшенное качество Lumen.
Демонстрация подключения возможностей Hardware Ray Tracing в интерфейсе Unreal Engine
For Detail Traces, Hardware Ray Tracing provides improved quality at similar performance costs compared to Software Ray Tracing.

Информация о RaTracing и его практическом влиянии на сцену (с основой на демонстрационную сцену)
You can remove Individual instances from the ray tracing scene by disabling Visible In Ray Tracing on the actor in the level.
Возможные проблемы которые указывает Epic Games
упомянуть что появился немного раньше чем Lumen рассказать про появление RTX (что такое рейтрейсинг — возможность видеокарты информация о лучах в RTX. как рейтрейсинг появился+ про RTX (как появилась технология))
Path Tracer
суть — тяжелый но самый корректный по материалам
Там, где Ray Tracing выпускает один луч на пиксель, Path Tracer выпускает сотню.