SSGI реализация
Пытаюсь реализовать Screen space global illumination как я его понял. Делал по аналогии с рефлективными картами теней (Reflective shadow maps). Нигде инфы про SSGI я не нашел.
Короче имею начальный семпл, его позицию и нормаль. Дальше беру с экрана несколько других семплов, получаю их позицию и нормаль. Далее считаю форм фактор для каждого из них вместе с начальным. Этот форм фактор умножаю на цвет семпла. Плюсую его к общему собранному непрямому освещению. Ничего толкового я не получил — какоето мыло. Что не так с моей реализацией, кто подскажет правильный алгоритм SSGI. Видимо я не правильно понял.
const float SSGI_INTENSITY = 1.5; const float SSGI_RADIUS = 400.0; const float SSGI_SAMPLES = 32.0; vec2 ssgiTexelSize = vec2(1.0/800.0, 1.0/600.0); vec3 ssgiColor = vec3(0.0); for (int i = 0; i < SSGI_SAMPLES; ++i) < vec2 ssgiRay = v_uv + (ssgiTexelSize * kernel[i].xy * SSGI_RADIUS); vec3 ssgiRayFlux = texture2D(tex, ssgiRay).rgb; vec3 ssgiRayPos = texture2D(texPos, ssgiRay).rgb; vec3 ssgiRayNormal = texture2D(texNormal, ssgiRay).rgb; float formFactor = (max(0.0, dot(ssgiRayNormal, normalize(pixel_pos - ssgiRayPos))) * max(0.0, dot(pixel_normal, normalize(ssgiRayPos - pixel_pos)))) / length(pixel_pos - ssgiRayPos); ssgiColor += ssgiRayFlux * formFactor; >
#1
17:03, 27 июля 2020
BANEBYTE SSAO домучал? помнится, там у тебя проблемы были с позициями и нормалями в G-буфере. (интересно, как выглядит теперь)
По поводу GI, на скрине вообще не видно собственно самого GI, может стоит вывести для наглядности только его?
#2
17:05, 27 июля 2020
Ruslan
Да. Таки доделал. Получилось неплохо
Первые модификации Hogwarts Legacy включают поддержку SSGI и видеролики со скоростью 60 кадров в секунду

Hogwarts Legacy официально вышла на прошлой неделе, и уже получила несколько отличных модов. Эти первые моды добавляют поддержку SSGI, VR и 60 кадров в секунду для видероликов.
Если говорить более подробно, SSGI — это более продвинутая система освещения, которую геймеры на ПК могут включить с помощью INI-файлов игры. Этот мод будет очень полезен для тех, кто не вносил никаких изменений в RTAO.
Слева скриншоты без мода, справа – с модом.








Наконец, NomNom выпустил мод, который интерполирует все ролики до 60 кадров в секунду. NomNom также очистил их с помощью De-Blocking и De-Noising. Таким образом, теперь у вас будут более плавные ролики, что всегда является плюсом.
Сильные стороны трассировки лучей с непрямым освещением
Привет, Хабр! Представляю вашему вниманию перевод статьи «The Bright Side of Ray-Traced Global Illumination in Unity» автора Rubén Torres Bonet.

Свет — один из самых сильных приемов в визуальном искусстве. В симбиозе с музыкой, нарративом и всеми другими составляющими сцены он способен как усилить, так и ослабить результат. Опытные геймдизайнеры знают это и всегда выделяют свету особенную роль. Один из действенных методов — непрямое освещение. Ниже кратко расскажу о преимуществах трассировки лучей с непрямым освещением в Unity.
Очевидные отличия
Рассмотрим разницу между Baked GI, Screen-space Raster GI и Screen-Space Ray-traced GI. Что не так со светом в этой сцене?
Верно, он либо слишком яркий, либо слишком темный, такого в реальной жизни не бывает. В это сцене использован принцип прямого освещения. А теперь посмотрите ниже. Используйте ползунок для более наглядного сравнения.

Рассмотрим очевидную разницу не в пользу прямого освещения более подробно.
Принцип отражения света
Световые лучи отражаются от поверхностей, меняют свои образующие факторы и в конечном итоге попадают на человеческий зрачок. При прямом освещении лучи отражаются от одного объекта. Давайте создадим простую сцену для сравнения прямого и непрямого освещения в Unity.

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

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

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

Мало что изменилось. А теперь попробуем применить трассировку лучей с непрямым освещением (Screen-Space Ray-traced GI).

