{"id":3885,"url":"\/distributions\/3885\/click?bit=1&hash=0dab7d0f7ad7dbe279741e57cb131cd67b3aa59228fa8f46d70a06c610a00e26","title":"\u0418\u0437 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0420\u0416\u0414 \u0432 \u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b","buttonText":"","imageUuid":"","isPaidAndBannersEnabled":false}
Gamedev
Empty Node

Краткий обзор системы Lumen

Краткий обзор возможностей новой системы динамического глобального освещения и отражений в Unreal Engine 5.

Lumen — это новая система полностью динамического глобального освещения и отражений в Unreal Engine 5, которая разработана для консолей следующего поколения. В Unreal Engine 5 система Lumen используется по умолчанию. Она рендерит диффузные переотражения с бесконечными отскоками (diffuse inter reflection with infinite bounces) и непрямыми зеркальными отражениями (indirect specular reflections) в больших, детализированных окружениях, масштабы которых могут варьироваться от миллиметров до километров.

Приступая к работе с Lumen

В только что созданных проектах для Unreal Engine 5 система Lumen активирована по умолчанию, вместе с компонентами, от которых она зависит, вроде Generate Mesh Distance Fields.

Что касается уже существующих проектов, созданных в Unreal Engine 4, то в них Lumen не включается автоматически. Это сделано для того, чтобы предотвратить поломки или любые изменения в освещении этих проектов.

Lumen можно активировать через Edit → Project Settings в категории Engine → Rendering → GLOBAL ILLUMINATION. Для параметра Dynamic Global Illumination Method выберите значение Lumen. Данное свойство также меняет Reflection Method на Lumen, и активирует опцию Generate Mesh Distance Fields необходимую для режима Software Ray Tracing (Программная Трассировка Лучей) используемого системой Lumen.

Lumen Global Illumination заменяет собой Screen Space Global Illumination (SSGI) и Distance Field Ambient Occlusion (DFAO) из Unreal Engine 4, а Lumen Reflections заменяет собой Screen Space Reflections (SSR).

ПРИМЕЧАНИЕ: Активация Generate Mesh Distance Fields требует перезапуска движка. Lumen Global Illumination (параметр Global Illumination Method) и Lumen Reflections (параметр Reflection Method) можно активировать/деактивировать без перезапуска редактора. Это важно в тех случаях, когда вы хотите сравнить результат с динамическим глобальным освещением и отражениями и без них.

Для получения подробной информации о всех настройках проекта, которые затрагивают систему Lumen, обратитесь к разделу Настройка через Project Settings.

ВНИМАНИЕ: Если система Lumen активна, все карты освещения (lightmaps) скрываются, а результат работы источников света типа Static Light отключается.

Возможности системы освещения Lumen

Lumen впервые привносит в Unreal Engine надёжную систему Динамического Глобального Освещения, которая отлично интегрируется с другими вспомогательными системами UE5, такими как Nanite.

В Unreal Engine 4, такие функции как Screen Space Global Illumination были не очень надёжными, а Ray Tracing Global Illumination (RTGI) не была достаточно производительной в играх с высоким уровнем качества, и не была объединена с другими важными системами движка.

Глобальное освещение

Lumen решает проблему динамического диффузного освещения отраженным светом. Например, свет рассеянно отражающийся от поверхности, приобретает цвет этой поверхности и отражает уже цветной свет на другие близлежащие поверхности. Данный эффект называется Color Bleeding. Объекты в сцене также блокируют освещение отраженным светом, что создает побочное затенение (indirect shadowing).

Lumen предоставляет бесконечное количество диффузных отражений/отскоков (diffuse bounces), которые очень важны в сценах с яркими рассеивающими поверхностями.

Например, стена, покрытая белой краской, в апартаментах изображенных чуть ниже:

Благодаря технологии Nanite в Unreal Engine 5 геометрия меша может быть более детализированной, чем когда-либо прежде. Lumen обеспечивает нормальную детализацию с полным разрешением, а также рассчитывает освещение отраженным светом с гораздо более низким разрешением для работы в реальном времени.

Lumen и небесное освещение

Небесное освещение (Sky lighting) реализовано как часть Lumen's Final Gather. Оно включает в себя затенение неба, что позволяет помещениям выглядеть внутри более тёмными чем с наружи.

