Не модифицированная версия Skyrim на продажу

Доброго времени суток,

Сегодня я продолжаю рассмотрение графики в Небесном Крае. Начнём более классическое рассмотрение всего конвейера, чтобы узнать что таит в себе Creation Engine? Не будем тянуть кота, пусть спит. Окунёмся сразу в пучину графических ухищрений Беседки.

Не модифицированная версия Skyrim на продажу

В целом конвейер состоит из 5 основных этапов:

  1. Отражения

  2. Карта Теней

  3. Тест Глубины

  4. Рендер

  5. Пост-обработка

Перед Бурей

Тестовый кадр
Тестовый кадр

Небесный край вышёл позавчера в 2011 году. PBR, отложенный рендер и все эти ваши высокотребовательные фичи — были не в чести. Даже перейдя к новому двиглу в 2015 году вчера, разработчики решили не вкладываться заново в разработку движка игры, ведь её не продадут ещё раз чтобы окупить затраты на новом продукте. Поэтому, окупили непонятно что на старом, было принято решение использовать старый производительный конвейер… поверх которого, прикрутить новый непроизводительный для пары пост-эффектов.

Дерево и железо не отличаются по работе света
Дерево и железо не отличаются по работе света

Придется признаться, сейчас уже никто не помнит, но в своё время, Скайрим не пошёл на Xbox 360 даже в 30 FPS, графику урезали производительность повышали как могли. Иногда, было сложно отличить, это соседние пиксели Cкайрима или телевизор забыли включить. Конечно, для работяг сделали послабления и отключили пытки в виде пост-эффектов, бесконечного размытия и очень важного свечения. Вот бы и остальным разрешили играть в чистую картинку, а не в эффект Уставших Глаз.

https://youtu.be/xENEdxlkgnE?si=FX2So2aRSa4CZ3aL&t=56
https://youtu.be/xENEdxlkgnE?si=FX2So2aRSa4CZ3aL&t=56

Все Скайримы не используют PBR(Физически Корректный Рендеринг) ни в каком виде. Всё настолько бескомпромиссно, что нет даже карты Specular/Глянцевой/Шероховатой поверхности — графику вырезали любой ценой. Собственно, в игре всё так и выглядит, как будто состоит из одного материала по типу дерева или пластилина. Выделяющиеся цвета металла и дерева — единственное, что позволяет различать материалы из которых состоят объекты. Слава Богам, что оставили хотя бы карту нормалей для объектов, иначе, мыло было бы ещё и полигональным.

Пример разных материалов созданных с помощью Физически Корректного Рендеринга
Пример разных материалов созданных с помощью Физически Корректного Рендеринга

Интересно, они же исправили эту ситуацию в Старфилде? ведь да?…

Итого, у нас 2 уникальные карты для объекта:

  1. Цвет

  2. Нормаль

Напомню, что даже игры 2003-2007 годов уже применяли карты Specular и Glossiness. Они позволяют элементарно сделать металл более блестящим, чем дерево или отображать матовые поверхности и глянцевые. Без этих карт, всё выглядит как-будто состоит из одного материала, физика света для всех материалов одна и та же, металл это, дерево или пластик.

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

Кстати, а что там с физикой света? Сначала, придется рассмотреть отражения, чтобы убедится, что они вообще не используются.

Воды Нирна

Первое, что делает Скайрим — рисует динамическую кубическую карту отражений. Этот трюк очень дорогой для старых видеокарт. Хотя сегодня он не ест вообще производительности. В 2011 году, видеокарта могла половину времени кадра — заниматься отрисовкой 6 карт в полном разрешении. Самое печальное, что эти карты влияют только на отражения в воде, что делает их просто красивой затычкой, которую игрок видит 0.01% времени, а обращает внимание и того меньше.

Xbox 360 Slim времён выхода Skyrim
Xbox 360 Slim времён выхода Skyrim

