В современных играх широко используется глобальное освещение (Global Illumination).
GI имитирующее при помощи ряда методов сложное поведение и распространение света в игровом мире является дорогостоящим для вычислений процессом. Однако оптимизация этих методов и просчитанное заранее глобальное освещение дадут отличный результат при невысоких затратах.
Подразумеваем то, что наша игра должна работать в реальном времени, то есть графика на экране должна обновляться в каждом кадре. Однако источники света работающие в реальном времени не рассеивают свет и не дают отскока света от поверхностей. Поэтому мы должны заранее просчитать глобальное освещение.
Глобальное освещение можно:
1. запечь в световые карты (lightmaps) и наложить статично поверх текстур (baked GI)
2. предварительно рассчитать и использовать динамически (realtime precomputed GI)
Первый метод подходит для мобильных устройств, а второй — для игровых консолей последних поколений и стационарных компьютеров. Также можно использовать оба метода, однако нагрузка от их одновременного использования будет суммироваться.
Традиционно для просчета глобального освещения используется метод трассировки лучей по поверхности (Ray tracing), но этот метод дорог для просчетов. В Unity мы используем Light transport — метод трассировки лучей между кластерами, которые представляют упрощенную модель освещения мира.
GI имитирующее при помощи ряда методов сложное поведение и распространение света в игровом мире является дорогостоящим для вычислений процессом. Однако оптимизация этих методов и просчитанное заранее глобальное освещение дадут отличный результат при невысоких затратах.
Подразумеваем то, что наша игра должна работать в реальном времени, то есть графика на экране должна обновляться в каждом кадре. Однако источники света работающие в реальном времени не рассеивают свет и не дают отскока света от поверхностей. Поэтому мы должны заранее просчитать глобальное освещение.
Глобальное освещение можно:
1. запечь в световые карты (lightmaps) и наложить статично поверх текстур (baked GI)
2. предварительно рассчитать и использовать динамически (realtime precomputed GI)
Первый метод подходит для мобильных устройств, а второй — для игровых консолей последних поколений и стационарных компьютеров. Также можно использовать оба метода, однако нагрузка от их одновременного использования будет суммироваться.
Традиционно для просчета глобального освещения используется метод трассировки лучей по поверхности (Ray tracing), но этот метод дорог для просчетов. В Unity мы используем Light transport — метод трассировки лучей между кластерами, которые представляют упрощенную модель освещения мира.
Запуск предварительных вычислений
Только статичные (Static) объекты участвуют в предварительных процессах создания GI. Поэтому все нужные объекты помечаются как Static на панели Inspector. Предварительный просчет начнется немедленно. Отключив чекбокс Auto мы сможем запускать процесс вручную. Прогресс выполняемых задач и их количество будут отображены на информационной полосе снизу. По скорости прогресса и выполняемой задаче будет заметно где самое большое падение скорости выполнения процесса. На это следует обратить внимание и в дальнейшем оптимизировать эти задачи. При предварительном просчете Realtime GI выполняется 11 задач, Baked GI —16 задач.
Данные предварительных вычислений кэшируются для экономии времени повторных вычислений. Кэш можно очистить используя Preference>GI Cache>Clear Cache
Linear — пространство с повышенной точностью цветов предпочтительнее для реалистичного рендеринга.
HDR работает с линейным цветовым пространством и Deferred методом.
Данные предварительных вычислений кэшируются для экономии времени повторных вычислений. Кэш можно очистить используя Preference>GI Cache>Clear Cache
Методы рендеринга
Forward — быстрый метод с низким требованием к оборудованию можно применять для сцен с небольшим количеством света.
Deferred — метод требовательный к оборудованию с предсказуемыми характеристиками производительности.
Цветовое пространство
Выбрать цветовое пространство Edit> Project Settings> Player
Gamma — используется маломощным оборудованием.Linear — пространство с повышенной точностью цветов предпочтительнее для реалистичного рендеринга.
Динамический диапазон
HDR (High Dynamic Range) позволяет охватывать цвета, находящиеся далеко за пределами цветового диапазона монитора, и в нужных ситуациях эти цвета вытягиваются и отображаются с полутонами. Так, используя эффект Eye Adaptation мы можем разглядеть детали в темной пещере, а переведя взгляд на яркое небо разглядеть детали на нем.HDR работает с линейным цветовым пространством и Deferred методом.
Источники отражения
Отражения — дорогостоящий процесс, который надо предварительно просчитать при помощи Cubemap — глобальной карты окружающего мира, либо зондов отражения (Reflection Probes), которые несут в себе информацию об отражениях в конкретной точке пространства.
Зондами отражения нужно пользоваться разумно, избегая их большого количества. Зонды могут работать в режиме реального времени, но для этого потребуется мощное оборудование.
Окружающий свет
Окружающий свет заполняет сцену и воздействует на объекты со всех сторон при помощи Skybox, градиента или цвета. Объекты на сцене учитывают оттенки окружающего освещения. Изменение цвета в параметрах Skybox влияет на освещение объекта, не изменяя цвета Skybox.
Типы источников света
Основные источники света в Unity это направленный свет (Directional light), точечный светильник (Point light), прожектор (Spotlight) и зона света (Area Light).
Лучи направленного света параллельны. Этот глобальный источник можно разместить в любом удобном месте сцены, а направление света и теней будет зависеть только от поворота этого источника, который имитирует действия солнечного света.
Точечный светильник излучает свет во всех направлениях. Его интенсивность меняется от полной в центре до нулевой в пределах, определяемых свойством Range.
Излучаемый прожектором свет ограничен формой конуса. Затухание света происходит вдоль направления света и к краям конуса, образовывая полутень.
Световая зона — это запекаемый источник света, излучающий рассеянный свет с мягкими тенями.
Материал излучающий свет
Излучающим материалом (Emissive Materials) можно освещать объекты мягким светом подобно источнику Area light. Однако в данном случае форма источника света может быть какой угодно. Также излучаемый материал может работать в режиме реального времени. Свет от этого источника воспринимается статичными объектами и сама геометрия излучателя должна быть статичной. Для освещения самосветящимся материалом динамических объектов нужно использовать световые зонды.
Световые зонды
Для освещения отраженным светом динамических объектов в сцене используется сетка световых зондов (Light probes). Зонды помещаются в сцену, и информация, полученная с освещения кодируется в набор значений. Возле границ контрастных цветов, цветовых переходов или света и тени зонды размещаются плотнее.
Комментариев нет:
Отправить комментарий