Lumen обеспечивает глобальное освещение для Lit Translucency и Volumetric Fog (в более низком качестве).

Lumen и Излучающие Материалы

Излучающие материалы (Emissive Materials) распространяют свет через Lumen's Final Gather без дополнительных затрат в плане производительности. Однако, есть и предел тому, насколько маленькими и яркими могут быть излучающие области, прежде чем они начнут вызывать шумовые артефакты. По сути, решить эту проблему гораздо сложнее, чем просто размещать источники света вручную.

Отражения

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

Диффузное глобальное освещение и затенённый небесный свет (shadowed skylight) можно увидеть во всех отражениях. Отражения в системе Lumen также поддерживают материалы типа Clear Coat.

Изображение выше, демонстрирует поддержку материалов Clear Coat.

Поддерживаемые типы источников света и другие возможности

В Unreal Engine 5 Early Access система Lumen поддерживает следующие вещи:

  • Поддерживаются все типы источников освещения. В них входят источники типа Directional, Sky, Point, Spot, и Rect.
  • Функции освещения (Light Functions) поддерживаются только для Directional Light.
  • Источники света у которых свойство Mobility имеет значение Static не поддерживаются, поскольку Static lights хранятся исключительно в картах освещения (lightmaps), а система Lumen исключает их вклад в освещение сцены.

Настройки Lumen

Настройки Lumen можно найти в двух местах: Project Settings и Post Process Volumes.

Настройка через Project Settings

Настройки Lumen для всего проекта находятся здесь: Edit → Project Settings → Engine → Rendering.

Для всего проекта Lumen активируется с помощью параметров Dynamic Global Illumination Method и Reflection Method (необходимо выставить значение Lumen).

Помимо основных настроек в Project Settings содержаться и остальные настройки, которые так или иначе затрагиваю работу системы Lumen:

  • Software Ray Tracing Mode позволяет определить в каком режиме будет выполняться Программная Трассировка Лучей (Detail Tracing или Global Tracing).
  • Detail Tracing трассировка выполняется по направлению к Distance Fields отдельных мешей для достижения максимального качества рендера с максимальными затратами в плане производительности.
  • Global Tracing трассировка выполняется по направлению к Global Distance Field для максимально быстрой трассировки с пониженным качеством.
  • Use Hardware Ray Tracing В данном случае для трассировки лучей, по направлению к геометрии сцены, используется поддерживаемое аппаратное обеспечение, в противном случае используется Программный Иетод Трассировки лучей (Software Ray Tracing) стандартный для системы Lumen. Support Hardware Ray Tracing требуется для обновления Hardware Ray Tracing Scene. В Early Access, поддерживаются десятки тысяч экземпляров, а производительность во многом зависит от аппаратного обеспечения вашей системы и ограничений платформы. Например, для некоторых платформ рекомендуется использовать не более 40 000 экземпляров, и не более 100 000 анимированных вершин. В следующие версии движка будут внесены улучшения.
  • Support Hardware Ray Tracing позволяет активировать поддерживаемые видеокарты, RHI, и операционные системы для трассировки лучей по направлению к геометрии сцены для достижения максимального качества.
  • Generate Mesh Distance Fields генерирует представления (representation) Distance Fields для отдельных Статических Мешей (Static Meshes), которые необходимы для работы Программной Трассировки Лучей в Lumen. Также это необходимо и для других методов динамического освещения и затенения использующих Distance Fields с подвижными (movable) источниками света типа Sky Light и Directional Light.

Через Post Process Volume

Настройки Post Process Volume позволяют переопределить настройки Lumen которые были заданны в настройках Проекта. Необходимо выбрать элемент Post Process Volume в World Outliner и отредактировать параметры в панели Details). Необходимые свойства находятся в разделах Global Illumination и Reflections.

Свойство Method будет использовать выбранный метод для Global Illumination и Reflections (установленные в Project Setting), до тех пор пока оно не будет переопределено пользователем для Post Process Volume.

