Перед стартом нового поколения консолей хочется вспомнить о главных технологиях и методах, которые используются в видеоиграх, благодаря чему вы будете лучше понимать графическую составляющую современных проектов.
Статья будет разделена на несколько отдельных частей:
- Текстуры.
- Тени.
- Освещение.
- Отражения.
- Дополнительно.
1. Текстуры.
Стоит начать с текстур. Возможно многие не знают, но в играх уже давно модель персонажа или любого другого объекта состоит не из одной текстуры. В Call Of Duty: Black Ops 3 для лиц героев используется 6 текстурных карт, которые сейчас детально разберём.
Color map задаёт изображение, которое будет наложено на модель. Это может быть картинка кирпичной стены, досок или любого другого изображения.
Normal Mapping – это технология, используемая для имитации неровностей поверхности на объекте. Она применяется, чтобы сделать вашу финальную модель более похожей на ее высокополигональную версию. С ее помощью можно добавить различные детали, которые нельзя передать через геометрию из-за ограничений полигонажа на вашем проекте, и заставить вашу модель выглядеть более скругленной для лучшей передачи освещенности и большей реалистичности.
Карты нормалей – это RGB изображения, где каждый из каналов (красный, зелёный, синий) интерпретируется в X, Y и Z координаты нормалей поверхности соответственно. Красный канал пространства касательных карты нормалей отвечает за ось X (нормали направленны влево или вправо), зелёный канал за ось Y (нормали направлены вверх или вниз) и синий канал за ось Z (нормали направлены прямо от поверхности.
Gloss — эта карта контролирует резкость отражений. При самом высоком показателе материал становится зеркальным, а при нулевом значении — матовым.
Transmission map описывает часть света, которая не рассеивается и достигает камеры. Поскольку карта является непрерывной функцией глубины, она, таким образом, отражает информацию о глубине сцены.
Fuzz map используется для создания различной растительности. Например, борода, брови, мох на дереве.
Occlusion map используется для предоставления информации о том, какие области модели должны получать высокое или слабое непрямое освещение. Непрямое освещение возникает из-за окружающего освещения и отражений.
2. Тени.
Тени считаются реалистичными, когда их основание выглядит четко, а дальше тень рассеивается. За такой эффект отвечают soft shadows.
Ambient occlusion используется для затенения объеĸтов, создания теней на стыĸах стен.
3. Освещение.
Возможно вы часто видели в игре, как пробиваются лучи света сквозь листву. Это выглядит и вправду красиво. В данный момент используется два вида прямого освещения: SSGR освещение и Volumetric light.
Screen space god rays это более «дешёвый» способ отображения солнечных лучей. Самый главный минус этого метода в том, что лучи находятся в пространстве экрана, если смотреть на источник освещения. Отводя камеру от источника света, лучей будет не видно и эффект объема пропадёт.
Volumetric light создаёт эффект объема сцены, лучи при повороте камеры не исчезают. Из-за этого такой метод предоставляет более красивую картинку, но при этом жертвуя производительностью.
Global illumination — это название ряда алгоритмов, используемых в трёхмерной графике для более реалистичной имитации света.
Глобальное освещение рассчитывает не только прямое освещение, но и отражения света, цветовые отскоки.
4. Отражения.
Cube map — методика для моделирования отражений на поверхности объекта. Кубические карты не показывают динамику, а это значит, что декали и персонажи не будут отображены при таком методе отражения.
Screen space reflections — отражения, построенные по принципу трассировки лучей в пространстве экрана. Главные минусы таких отражений, это артефакты по краям экрана и исчезновение отражения при повороте камеры вниз или вверх.
Planar reflection отображает сцену полностью в динамике, но такой метод очень дорогой, т.к. создаётся вторая сцена, поэтому используют его редко для отражений в зеркалах в закрытых помещениях.
5. Дополнительно.
В этом пункте хочется написать про технологии, которые не встретишь в каждой игре, но при этом являются очень интересными.
Например, объёмные облака, которые взаимодействуют с источником света и самозатеняются.
Подповерхностное рассеивание описывает механизм распространения света, при котором свет, проникая внутрь полупрозрачного тела через его поверхность, рассеивается внутри самого тела, многократно отражаясь от частиц тела в случайном направлении и на нерегулярные углы.
Хотелось бы ещё написать про трассировку лучей, но это больше подходит для отдельной темы, где можно будет расписать, что получат игроки и разработчики при использовании, вместо стандартных методов. Поэтому, оценивайте, пишите комментарии, поправляйте меня там, где я не прав, всегда рад объективной критике. О чем вам хотелось бы узнать в следующий раз?
Не стоит считать всю написанную мной информацию 100% точной. Если вам интересно — углубитесь в тему и перепроверьте.