bivit1993 Posted September 18 Posted September 18 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. 1
bivit1993 Posted September 18 Author Posted September 18 В таком вот зачаточном виде это пока что. Работы тут еще - делать и делать. Возможно, буду публиковать прогресс постепенно, если это кому-то будет интересно. 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. 3
bivit1993 Posted September 20 Author Posted September 20 (edited) Улучшил алгоритм создания сёрфелов, чанков, смещение проб, интерполяцию в рантайме (текущий перф кост ~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 September 20 by bivit1993 1
bivit1993 Posted September 22 Author Posted September 22 Улучшена расстановка проб и интерполяция, что очень сильно повысило точность в проблемных местах и общее качество. Скриншоты идут тройками, в формате "непрямой до / непрямой после / финал". 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". 2
bivit1993 Posted October 6 Author Posted October 6 Продолжаю эксперименты с 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 1
bivit1993 Posted Sunday at 07:01 AM Author Posted Sunday at 07:01 AM 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). And dark 🙂 2
bivit1993 Posted Tuesday at 09:10 PM Author Posted Tuesday at 09:10 PM https://youtu.be/KedvkGYpuSI 2
Recommended Posts