Global Illumination: как игра решает, куда падают тени

11 сен 2026 · 6 мин · 💬 1

Без Global Illumination сцена выглядит как школьный спектакль: объект освещён прожектором, фон существует абстрактно. Реальный мир устроен иначе — свет от красной стены окрашивает белый пол в розовый, а угол, куда солнце не заглядывает, всё равно виден. Это GI: свет, отразившийся хотя бы раз, прежде чем попасть в камеру.

Почему прямой свет — это только начало

Обычный шейдинг считает свет напрямую: лампа светит на грань, считаем наклон, получаем яркость. Всё, что не видно лампе, — тёмное пятно. GI добавляет второй (третий, сотый) bounce: свет долетел до стены, отразился, долетел до пола. Именно переотражения делают картинку «настоящей»: мягкие цветные отливы, светлые тени вместо чёрных.

Инструменты арсенала

Light probes / reflection probes. Расставленные по уровню сферические «микрофоны», записывающие свет из каждой точки. Персонаж идёт по коридору — интерполяция между пробами плавно меняет его освещение. Дёшево, работает даже на консолях прошлого поколения. Ограничение очевидно: проба не знает, что вы поставили ящик посреди комнаты.

Screen Space Reflections (SSR). Лучи отражения пускаем по тому, что уже отрендерено в кадре: есть depth buffer, есть color buffer — считаем по пикселям. Цена: всё за краем экрана для SSR отсутствует. Отражённая стена обрывается на середине, персонаж в отражении исчезает, если вышел за кадр. Классика жанра — вода: SSR видит только верхнюю половину бассейна.

Voxel-based GI (SDFGI в Godot, VXGI). Сцена прячется в трёхмерную сетку вокселей, по ней пускают грубые лучи. Работает в реальном времени, видит геометрию за экраном, но разрешение ограничено размером вокселя — тонкие детали превращаются в кашу. Godot 4 со SDFGI даёт приличную GI на среднем железе.

Ray-traced GI. Настоящие лучи, ускоренные RTX-ядрами. Красиво, физично, видит всё. Стоит 30-60 FPS на картах начального уровня. Denoiser спасает, но пережатый размазывает лучи в мыло.

Lumen-подобные (Unreal 5). Гибрид: SDF-геометрия + screen trace + world-traced rays + emissive-материалы. Мысль не в «чистом рейтрейсинге», а в динамической GI без запекания и без обязательной RTX-карты. Работает на обычном rasterization-железе, адаптируя качество под нагрузку.

Что выбрать инди-разработчику

Начните с probes. Расставить 20-50 сфер по уровню, запечь — и 80% эффекта «живого света» готовы. Дальше:

  • Вода/глянец — SSR, смирившись с обрывами за экраном.
  • Динамика (взрывы, фонари) без RTX — SDFGI/VoxelGI.
  • RTX-аудитория — RTGI с денойзером, и молиться за стабильные 60.
  • Unreal 5 — Lumen из коробки, только не опускайте настройки до минимума: дёшевый Lumen выдаёт мыло.

Артефакты, которые вы увидите первыми

  1. Энергия из ниоткуда. GI без аккуратного тонамаппинга делает тёмные углы ярче окон.
  2. Утечки света. Тонкая стена прозрачна для воксельного трекинга — из соседней комнаты тянет чужим солнцем. Лечится толщиной коллизии.
  3. Шум RTGI на 4-8 samples — как плёнка 800 ISO в ночном клубе. Денойзер на низких настройках размазывает в акварель.
  4. Пропавшие отражения SSR на краю экрана. Лечение одно: трассировка за экраном, уход от SSR к RT.

GI — это торг. Полный физический расчёт в реальном времени никто не делает; движки собирают картинку из кусков правды: probes для персонажа, SSR для луж, воксели для углов. Задача художника — знать, какой кусок лжёт сильнее, и спрятать ложь туда, куда игрок не глядит.

Комментарии (1)

Форма для гостей комментариев пока не принимается — писать можно автору (expeot@outlook.com) или через владельца блога. Все записи выше настоящие, никто их не модерирует молча.