Качество контролируется при помощи следующих свойств:

  • Final Gather Quality позволяет повысить качество Lumen Global Illumination, и уменьшить количество шума возникающего при рендеринге, но нагрузка на GPU заметно увеличивается.
  • Quality позволяет повысить качество Lumen Reflections на поверхностях, и уменьшает количество шума, но нагрузка на GPU увеличивается.

Дополнительные заметки

Ниже приведены некоторые дополнительные моменты, которые следует учитывать при работе с функциями Lumen в ваших проектах.

Скорость обновления освещения

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

Отключение статического освещения для проекта

При использовании Lumen предварительно рассчитанное освещение от Static Lighting удаляется из сцены. Вы можете отключить предварительно рассчитанное освещение для всего проекта целиком. Для этого перейдите в Project Settings и снимите галочку напротив опции Allow Static Lighting.

Отключение статического освещения позволяет сэкономить ресурсы необходимые для статического освещения. Это также позволяет Material Ambient Occlusion input и Material Bent Normals работать вместе с Lumen Global Illumination.

ПРИМЕЧАНИЕ: Проекты, в которых используется Статическое Освещение будут загружать свои карты освещения в память и на диск, до тех пор пока не будет включена опция Force No Precomputed Lighting. Данная опция находится в Window → World Settings → раздел Lightmass. После этого, вам нужно будет пересчитать освещение и сохранить уровень.

Material Bent Normals

Lumen Global Illumination поддерживает Material Bent Normal Maps, которые обеспечивают правдоподобную само-окклюзию (self-occlusion) на скелетных мешах.

Чтобы использовать Material Bent Normal вместе с Lumen:

  • Отключите опцию Allow Static Lighting в Edit → Project Settings → Engine → Rendering → Misc Lighting , чтобы создать пространство в GBuffer.
  • Откройте файла конфигурации DefaultEngine.ini вашего проекта и в разделе [SystemSettings] создайте параметр r.GBufferDiffuseSampleOcclusion = 1.
  • Сохраните изменения и перезапустите редактор. Настройте Материал для работы с BentNormal.
  • Левое изображение: Lumen Global Illumination на Skeletal Mesh с отключенной трассировкой в экранном пространстве/экранная трассировка (Screen Traces).
  • Среднее изображение: был настроен Material Bent Normal.
  • Правое изображение: Material Bent Normal с повторно активированной трассировкой в экранном пространстве.

При нахождении опечаток или технических неточностей перевода, просьба писать мне в личку или прямо комментариях.

Ссылка на оригинал статьи:

0
32 комментария
Написать комментарий...
Юрий Набоков

Это не краткий обзор, это перевод документации

Ответить
Развернуть ветку
Ярослав Голубев

Пусть продолжает)

Ответить
Развернуть ветку
Empty Node
Автор

Переведённый раздел носит исключительно обзорный характер. Я же не буду лепить название «Перевод документации Unreal Engine 5. Система Глобального Освещения и Отражений Lumen».
Но, раз это так важно для вас (и еще куче людей), я в следующий раз обязательно жирным шрифтом укажу что это перевод, в самом начале статьи.

Ответить
Развернуть ветку
Tr0y Boi

Вы мне объясните кто нибудь умный: Lumen это по итогу то же самое, что и рейтрейсинг (в смысле, что он не скринспейс), но более универсальный и с кэшем?(из-за чего изменения в свете происходят с задержкой).
Можно ли как-то решить проблему кеширования света? Например, вот едет машина и светит своими фарами в разные направления, неужели после нее будет оставаться световой след?
Мне как игроку интересно смогут ли Lumen применить для любой игры или он будет только в условных джедаях, где статичная погода и нет транспорта
И, опять же, смогут ли даже в них свет от светового меча сделать без артефактов этих или придется для него считать свет на старых методах?

Ответить
Развернуть ветку
Lonely Vasyan
Lumen это по итогу то же самое, что и рейтрейсинг (в смысле, что он не скринспейс), но более универсальный и с кэшем?

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

Осталось дождаться, когда эпики выкатят стабильную версию и выведут все крутилки для разных алгоритмов из конфиг файла сразу в постпроцесс. Художники охуеют от них и будут с тоской вспоминать те времена, когда им обещали динамическое глобальное  освещение кликом по одной галке "RTX on".

Можешь еще почитать официальное прошлогоднее заявление.

