Jump to content
UNIGINE 2.22.0.1 hotfix is now available for download! ×

AdaptiveGI3 — A Baked Dynamic Global Illumination System for UNIGINE


photo

Recommended Posts

Posted
Work in progress!

🇷🇺 Всем привет.

Если кратко, концепция выглядит следующим образом:

Геометрия → сёрфелы (DXR) → прямой свет → несколько отскоков → GI для ключей Time of Day (солнце и небо отдельно) + отдельные слои ламп и эмиссии → разреженное адаптивное поле probes (брики с разным уровнем детализации; пробы внутри геометрии отсекаются, валидные при необходимости смещаются от поверхностей) → в каждой пробе SH L2 и карта расстояний → в рантайме смешивание слоёв и интерполяция ближайших проб с проверкой видимости по запечённым данным → итоговый indirect GI.

  • Time of Day работает через смешивание двух ближайших ключей. Цвет солнца берётся из текущего состояния движка, а интенсивность солнечного освещения и его bounce можно регулировать.
  • Лампы и группы источников хранятся отдельными слоями, поэтому в runtime они могут включаться и выключаться, менять яркость и другие параметры без повторного запекания всей сцены.

То есть концептуально AGI3 — это не realtime GI в классическом смысле. Идея заключается в том, чтобы один раз дорого вычислить GI, компактно представить результат в пространственно-ориентированном поле и затем очень дёшево реконструировать его в runtime для любого момента Time of Day и текущего состояния источников света.

 

🇺🇸 Hi all.

In short, the concept is as follows:

Geometry → surfels (DXR) → direct lighting → several bounces → GI for Time of Day keys (sun and sky separately) + separate layers for lamps and emissives → a sparse adaptive probe field (bricks at different levels of detail; probes inside geometry are culled, and valid probes are offset from surfaces when needed) → each probe stores L2 SH and a distance map → at runtime, layer blending and interpolation of the nearest probes with visibility checks against the baked data → final indirect GI.

  • Time of Day works by blending the two nearest keys. The sun color is taken from the current engine state, while the intensity of the sun lighting and its bounce can be adjusted.
  • Lamps and light groups are stored as separate layers, so at runtime they can be switched on and off, and their brightness and other parameters can be changed without re-baking the entire scene.

So conceptually, AGI3 is not real-time GI in the classical sense. The idea is to compute GI once at high cost, represent the result compactly in a spatially oriented field, and then reconstruct it very cheaply at runtime for any Time of Day and current state of the light sources.

Снимок экрана (432).png

Снимок экрана (433).png

Снимок экрана (434).png

  • Like 1
Posted

 

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

 

This is still very much in its infancy. There’s still a ton of work left to do. I may post progress updates as I go, if anyone’s interested.

  • Like 3
Posted (edited)

(458).thumb.png.c5f75f13e4cf535a87896206fccddd08.png

 

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

 

Improved the algorithm for surfel generation, chunk creation, probe offset, and runtime interpolation (current perf cost is ~1.2 ms; no optimization has been done yet).
We're testing how it works on heavy scenes like Sponza, not just on cubes 🙂

 

▶️ YouTube: https://www.youtube.com/watch?v=Smcyp1lHCcI

Edited by bivit1993
  • Like 1
Posted

Улучшена расстановка проб и интерполяция, что очень сильно повысило точность в проблемных местах и общее качество.

Скриншоты идут тройками, в формате "непрямой до / непрямой после / финал".

 

Improved probe placement and interpolation, which greatly improved accuracy in problematic areas and overall quality.

Screenshots are presented in triples, in the format "indirect before / indirect after / final".

1_1.png

1_2.png

1_3.png

2_1.png

2_2.png

2_3.png

3_1.png

3_2.png

3_3.png

4_1.png

4_2.png

4_3.png

  • Like 2
  • 2 weeks later...
Posted

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

 

Continuing my experiments with GI baked using spherical harmonics. Looking at lighting for dynamic objects, and one approach to solving what is probably the main problem with any GI: light leakage.

 

https://www.youtube.com/watch?v=GtN5LY3WqzI

  • Like 1
Posted

Art test, baked GI with medium settings roughly comparable to those used in production (Activision, EA, Sucker Punch papers).
It seems to look pretty good. I wasn't sure I'd be able to achieve acceptable quality at lower settings than I usually use, since the technology is still very raw.

Bake time is 1.4 minutes for 10 bounces, GI cache size is 176 MB. (I think it's actually around 20-30 MB, since it's just an empty large level that nevertheless takes up space in the lightgrid).
 

agi3_2026-10-11_12-45-34.thumb.png.b9f80be80afbbad7dc7dce1aedb88994.pngagi3_2026-10-11_12-45-43.thumb.png.28fb06ca11f008559bf5d46ad6ed2a40.pngagi3_2026-10-11_12-45-52.thumb.png.38307be83b4834e5efbe43615fb87570.png

 

And dark 🙂

agi3_2026-10-11_12-11-31.thumb.png.28ccd8e123b309cd082e70d6c07767a3.pngagi3_2026-10-11_12-11-42.thumb.png.8d813d074de2e6c371891593d78c80ab.png

  • Like 2
×
×
  • Create New...