Все 6 карт сначала заполняются, небом и террейном. В задний фон рисуются объекты террейна(деревья и камни). В настройках можно указать, что пойдет отрисовываться. Используются только объекты природы, вместо всей сцены. Однако, в Специальном Издании — выбрать отражения больше нельзя, рисуется всё: небо, горы, деревья. Неплохая экономия на объектах, особенно, когда большинство высокополигональных и уникальных объектов редко являются частью ландшафта.

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

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

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

Во-третьих.. пусть это будет загадкой. Дам подсказку: вода не везде одинаковая.

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

Подведем итог,

Кубическая карта отражений:

  1. 6 карт разрешения 512 — 6×512 — 3K текстура

  2. 3K текстура заполняется небом и террейном

  3. Объекты ландшафта рисуются только в задний фон

  4. Остальные объекты не отображаются

  5. Используется только для воды

Свет Магнуса

Свет самая важная часть конвейера. В Скайриме используется три составляющих света:

  1. Прямой просчет света (Forward Rendering)

  2. Карта теней (Shadow Map)

  3. Затенение окружения (Ambient Occlusion)

    • Опционально: начиная со специального издания

(Поведение видеокарты при ветвлении инструкций)

Магнус бог магии — его свет, вместо нашего Солнца, восходит над Нирном. В прямолинейном рендере, каждый пиксель просчитывается сразу в пиксельном шейдере. Он принимает на вход массив источников света. Каждый из которых считается в банальном цикле for(Lights.Length). Да, это относительно дорогая операция. Ранешние игры, прямо в настройках позволяли задавать максимальное количество источников света на объект, чтобы контролировать производительность. Однако, при небольшом количестве источников, простой цикл быстрее отложенного освещения. Современные видеокарты имеют достаточно аппаратной логики — управления, чтобы щелкать циклы на раз. Все ещё важным моментом остаётся, содержимое цикла. Но просчет света, считается дешёвой операцией. Я бы даже заметил, что преимущество отложенного света, перед прямым освещением — ещё следует доказать, так как железо значительно изменилось с эпохи перехода.

AO/Затенение Окружения
AO/Затенение Окружения

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

Карта теней

Качественная Карта Теней вблизи игрока
Качественная Карта Теней вблизи игрока

Главное оружие любого освещения — Карта Теней. С древних пор и до наших дней, даже в самых современных игровых движках — карта теней чуть ли не самая главная составляющая.

Здесь используется самая базовая карта теней, все тени чёткие и ровные. Если размер карты слишком малый, то тени просто пикселизируются. Тени имеют формат D16(только мантисса, 16 бит), рисуются с помощью Карты Глубины. В каждой точке тени, тень имеет одинаковую интенсивность, все тени одинаково серые.

 

Каскадные Тени - схематичное изображение
Каскадные Тени — схематичное изображение

Благо, есть каскад карты теней, беда в том, что их только два: 

1. Основной

2. Вторичный

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

Карта Теней и Карта Глубины
Карта Теней и Карта Глубины

После создания Карты Теней, происходит ещё один этап, создание Буфера Глубины. Под конец, с помощью Буфера Глубины реконструируется позиция пикселя в мировых координатах. С помощью них, определяется сэмпл в Карте Теней и тень записывается в Экранное Пространство. И уже готовая тень для каждого пикселя — берётся в момент рендера, в пиксельном шейдере, в дальнейшем.

Карта Теней в экранном пространстве
Карта Теней в экранном пространстве

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

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

Есть один секрет, с добавлением Солстейма в игру, был добавлен забавный факел, в одной таверне. Он единственный факел во всей игре, который отбрасывает тени, при этом он единственный динамический источник света, который игрок может носить в руке и он будет отбрасывать динамическую тень.

Вот так будет выглядеть итоговое совмещение всех аспектов тени в игре:

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

На этом пока откланяюсь на покушать.

 

Источник

Читайте также