Войти
Вячеслав ЕгоровСтатьи

Освещение в Valve’s Source Engine (перевод) (2 стр)

Автор:

3. Мировое освещение

  В Half-Life 2, были совмещены преимущества предрассчитанных в оффлайне карт освещённости ([[LightMap|Light maps]]), сделанные программой расчёта Radiosityvrad, и нормал маппинга, добавляющего высокочастотные детали при попиксельном освещении. Сам по себе, Radiosity имеет множество преимуществ для интерактивного игрового мира, и вполне возможно создать карты освещённости относительно небольшого размера, которые всё равно создадут убедительные эффекты глобального освещения ([[GI]]), не сильно затрагивая скорость. Такой подход к расчёту глобального освещения требует меньше ручной корректировки источников света при создании уровня, и позволяет избежать ситуаций с резкими перепадами освещённости, как показано на изображениях ниже.

Изображение

Изображение 2. Резкие перепады стандартного освещёния vs Radiosity

  Из-за интерактивной природы игрового процесса (заранее неизвестно, где будет находиться камера, так как ею управляет игрок), не имеется возможности корректировать результаты освещения в каждом кадре по отдельности, как, например, при производстве фильма. Технология глобального освещения стремится создать сцену, которая хорошо выглядит для всех возможных положений камеры. Поэтому, предпочтение использовать глобальное освещение, является основной идеей компании Valve, и в разделе про освещение моделей с использованием [[Irradiance Volume|Irradiance Volume]] об этом будет рассказано подробнее.

3.1. Radiosity Normal Mapping

  Несмотря на то, что Radiosity имеет множество плюсов, карта освещения небольшого размера не может сохранить информацию о мелких деталях, которые хотелось бы видеть на объектах. Даже при низкой плотности текселей карты освещения (в Source тексель в среднем имеет размеры 10x10 см), требуется большой объём видеопамяти для игрового уровня, так как эти текстуры уникальны для каждого полигона сцены.
  Многие игры рассчитывают освещение от одного или пары источников света за проход в пиксельном шейдере, но хочется иметь возможность эффективно рассчитывать освещение с картами нормалей для большого количества источников света.

  Мелкие детали на поверхностях получаются, используя повторяющиеся карты нормалей и альбедо, разрешение которых намного выше чем у карт освещения. Таким образом были объединены преимущества нормал маппинга и лайт маппинга в новой технологии, которая называется Radiosity Normal Mapping. Эта технология - ключевой алгоритм освещения в движке Source.

  Основная идея Radiosity Normal Mapping’а заключается в сохранении карт освещения, используя новый принцип, который даёт возможность выразить направление, откуда пришёл свет, а не только значение усреднённого диффузного освещения, как это делают в большинстве техник расчёта лайтмапов.
Оффлайновый расчёт Radiosity в движке Source был модифицирован для того, чтобы создавать карты освещения, которые хранят направление пришедшего света, используя базис, показанный в изображении ниже.

ИзображениеИзображение

Изображение 3. Radiosity Normal Mapping Basis

  Так, увеличив в три раза размер потребляемой картами освещения памяти, удалось сохранить направленность излучения в виде, который совместим с традиционными картами нормалей, которые сохранены в локальных координатах поверхности. Теперь можно рассчитать выходное излучение, как функцию от альбедо, нормали и информации из карт освещения. Таким образом, можно рассчитать диффузную освещённость мировой геометрии с картами нормалей, и учётом сложного окружающего света за несколько инструкций пиксельного шейдера. Также, те же самые карты нормалей используются в других пиксельных шейдерах, например, для расчёта коэффициентов Френеля, или доступа к кубической карте окружения для бликового освещения.

3.2 Мировое бликовое освещение

  Предпочитая использовать сложное глобальное освещение и image based техники вместо накопления света от малого количества локальных источников света, для расчёта бликового освещения сцены были решено использовать кубические карты окружения. Для того чтобы держать потребление памяти большим количеством кубических карт на приемлемом уровне, дизайнеры вручную расставляют точечные объекты на картах, которые указывают позицию для расчёта карт окружения, из которых потом будут делаться выборки. Кубические карты рассчитываются, используя рендер движка Source, и сохраняются в формате повышенной точности (для ХДР), как часть статичных данных уровня. Во время игры, объекты, материал которых имеет бликовую составляющую, использует кубическую карту в ближайшей к объекту точке, или ту, которую вручную назначил дизайнер для избегания проблем в особых ситуациях.

Страницы: 1 2 3 4 5 Следующая »

#HDR, #shading, #tone mapping, #Valve

2 декабря 2008 (Обновление: 20 дек. 2008)

Комментарии [3]