Lumen uses ray tracing to solve indirect lighting, but not triangle ray tracing. Lumen traces rays against a scene representation consisting of signed distance fields, voxels and height fields. As a result, it requires no special ray tracing hardware.

Lumen uses a combination of different techniques to efficiently trace rays. Screen-space traces handle tiny details, mesh signed distance field traces handle medium-scale light transfer and voxel traces handle large scale light transfer.

Daniel Wright, Technical Director of Graphics at Epic

Ответить
Развернуть ветку
Tr0y Boi

А, я теперь понял. Короче, чуда не случилось и топ-студии все равно будут делать свою реализацию рейтрейсинга
Но круто, что студиям победнее теперь можно запихнуть последние технологии без гемора (технического)
Спасибо за понятный ответ

Ответить
Развернуть ветку
Kotel

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

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

Ответить
Развернуть ветку
Frosty

Он довольно гибкий там куча разных методов используется и  оптимизаций. Стоит сказать что это еще не финал, его будут дорабатывать как и другие части ue5.
Сейчас они насколько возможно используют скринспейс в расчетах что бы сэкономить. Часть операции считают в пространстве мира.
Так же там куча настроек, сейчас у них таргет это 60фпс на NextGen консолях.
Если разработчикам не нужен такой фпс можно все расчеты увеличить.

светового меча сделать

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

Ответить
Развернуть ветку
Sandro Kornely

На самом деле в сильно нагруженной графикой сцене ты не сильно заметишь эти следы, не просто так  сглаживание ТАА уже сколько лет стандарт в индустрии -я по тестам заметил что  сильные селды от света заметны когда источник резко меняет интенсивность ( выключается), но впринцепи и волюметрик фог тоже имеет такую задержку, да и часто можно спутать с авто экспозицией) так что не все так страшно, зато близкий к рейтрейсингу результат!)

Ответить
Развернуть ветку
Tr0y Boi

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

Ответить
Развернуть ветку
Big Brother

Только медленно меняющееся освещение - движение персонажа с факелом, плавный закат и прочее. 

В большинстве случаев можно умело замаскировать - никто не заметит, что фары автомобиля не отбрасывают вторичное освещение. 

Ответить
Развернуть ветку
Tr0y Boi

Ну а вот световой меч? Он же по факту летает по сцене, то вырубается, то врубается.
Причем он бы создавал очень красивое вторичное отражение от стен
Или, вот щас додумался, там же можно увеличить качество Lumen именно для меча? Чтобы он меньше кэша использовал. Да, кадры упадут, но для резких объектов можно поставить

Ответить
Развернуть ветку
Big Brother

Дело не в кэше, а в том, что технология использует временное накопление - без этого будет трэш на экране. Нет универсальных технологий - RTGI от Nvidia тоже не совсем динамический, тоже накапливает образцы со временем. 

Ответить
Развернуть ветку
Tr0y Boi
технология использует временное накопление

И это называется кэширование света, лол🌚

Ответить
Развернуть ветку
Big Brother

Нет.
After the Surface Cache is populated with material properties, Lumen calculates direct and indirect lighting for these surface positions. These updates are amortized over multiple frames, providing efficient support for many dynamic lights and multi-bounce global illumination.

Ответить
Развернуть ветку
Lonely Vasyan

В теории можно много чего сделать и придумать. Можно сделать так, чтобы на расчет света от окружающих источников освещения выделялось меньше ресурсов, а для меча больше. Причем можно привязать скейлинг этого параметра к скорости объекта "меч" в пространстве или даже к скорости некоторых окружающих объектов. И даже настроить баланс, чтобы при ускорении объекта освещение меча переключалось на более лёгкие скринспейсовые алгоритмы, а при замедлении на маленькие воксели. Тогда накопление и перерисовка будет идти значительно быстрее и без серьезных дропов производительности. А выключение и вовсе осуществить через удаление кэша данного источника света из общего фреймбуфера, где смешиваются все источники.
Другой вопрос, кто будет заниматься всеми этими микрооптимизациями. Так же  нет никаких гарантий, что это все заработает как надо после долгих месяцев ресерча.

Ответить
Развернуть ветку
Ярослав Голубев

