Precomputed Radiance Transfer - система глобального освещения
Мы представляем новую систему глобального освещения (global illumination) в движке. Она основана на предварительно запекаемой системе под названием “Precomputed Radiance Transfer” (предварительно вычисленный перенос излучения). Эта техника позволяет нам запекать локальную окружающую среду (ambient) в сцене и отображать её оптимизированным образом во время выполнения. Запечённые данные не зависят от атмосфер. Таким образом, мы можем освещать сцену одними и теми же данными запекания для любой атмосферы.
| С системой | Без системы |
|---|---|
![]() |
![]() |
Процедура запекания
Запекание сцены делится на несколько частей:
- Сначала художник должен разместить пограничные пробы (border probes), чтобы определить границы GI (глобального освещения) сцены.
Примечание 1: Если минимизировать границы GI насколько это возможно (не распространяя их на удалённые места от проходимой зоны), можно уменьшить размеры сетки (grid), и таким образом у вас будет больше точности внутри города, где это наиболее важно. Для городских сцен мы обычно используем размеры сетки шириной 1,5 метра и высотой 2,5 метра.
Примечание 2: Для пикселей за пределами границ GI мы используем резервную пробу (fallback probe) из сцены. По умолчанию это самая высокая активная проба, ближайшая к левому углу области GI. Художник может выбрать любую другую пробу из сцены, сначала выбрав пробу и отметив флажок “Fallback Probe” в интерфейсе.

- На следующем этапе создаются пробы GI. Начальные позиции проб вычисляются автоматически с использованием навигационной сетки (navigation mesh) сцены. С помощью навигационной сетки мы размещаем пробы там, где могут перемещаться агенты, а также везде, что видно из этих навигационных точек. Пробы генерируются в рамках 3D-сеточной структуры. Для каждой позиции пробы вычисляются данные направленного окружающего освещения (directional ambient). Используя эти значения окружающего освещения, каждый пиксель на экране освещается 8 ближайшими пробами. В некоторых случаях, когда разница в освещении между соседними пробами очень велика, может произойти утечка света или тени (light or shadow leaking). Чтобы исправить эти проблемы, мы рендерим карты теней (shadowmaps) от проб так же, как от точечных источников света. Пробы с картами теней называются “пробами видимости” (Visibility Probes). Из-за проблем с использованием памяти для таких проб видимости существует ограничение — 2048. На этапе автоматического размещения система также пытается найти наиболее вероятные места утечек и назначить соответствующие пробы в качестве проб видимости. При этом учитывается разница в окружающем освещении. Для дополнительного устранения утечек система оставляет пустыми последние 5 процентов лимита проб видимости, чтобы дизайнер сцены мог исправить оставшиеся проблемы с утечками.

Файлы PRT
Как и в системе данных редактирования сцены, данные prt делятся на две части. Файл prt_data.bin находится внутри папки SceneObj и представляет собой сжатую версию, лишённую каких-либо данных редактирования. Этот файл следует отправлять в систему контроля версий. Другой файл — это файл данных редактирования. Он очень большой (около 2–3 ГБ) и автоматически отправляется в папку данных редактирования в сети. При открытии уже запечённой сцены в редакторе загружаются только сжатые данные. Чтобы иметь возможность редактировать данные запекания, вам нужно загрузить данные редактирования с помощью кнопки ‘Load’ на панели “General Info” инспектора PrtInspector.
Важное замечание: После внесения любых изменений в данные prt не забудьте сохранить данные с помощью кнопки ‘Save’ на панели “General Info” инспектора PrtInspector.
Операции PRT

- Load (Загрузить): Загружает данные редактирования с сервера.
- Save (Сохранить): Сохраняет текущие данные редактирования на сервер.
- Auto Height Boundary (Автоматическая граница по высоте): Регулирует высоту граничных проб PRT в соответствии с минимумом/максимумом сцены.
- Bake Single Level (Запечь один уровень): Запекает сцену с текущими уровнями, следует использовать для сцен интерьеров.
- Bake All Levels (Запечь все уровни): Запекает сцену с заранее определёнными комбинациями нескольких уровней (а именно level-1/level-2/level-3 и siege/civilian).
Параметры размещения проб:
- Grid Width (Ширина сетки): Определяет размер ячейки сетки проб в плоскости XY. Для городов можно использовать значение 1,5. Для сцен интерьеров можно использовать значение от 0,5 до 1,0.
- Grid Height (Высота сетки): Определяет высоту ячейки сетки проб. Для городов следует использовать значение около 2,5. Для сцен интерьеров можно использовать значение от 0,5 до 1,0.
Инструменты выделения:
Для обеспечения быстрого и плавного редактирования проб реализованы различные инструменты выделения.
- Select All (Выбрать всё): Выбирает все пробы.
- Grow (Расширить): Расширяет выделение, включая соседние пробы в плоскости XY.
- Shrink (Сжать): Сжимает выделение, оставляя только внутренние соседние пробы в плоскости XY.
- Fill (Заполнить): Находит внутренние пробы текущей выбранной группы проб и выбирает их.
- Select Border (Выбрать границу): Находит и выбирает граничные пробы текущего выделения.
- Select Inner Border (Выбрать внутреннюю границу): Находит и выбирает внутреннюю границу текущего выделения.
- Select Outer Border (Выбрать внешнюю границу): Находит и выбирает внешнюю границу текущего выделения.
- Lasso Tool (Инструмент “Лассо”): Мы реализовали инструмент лассо в экранном пространстве для удобного выбора группы проб. Его можно запустить, нажав ‘r’, и завершить двойным щелчком или повторным нажатием ‘r’.

Инструменты видимости
- Show Active Probes (Показать активные пробы): Показывает все активные пробы.
- Show Deactive Probes (Показать неактивные пробы): Показывает деактивированные пробы.
- Show Visibility Probes (Показать пробы видимости): Показывает пробы видимости (те, у которых есть расчёт видимости для предотвращения утечек).
- Level To Show (Отображаемый уровень): Выбирает Z-уровень для отображения. -1 означает все уровни.
- Show Probe Radius (Показать радиус пробы): Определяет радиус пробы для визуализации отладки.
- Box Tool (Инструмент “Бокс”): Включает режим, в котором вы .
Примечание: Эта система рендерит только 100 ближайших к камере проб.
Полезные сочетания клавиш
- Левый Ctrl + x: Включить/выключить выбранные пробы
- Левый Ctrl + c: Переключить статус “Visibility Probe” (проба видимости)
- Левый Alt + левая кнопка мыши: Выбрать пробы, влияющие на пиксель (очень удобный инструмент для исправления утечек — выберите пиксель и используйте сочетание клавиш переключения статуса видимости, чтобы устранить проблему)


