- Платформа игры
- Готика 2: Ночь Ворона
- Язык мода
- Английский, Русский
- Автор(ы)
-
Always Hungry (я)
Gothic Modern Renderer
По мере того как у меня становилось больше опыта в моддинге любимых игр (а в моддинге я так или иначе уже лет пятнадцать), мне всё сильнее хотелось сделать Gothic II более современной, не затрагивая при этом дух игры и её геймплей. Так появился проект Gothic 2 Modernized. Сначала я сделал плагин, который подсвечивает предметы, доступные для подбора. Потом начал работать над инвентарём. Затем понял, что для нормальной поддержки геймпадов мне нужен собственный слой управления. А после этого решил пойти ещё дальше и сделать полноценный рендерер.
И вот он: Gothic Modern Renderer, или GMR.
Вопрос №1: зачем, если уже существует GD3D11?
Справедливый вопрос. Честный ответ в том, что мне хотелось поэкспериментировать и понять, на что я вообще способен и насколько далеко смогу зайти. В итоге оказалось, что достаточно далеко, чтобы получить второй рендерер, с которым уже сейчас можно полностью пройти Gothic II.
Вторая причина в том, что, хотя у обоих проектов похожая цель, идут они к ней совершенно разными путями. GMR создавался без изучения GD3D11 и его исходного кода. В качестве референсов я использовал современные движки: изучал, как они строят изображение, как оптимизируют рендеринг и какие технологии дают наибольший прирост качества картинки. Это оказался очень увлекательный процесс, и я искренне надеюсь, что вам понравится результат.
Также хочу сразу уточнить: GMR создавался не для того, чтобы заменить GD3D11. Это просто другой рендерер, который выглядит и ощущается иначе. Поэтому ниже я расскажу, что находится у него под капотом и чего от него можно ожидать.
Сейчас GMR доступен для публичного тестирования. На нём уже можно играть, но разработка будет активно продолжаться и у меня очень много весьма интересных планов на этот рендерер.
Что вы увидите в игре
Свет, который действительно ведёт себя как свет
Оригинальное освещение Gothic в основном запечённое, поэтому оно не меняется. GMR заменяет его полностью динамической системой, причём можно выбрать один из двух режимов.
GMR Global Illumination — это система непрямого освещения на основе проб, вдохновлённая DDGI и irradiance clipmaps. На практике это означает, что свет отражается от поверхностей. Солнечный свет, попадающий в комнату через дверной проём, освещает пространство вокруг него, а факел не просто рисует светлое пятно на полу, но и окрашивает стены тёплым светом. Интерьеры начинают ощущаться настоящими пространствами, а не коробками с текстурами.
Система работает на compute shaders и использует собственную программную трассировку лучей, поэтому видеокарта с аппаратной поддержкой ray tracing не требуется. GI можно полностью отключить, а качество настраивается. При этом стоит учитывать, что трассировка лучей довольно требовательна к производительности. Если FPS окажется слишком низким, просто переключитесь на пресет освещения GMR - Classic. Он тоже выглядит красиво, но заметно легче для системы.
Динамическое прямое освещение отвечает за всё остальное: солнце и луну, факелы, костры, лампы, заклинания и даже свет от некоторых эффектов частиц. Используется clustered Forward+ с отсечением источников света на GPU, GGX specular и физически более корректным обратноквадратичным затуханием света.
Запускать огненные шары ночью теперь особенно приятно (но проследите, чтобы у вас был включен свет от эффектов заклинаний).
Ещё в Готике есть такая штука, как запечённые лайтмапы, которые подсвечивают области в помещениях, у которых не хватает собственного света. Я посчитал, что для рендерера, который демонстрирует рассеянное освещение через лучи, это не дело, потому что такой подход тянет картинку обратно в начало нулевых. По умолчанию они отключены, а свет в помещениях будет решаться аж тремя разными способами:
Амбиент освещение, которое можно настроить в настройках - в помещениях просто не будет темнее определенного порога
Адаптация глаза - при достижении определённого порога темноты глаза безымянного за 2-3 секунды привыкнут к темноте и вы станете лучше видеть
Собственный редактор света в игре.
Тени
Солнце и луна используют четыре каскада теней с мягкими полутенями PCSS, а для удалённого рельефа дополнительно применяются height-map shadows.
Важные источники света поблизости от камеры могут отбрасывать кубические тени. Статические тени кэшируются, чтобы неподвижные источники не приходилось пересчитывать каждый кадр.
Персонажи, факелы и заклинания также отбрасывают динамические тени. При этом используется ограниченный GPU-бюджет, чтобы рендерер не тратил ресурсы на пересчёт теней от каждого незначительного источника света.
Небо и атмосфера
Небо теперь не просто фон.
GMR использует физически приближённое атмосферное рассеяние света с динамическими солнцем и луной, звёздами, облаками, ореолами, высотным туманом, дымкой вдали и отдельным подводным туманом.
Та же атмосфера участвует и в освещении мира. Поэтому красный закат действительно окрашивает поверхность земли, а ночь при луне выглядит как ночь при лунном свете.
Также присутствуют объёмные godrays. Они рассчитываются на основе реальной информации о тенях, а не представляют собой обычный радиальный blur, наложенный поверх изображения.
Вода
Вода полностью переработана.
Используются FFT-симуляция волн вместе с волнами Герстнера, screen-space reflections, преломление, эффект Френеля, изменение цвета в зависимости от глубины, мягкие береговые переходы и небольшое количество пены.
Доступно несколько визуальных стилей воды, а силу волн, прозрачность и отражения можно настраивать отдельно.
Работа над водой всё ещё продолжается.
Ambient Occlusion, сглаживание и апскейлинг
AO: можно выбрать между вариантом в стиле HBAO+ и GTAO, основанным на Intel XeGTAO.
При включённом GMR GI ambient occlusion применяется только к непрямому свету, поэтому AO не просто затемняет всё изображение целиком.
TAA использует motion vectors для отдельных объектов, поэтому анимированные персонажи и движущиеся объекты корректно реконструируются между кадрами, а не учитывают только движение камеры.
Апскейлинг: можно рендерить 3D-сцену в разрешении от 50 до 100% от разрешения экрана, после чего изображение реконструируется с помощью AMD FSR 3.1 или собственного GMR TAAU в качестве запасного варианта.
HUD и меню всегда остаются в полном разрешении, поэтому интерфейс сохраняет чёткость.
FSR Frame Generation в этой DX11-версии не поддерживается. Я реализую его после перехода на DX 12, чтобы мы могли наслаждаться лучами в высоком качестве и с высоким FPS.
Под капотом, для тех, кому интересно
Gothic создавалась для железа совсем другой эпохи и выполняет очень много работы по определению видимости объектов на CPU. GMR переносит значительную часть этой работы на GPU:
- постоянная GPU-сцена с compute-shader culling: frustum, distance и Hi-Z occlusion;
- indirect rendering и собственный обход BSP для определения видимости;
- render graph с отдельными проходами и выделенный поток рендеринга;
- reversed-Z, depth pre-pass и линейный HDR pipeline;
- собственный hardware abstraction layer, позволяющий в будущем добавлять другие backend'ы. DX12 остаётся долгосрочной целью.
Нажмите F11
Все основные параметры можно менять прямо во время игры.
F11 открывает меню GMR с настройками:
- освещения;
- теней;
- GI;
- AO;
- атмосферы;
- воды;
- качества изображения;
- дальности прорисовки;
- режима отображения: оконный, без рамок, эксклюзивный полноэкранный режим, пользовательские разрешения.
Также есть пресет Vanilla, позволяющий быстро переключаться между оригинальным видом и GMR и сразу видеть, что именно изменилось.
Для тестирования встроены CPU/GPU-профайлер, диагностика и запись информации о падениях.
С заботой о модмейкерах и о визуальном результате
Допустим, вы - автор Нового Баланса, или Гильдий, или любого другого мода, который изменяет или добавляет пространства и хотели бы сделать мод визуально более эффектным, используя технологии GMR. Это уже возможно. GMR имеет внутриигровое меню для редактирования источников света прямо в игре!
Через него вы можете:
Отключать отдельные источники света
Менять яркость и радиус для индивидуальных источников или для всех таких же
Настраивать, какие источники будут просто светить, а которые - отбрасывать тень
Создавать свои собственные источники света прямо в игре, сохранять их в свой профиль, скажем, NewBalance.g2lightprofile и поставлять вместе с вашим модом, чтобы игроки могли в два клика загрузить его и наслаждаться вашим арт-дирекшеном по свету. Вы можете переключаться между профилями на лету, а также создавать новые прямо в меню - это очень просто.
Вызвать меню можно на Shift + F1
Управление для перемещения новых источников:
Z + движение мышки - свет вверх вниз
Shift + движение мышки - свет от камеры к камере
Ctrl + движение мышки - свет вправо влево перпендикулярно к камере
Установка
Предназначено для Gothic II: Night of the Raven / Ночь Ворона, версия 2.6 fix.
- Скопируйте всё содержимое архива в папку Gothic II.
- Запустите игру.
- Загрузите сохранение и играйте или нажмите F11, чтобы изменить настройки.
Union не требуется.
⚠️ GMR не может одновременно работать с GD3D11 или любым другим рендерером, использующим ddraw.dll. Этот файл может занимать только один рендерер.
Текущее состояние
Это ранняя публичная версия.
На ней уже можно играть, и я сам прохожу игру с GMR, но качество изображения, производительность и совместимость всё ещё дорабатываются.
На сильно модифицированных сборках и необычном железе поведение может отличаться от моих тестовых конфигураций.
Пока не реализованы:
- полноценная система PBR-материалов;
- замены текстур с normal maps;
- общие отражения для сцены;
- bloom;
- некоторые запланированные эффекты окружения.
Помогите сделать GMR лучше
Тестеры играют огромную роль в разработке.
Если вы столкнулись с графическими артефактами, падениями или проблемами с производительностью, пожалуйста, сообщите об этом.
Самые полезные отчёты содержат:
- модель вашей видеокарты;
- версию игры и список установленных модов;
- место в игровом мире, где возникает проблема;
- скриншоты или видео;
- файл GothicModernRenderer.log из папки System.
GMR является частью Gothic 2 Modernized — проекта, цель которого состоит в модернизации технической стороны Gothic II без изменения того, что делает Gothic именно Gothic.