Сочно, отличный вариант. Трассировка лучей обеспечивает красивое непрямое освещение и отлично работает с динамическими объектами в реальном времени. Единственной проблемой остается производительность на Unity. Я работал со следующим железом.
- Процессор: AMD Ryzen 2700X
- Графический процессор: TITAN RTX beefy edition
- Набор данных: 3000 кадров, снятых в редакторе
- Сцена: шаблон HDRP
- Версии: Unity 2020.2.0b7 + HDRP 10.0.1
Средний фреймтайм в Full HD:
- Baked GI: 27,64 мс.
- GI + SSGI (низкое качество): 28,19 мс.
- Baked GI + SSGI (среднее качество): 30,36 мс.
- Baked GI + SSGI (высокое качество): 32,96 мс.
- Baked GI + SSGI с трассировкой лучей (режим производительности — низкое качество): 32,07 мс.
- Baked GI + SSGI с трассировкой лучей (режим производительности — среднее качество): 32,88 мс.
- Baked GI + SSGI с трассировкой лучей (режим производительности — высокое качество): 34,81 мс.
- Baked GI + SSGI с трассировкой лучей (режим качества): 107,91 мс.Некоторые значения в 4K:
- Baked GI: 106,21 мс.
- Baked GI + SSGI (среднего качества): 114,56
- Baked GI + SSGI с трассировкой лучей (режим производительности — среднее качество): 119,77 мс.
- Baked GI + SSGI с трассировкой лучей (режим качества): 421 мс.
Я оставил Baked, потому что при удалении этой карты освещения вся сцена ломается.
Не стоит принимать эти цифры как абсолютные. Это конкретная сцена при конкретных настройках с конкретным софтом и железом. Но вы можете сравнить фреймтайм и увидеть, как масштабируется производительность в этой сцене.
По итогам эмпирического сравнения у нас есть два вывода — мы не готовы использовать Screen-Space Ray-traced GI в 4K, но вполне можем применить этот вариант в 1080 p. В итоге единственной причиной отказаться от Screen-Space Ray-traced GI является снижение производительности. Других причин жертвовать реалистичным освещением я не вижу. Именно реалистичность дает сильный эмоциональный эффект, позволяет погрузить в сцену, заставить зрителя подсознательно поверить в происходящее и на выходе сгенерировать максимальное воздействие.
- рейтрейсинг
- raytracing
- Работа с видео
- Работа с 3D-графикой
- Unity
Ghostwire: Tokyo — обзор и сравнение графических настроек игры
В сегодняшнем обзоре мы рассмотрим графические настройки. Их влияние на качество картинки и производительность в игре — Ghostwire: Tokyo, продюсером которой выступил всем известный Синдзи Миками — создатель серии Resident Evil.
В Ghostwire: Tokyo доступно несколько графических настроек, чтобы Вы могли настроить FPS и получить баланс производительности и визуального качества. Ниже предоставлена оценка влияния на производительность, так и влияние на визуальное составляющее игры.
Рассмотрим важные графические настройки и их влияние на картинку.
Качество SSS (Sub-Surface Scattering). Параметр имеет 3 режима – «Выкл», «Низкое», «Высокое». В Ghostwire: Tokyo эффект можно наблюдать в сюжетных сценах, обрабатываемых в реальном времени. Если выключить его, кожа героев станет неправдоподобно светлой. Влияние на производительность высокое, в среднем параметр съедает 8 FPS. Данный эффект не влияет на визуальное составляющее картинки, поэтому можете смело понижать настройку.






Качество SSR (Screen Space Reflections). В данном пункте доступен выбор между: «Выкл», «Низкое», «Среднее», «Высокое» и «Максимальное». Охватывает все зеркальные отражения экранного пространства. Удивительно, но переход с «Максимальное» на «Низкое» не улучшил производительность ни на один кадр; чтобы получить хотя бы 4% прироста, потребовалось их полное отключение.










Глобальное освещение. Здесь у вас есть выбор SSAO (окклюзия окружающего пространства экрана) и SSGI (глобальное освещение пространства экрана), последний из которых является встроенной системой динамического непрямого освещения Unreal Engine. SSGI создает лучшие тени вокруг больших объектов, но SSAO может выглядеть более детально. В углах и щелях появляется дополнительное затенение, а округлые объекты выглядят более убедительно освещенными, с более сильным контрастом между яркими и темными краями по сравнению с источниками света. Является самым требовательным графическим параметром в Ghostwire: Tokyo со стоимостью 27,69% FPS.












Качество теневой карты. Параметр имеет 3 режима – «Низкое», «Среднее», «Высокое». Влияет на разрешение теней. Вы также можете оставить его на высоком уровне, снижение на «Низкое» дало только дополнительные 2% производительности.






Расстояние загрузки объектов. Более высокий уровень позволит загружать удаленные области карты одновременно. Снижение параметра может привести к незначительному приросту производительности — я получила дополнительные 4%, перейдя с уровня 2 на уровень 1 — заметны лишь извинения на листве и траве.
Вовремя тестировании оказалось, что эта опция в полной мере доступна только для карт с большим объемом видеопамяти (не менее 8 ГБ). Игра предупреждает, что этот параметр может сильно повлиять на частоту кадров, если он включен, чего не было замечено.С большим объемом видеопамяти: GTX 1060 с 6 ГБ может включить только уровень 1, RTX 3070 с 8 ГБ — на уровне 2, а RTX 3090 с 24 ГБ — до уровня 4.




