Освещение в играх. Методы освещения

Освещение один из самых важных критериев самоопределения проекта. Визуальная составляющая играет немаловажную роль, во всех игровых проектах. Освещение в целом определяет вектор направления движения проекта, его целевую аудиторию и намерения.

В данной статье рассмотрим в теории методы.

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

Существует два метода: статическое и динамическое.

Статическое освещение (lightmap)

метод освещения, при котором расчет происходит единожды и в offline режиме. Расчет происходит для всей сцены целиком, либо для указанной ее части.

То есть имеется сцена представленная уровнем, на котором есть объекты, источники света и все что надо, и статическое освещение предоставляет возможность увидеть только в один момент времени, но этот момент времени может быть один на всю игру)) Таким образом сгенерированные тени не будут двигаться, потому что это статика! Однако общую освещенность (день/ночь) можно реализовать.

Освещение рассчитывается для каждого полигона в отдельности, и результат записывается в текстуру, которая впоследствии накладывается на полигон путем мультитекстурирования и получается освещенная сцена.

Такие просчеты статического освещения бывают достаточно затратными по времени, но все зависит от нагруженности сцены. Расчет статического освещения в движке X-Ray может происходить несколько суток, что порой наводит на мысль о плохой оптимизации))

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

Существуют проекты (неигровые) где на небольших сценах статическое освещение считается в real-time. Однако если нужно real-time то лучше использовать динамические расчеты.

Динамическое освещение

метод освещения, при котором расчет происходит в real-time режиме, то есть при рендере сцены. В основном просчет происходит для каждого кадра рендера, но бывают некоторые исключения. Очевидно, динамическое освещение проигрывает в производительности статическому, так как при динамическом требуются более мощные вычислительные средства. Каждая миллисекунда на счету))

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

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

Также существуют разные техники: forward и deferred и различные их модификации. Каждая из них обладает достоинствами и недостатками, но цель их одна — динамические расчеты.


В движке SkyXEngine мы решили использовать только динамическое освещение, причем только deferred shading, так как посчитали его наиболее перспективным, но это всего лишь наше мнение.

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

Понятное дело что игра с очень плохой графикой вряд ли будет популярная, но у нее больше шансов на популярность нежели у игры с красивой графикой, но плохим игровым процессом))

Самое главное понимать цель и сущность.

При выборе нами метода, во многом ориентиром были амбиции и желания, но не здравый смысл. Если смотреть назад в прошлое, то я бы для начала освоил lightmap, и возможно на нем бы и остановился, так как наш проект не содержал целей реалистичной графики.

Даже сейчас, когда мы уже давно, казалось бы, закончили освещение, приходится исправлять баги.

Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

*

code