Кстати отличная идея оформи на английском и пошли в Эпик Геймс добавить сортировку приоритета для сортировки материалов для Люмена. 
Что бы на блестяшие металлические поверхности - приоритет пересчета света был  максимальным, а на матовые поверхности - минимальным. 

Ответить
Развернуть ветку
Lonely Vasyan

Прежде чем писать какую-то отсебятину, надо глянуть исходники тех частей кода, которые отвечают за люмен. И понять их для получения полноценного представления о том, о чем буду писать. Но у меня недостаточно высокий айсикью для этого. И вообще я не погромист, а в крестах делал лишь совсем элементарные штуки чуть сложнее хеллоуворлда.

Ответить
Развернуть ветку
Impale Heaven

Старые ассеты получили новую жизнь, и не просаживают фпс)

Ответить
Развернуть ветку
Дмитрий Титов

Спасибо.)

Ответить
Развернуть ветку
Павел Невашедело

Тестировал вчера на своём проекте под ue4. Открыл, посмотрел что со стандартными настройками всё выглядит как и на ue4 с той же производительностью. Потом включил Generate Mesh Distance Fields и всё) Движок crash'нулся и больше не запускается)

Ответить
Развернуть ветку
Empty Node
Автор

Я один старый проект запускал, вроде всё работает. Но я делал как написано в доках. Изменил параметр Global Illumination Method на Lumen и он уже автоматически включил всё что ему нужно, в том числе и Generate Mesh Distance Fields.

Ответить
Развернуть ветку
Frosty
Software Ray Tracing Mode позволяет определить в каком режиме будет выполняться аппаратная трассировка.

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

Ответить
Развернуть ветку
Empty Node
Автор

Спасибо. Поправил.

Ответить
Развернуть ветку
Vardas

А будет ещё разбор системы Нанит? Мне интересно, какие требования она выставляет к железу, какой есть предел у этой системы, как она повлияет на производительность в различных ситуациях, применяется ли она только к статичным моделям без анимации? 

Ответить
Развернуть ветку
Пётр

Судя по справки, прошлой информации и личным тыканьем то вот основные ограничения.
1. Не держит скининг анимацию. И не держит любую вертекс анимацию в материале. Но держит простой аттачь к костям и объектам. Для многих анимации этого может быть достаточно.
2. Совсем не держит прозрачные или маскированные материалы.
3. Не годиться для малополигональных тонких моделей типо травы, листьев. Это я протестил, большие участки травинок резко пропадают. Параметрами не правится.
4. Есть ограничение вроде в 2млн объектов. Хз это на кадр или на сцену. Но в справке было написано, что расширят. Каждый объект максимум 16млн точек или поликов.
5. Может не корректно показывать поверхности где поверхности близко друг к другу расположены друг над другом. Для анализа этого в сцене даже сделали отдельный визуализатор. Вроде это даже может производительность подсаживать. 
6. На данный момент на Пк весь подуровень загружается в оперативку. Или по крайней мере большая часть. Возможно на консолях упор сделали не на ддр6 память, а на ссд и там ситуация не такая страшная будет. На пк с 32гигами оперативки прям уже сильно тесно. 

Ответить
Развернуть ветку
Укроп
Совсем не держит прозрачные или маскированные материалы

Так и думал, что камни не по приколу используют в показах. Но впринципе и так челюсть отваливается.

Ответить
Развернуть ветку
Пётр

Сделали скорее для показа максимальной детализации. Что в принципе правильно. А по итогу никто не запрещает комбинировать с старым типом геометрии которая всё остальное поддерживает.

Ответить
Развернуть ветку
Ярослав Голубев
применяется ли она только к статичным моделям без анимации?

Да. Система не умеет пересчитывать заскиненный/зариганый меш который может деформироваться 

Ответить
Развернуть ветку
Укроп
Material Bent Normals

Странно, что о этой штуке ничего не говорили. Так то очень годная вещь.

Ответить
Развернуть ветку
Empty Node
Автор

Вероятно решили не заострять внимание, так как Bent Normals еще в 4ой версии появились.

Ответить
Развернуть ветку
Александр Батурин

Жрет он конечно дай боже

Ответить
Развернуть ветку
Читать все 32 комментария
null