В марте NVIDIA объявила, что берет под крыло любительский проект q2vkpt и собирается выпустить собственную версию нетленной классики с графическим движком на основе трассировки лучей. И вот, спустя три месяца томительного ожидания, она перед нами. Но что же особенного в обновлении старинной игры? А те, кто уже поспешил скачать и опробовать Quake II RTX, могут задать вопрос, почему она работает так медленно, как будто на дворе вновь 1997 год, а в компьютере — первая карта Voodoo Graphics.
В самом деле, пионерские проекты, освоившие трассировку лучей в реальном времени, — Battlefield V, Metro Exodus и Shadow of the Tomb Raider — оказались по силам не только видеокартам серии GeForce RTX, но и, с теми или иными оговорками, ускорителям прошлого поколения. Что именно дает право Quake II RTX рассчитывать на статус самой передовой и требовательной игры для современных GPU? Все дело в том, что в играх переходного периода — от растеризации к трассировке лучей — действует модель гибридного рендеринга, когда Ray Tracing дозированно применяют для симуляции определенных эффектов — теней, отражений или глобального освещения — а львиную долю нагрузки на GPU по-прежнему создает растеризация и шейдерные программы. Даже в Metro Exodus — игре, в которой DXR используется наиболее активно, — пришлось пойти на определенные жертвы (к примеру, в ней нет трассированных отражений). В Quake II RTX, напротив, все освещение целиком рассчитывается с помощью трассировки лучей, а если точнее — по наиболее достоверному и ресурсоемкому методу Path Tracing.
Провести границу между Path Tracing, с одной стороны, и Ray Tracing, с другой, не так-то просто, особенно в таких случаях, как компьютерные игры. Различие между этими методами можно описать в одно и тоже время и количественным, и качественным образом. Но строго говоря, понятие Ray Tracing описывает лишь фундаментальные принципы, лежащие в основе всех подобных алгоритмов: из точки обзора программа посылает множество лучей, которые пересекаются с объектами сцены, отражаются от них и в конечном счете заканчиваются на первичных источниках света (или уходят в бесконечность). В зависимости от того, насколько много лучей отслеживает алгоритм, и какую глубину вторичных отражений он допускает, конечный результат будет в той или иной степени приближен к физически достоверному эталону изображения. Предел точности расчетов задает быстродействие оборудования, ведь каждое пересечение луча с геометрией сцены требует выпустить из найденной точки все больше и больше лучей. Именно поэтому в играх пока не может идти речи о полном отказе от растеризации в пользу трассировки лучей, а разработчики используют Ray Tracing для симуляции изолированных, наиболее ярких, эффектов освещения.
Path Tracing — один из распространенных алгоритмов рендеринга путем трассировки лучей, который преобладает в «офлайновых» задачах: создании фотореалистичных статических изображений и CGI-анимации в кино. Ключевое достоинство Path Tracing состоит в том, что он лучше прочих методов решает проблему экспоненциального роста вычислительной сложности при расчете множественных отражений луча от поверхностей объектов за счет математических методов Монте-Карло. Тем не менее для современных графических процессоров Path Tracing пока еще считается слишком сложной задачей, если необходимо выполнять рендеринг «в онлайне» — как в играх. Или это уже устаревшая точка зрения?
Quake II оказался удобным подопытным кроликом для того, чтобы провести такой эксперимент. Исходный код движка id Tech 2 уже давно лежит в открытом доступе, а игра имеет богатую историю пользовательских модификаций. После того как NVIDIA выпустила видеокарты с функциями трассировки лучей на уровне кремния, независимый разработчик Кристоф Шилд (Christoph Schied) создал q2vkpt — альтернативный рендерер Quake II под API Vulkan, в котором все без исключения процедуры переноса света рассчитываются методом Path Tracing. Это чрезвычайно элегантный подход, который объединяет шейдинг (вычисление цвета) пикселов в едином алгоритме и нуждается в минимальной работе над ресурсами игры для того, чтобы получить физически достоверное изображение. Упрощенно говоря, нужно лишь присвоить текстурам те или иные свойства реакции на свет, а оставшуюся работу выполнит алгоритм трассировки лучей.
Однако Path Tracing по-прежнему является чрезвычайно сложной задачей с точки зрения объема вычислений, поэтому q2vkpt оперирует сравнительно небольшим количеством лучей, а изображение получается довольно «шумным». Цвет недостающих пикселов вычисляется путем аппроксимации данных — причем как из текущего, так из и предшествующих кадров, что одновременно дает эффект временного полноэкранного сглаживания (TAA). Если дать движку время, поставив игру на паузу, то шумоподавление отключается, а кадр за несколько секунд достигает максимальной плотности лучей (однако все скриншоты в обзоре, помимо следующей группы, были сделаны с применением фильтра).
Прелесть комбинации Path Tracing с шумоподавляющим фильтром в том, что такой метод рендеринга, в теории, можно эффективно масштабировать и на более сложные игры, чем Quake II. В данном случае решающее значение для быстродействия имеет не сложность геометрии, а количество лучей второго порядка при расчетах отраженного освещения и число источников света (к слову, оно в Quake II изначально немаленькое даже по современным стандартам). Если современные графические процессоры готовы нести бремя полной трассировки лучей в Quake II, то и новые проекты с графикой, построенной на принципах Path Tracing, уже должны быть не за горами.
Без шумоподавления (текстуры выкл.) |
С шумоподавлением (текстуры выкл.) |
Эталон (текстуры выкл.) |
Без шумоподавления |
С шумоподавлением |
Эталон |
Quake II RTX является комбинацией q2vkpt с несколькими другими open-source-проектами на основе Quake II — оптимизированным клиентом и выделенным сервером Q2Pro на основе кода id Software (в который входит переписанный, чрезвычайно быстрый рендерер OpenGL), набором текстур Q2XP — и собственными разработками NVIDIA. Так, NVIDIA разместила на уровнях дополнительные источники света, внедрила карты нормалей, множество новых текстур, спрайтов и эффектов частиц, высокодетализированные модели оружия и, наконец, раздала игрокам ружье, выбрасывающее световые шашки.
OpenGL (RTX Off) |
Vulkan (RTX) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
Благодаря тому, что разработчики Quake II RTX сменили статическое освещение уровней Quake II, «запеченное» в картах света (lightmaps), на полностью динамическую модель, в игре появился цикл дня и ночи — по умолчанию он привязан к системному времени ПК, но время суток можно выбрать и произвольно. Естественное освещение зависит от рассеивающих свойств атмосферы, облаков и положения солнца на небосклоне — причем оно определяется по упрощенной астрономической модели, включающей широту, на которой находится наблюдатель. Разработчики даже учли такой фактор, как предполагаемый спектральный класс и диаметр светила системы Строггов — эта звезда крупнее, чем Солнце, поэтому она отбрасывает на поверхность планеты более мягкие тени. Все эти переменные также можно отрегулировать вручную.
Рассвет |
Утро |
День |
Вечер |
Сумерки |
Ночь |
Quake II RTX доступна в магазине Steam абсолютно бесплатно и содержит три первых карты одиночной кампании Quake II. Для того чтобы пройти сюжет полностью, придется купить цифровую версию первоисточника или сдуть пыль со старого CD — Quake II RTX устанавливается поверх ресурсов оригинала. И кстати, легендарный мультиплеер «Кваки» никуда не делся: к клиенту Quake II RTX прилагается исполняемый файл выделенного сервера. На совместимость с серверами без RTX мы игру не проверяли, но обратное совершенно точно возможно.
Графическое меню Quake II RTX включает несколько опций, регулирующих эффекты трассировки лучей. Среди них есть эффекты распространения света в жидкой среде (Caustics), объемные лучи (God Rays) и симуляция широкого динамического диапазона (HDR Bloom).
Caustics Off |
Caustics On |
God Rays Off |
God Rays On |
Прямые тени от источников света и отражения в зеркальных поверхностях, знакомые нам по Shadow of the Tomb Raider и Battlefield V, движок формирует в любом случае и не позволяет деактивировать их в графическом интерфейсе (хотя это можно сделать с помощью текстовой команды).
Reflection and Refraction Off |
Reflection and Refraction On |
Но ключевая опция Quake II RTX, которая оказывает наибольшее влияние на изображение и производительность, — это интенсивность расчетов так называемого глобального освещения (Global Illumination), под которым подразумевается непрямое освещение объектов за счет лучей, отраженных от соседних поверхностей. Меню содержит три предустановленных параметра качества:
И наконец, можно полностью выключить GI, сохранив в игре лишь прямое освещение, но тогда Quake II RTX будет похож на DOOM 3, знаменитый своими жесткими тенями — с той разницей, что в Quake II RTX благодаря множественным лучам и аппроксимации цвета пикселов тени всегда имеют мягкие края.
Global Illumination Off |
Global Illumination Low |
Global Illumination Medium |
Global Illumination High |
Не нужно пристально всматриваться в кадры, чтобы заметить, как сильно трассировка лучей повлияла на облик Quake II. А когда речь идет о локациях с открытым небом, не меньшую роль сыграл динамический цикл времени суток, причем новые тона игры явно не всем из «старой гвардии» придутся по душе. В ранних демонстрациях Quake II RTX разработчики спровоцировали шквал критики тем, что давящую багровую текстуру строгговского мира поменяли на счастливый голубой небосвод. Финальная версия отошла от столь радикального пересмотра видения id Software, но градус мрачности в Quake II все-таки понизился. Впрочем, если солнечный свет мешает предаваться ностальгии, в меню можно вручную снизить яркость окружающей среды и даже вернуть на небо оригинальную текстуру.
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
OpenGL (RTX Off) |
Vulkan (RTX On) |
Тестовый стенд | |
---|---|
CPU | Intel Core i9-9900K (4,9 ГГц, 4,8 ГГц в AVX, фиксированная частота) |
Материнская плата | ASUS MAXIMUS XI APEX |
Оперативная память | G.Skill Trident Z RGB F4-3200C14D-16GTZR, 2 × 8 Гбайт (3200 МГц, CL14) |
ПЗУ | Intel SSD 760p, 1024 Гбайт |
Блок питания | Corsair AX1200i, 1200 Вт |
Система охлаждения CPU | Corsair Hydro Series H115i |
Корпус | CoolerMaster Test Bench V1.0 |
Монитор | NEC EA244UHD |
Операционная система | Windows 10 Pro x64 |
ПО для GPU NVIDIA | |
Все видеокарты | NVIDIA GeForce Game Ready Driver 430.86 |
Давние читатели 3DNews наверняка помнят, что в Quake II есть встроенный бенчмарк, для которого нужно активировать режим timedemo в консоли и запустить одну из двух встроенных «демок». Старая методика безотказно работает и в 1997, и в 2019 году. Но достоинство timedemo не только в удобстве и привычках. Это единственный способ протестировать современные GPU в Quake II RTX под API OpenGL — без трассировки лучей, новых эффектов и текстур — для того, чтобы провести базовую линию производительности. В игре установлено ограничение частоты кадров в секунду на уровне 1000 FPS, в которое упирается практически любая из современных мощных видеокарт, а классическая методика timedemo позволяет от него избавиться. Единственное, чего не хватает встроенному бенчмарку, — это вывода показателя минимального FPS. Впрочем, фреймрейт в Quake II RTX на диво стабилен по сравнению с тем, что происходит в большинстве растеризованных и «гибридных» игр, и резких просадок частоты смены кадров здесь не наблюдается.