Качество загрузки текстур. В данном пункте доступен выбор между: «Авто», «Минимальное», «Низкое», «Среднее», «Высокое» и «Максимальное». Параметр влияет на разрешение текстур. Разница в потоковых текстурах минимальна. Эффект не бросается в глаза, локации в игре темные и мрачные. Понижение параметра до «Низкое» увеличил производительность только на 2%.












Теперь пришло время взглянуть на три отдельных параметра RT. В Ghostwire Tokyo есть только пара настроек трассировки лучей, которые действительно существенно влияют на FPS. Самым требовательным является качество отражения с трассировкой лучей со стоимостью 61,67% FPS, за которым следует качество теней с трассировкой лучей с 32,76%.


Качество теней с трассировкой лучей. В данном пункте доступен выбор между: «Выкл», «Низкое», «Среднее» и «Высокое». Разработчик заявляет, что с трассировкой лучей тени станут «мягче» и реалистичнее. Изменение этого параметра не так эффективно сказывается на производительности, как вы могли бы ожидать, учитывая, что тени практически повсюду. Снижение с «Высокое» на «Низкое» дает рост всего на 2%.








Качество отражения с трассировкой лучей. В данном пункте доступен выбор между: «Выкл», «Низкое», «Среднее» и «Высокое». Это больше похоже на то, что настройка «Низкое» обеспечивает значительное увеличение до 66 кадров в секунду. Это сочное улучшение на 15%, а фактическое падение качества по сравнению с высоким очень незначительно.








Дальность трассировки лучей. Параметр имеет 3 режима – «Низкое», «Среднее», «Высокое». Этот конкретный параметр охватывает расстояние, на котором объекты отрисовываются, при этом чем ниже значение параметра, тем меньше расстояние, на котором объекты могут быть удалены. Понижение до «Низкое» дало мне дополнительные 2% к FPS.






DLSS. Настройки «Качество» и «Сбалансированный» выглядят достаточно близко к собственному разрешению. Для комфортной игры с включённым RT советуем использовать «Баланс» + RT.
FSR. Самая высокая настройка для апскейлера AMD, «Ультракачество», не может сравниться с качеством DLSS ни по резкости, ни по производительности.


DLSS QULITY
FSR ULTRAQUALITY


DLSS QULITY
FSR QUALITY


DLSS BALANCE
FSR BALANСE


DLSS PERFORMANCE
FSR PERFORMANCE


DLSS ULTRAPERFORMANCE
FSR PERFORMANCE
По результатам тестирования можно с легкостью утверждать, что DLSS обеспечивает более качественную обработку изображения, нежели FSR. На ихображениях можно увидеть сильную «шероховатость» от FSR, технология DLSS наоборот, прорисовала более качественно и четко. FSR всё также не справляется с тонкими деталями графики, как и раньше.
Помимо DLSS и FSR, в Ghostwire: Tokyo есть еще один апскейлер Temporal Super Resolution (TSR) Unreal Engine. TSR ближе к FSR, чем к золотому стандарту Nvidia. Его самая высокая настройка «Ультрапроизводительность» выглядит немного лучше, чем у FSR: мелкие детали немного четче, и меньше чрезмерно обработанного, отфильтрованного. Недостатком является меньший прирост производительности. Если у вас нет доступа к DLSS, сначала попробуйте TSR, прежде чем прибегать к FSR.


TSR ULTRAQULITY
FSR ULTRAQUALITY


TSR QULITY
FSR QUALITY


TSR BALANCE
FSR BALANСE


TSR PERFORMANCE
FSR PERFORMANCE
Итак, подведем итоги. Я отлично провела время в Ghostwire: Tokyo, спасая потерянных духов.
Если оценивать качество текстур, Ghostwire: Tokyo не удивит вас, ее можно сравнить с игрой эпохи PlayStation 4, но визуал новинки всё же впечатляет. Токио выглядит изумительно, отличное освещение даже без RTX.
С оптимизацией тоже всё отлично. Несмотря на некоторые жуткие системные требования, Ghostwire: Tokyo может хорошо работать на старых сборках. Глядя на все вышеприведенные результаты, мы видим, что у Ghostwire Tokyo не так много графических настроек на выбор, и только некоторые из них действительно окажут значительное влияние на вашу производительность.
Самым требовательным графическим параметром в Ghostwire: Tokyo является настройка SSGI для Global Illumination со стоимостью 27,69% FPS, за которой следует качество SSS с 7,95% и качество SSR с 5,64%. Затем глобальное освещение (SSAO) на 3,33%, качество карты теней на 1,54% и, наконец, качество текстуры STreaming на 1,03%.
Ghostwire: Tokyo нельзя назвать шедевром, однако благодаря визуалу и сеттингу проводить в ней время приятно.