Обзор AMD FSR 2.0 — убийца NVIDIA DLSS или «выстрел в молоко»?

Технологии умной реконструкции изображения сейчас в моде. NVIDIA уже давно радует нас DLSS, Intel на подходе со своим аналогом XeSS, но вот FSR от AMD выглядела достаточно грустно. Технически это был обычный апскейл с умным фильтром контраста, поэтому его можно было встроить в любую игру. Но теперь AMD выпустила FSR 2.0 — она делает все, что умеет DLSS, но на любой современной видеокарте, а не только на железе с тензорными ядрами. Вышло ли у AMD догнать оппонентов?

Как работает FSR 2.0?

В первую очередь надо понять, что FSR 1.0 и 2.0 — это две совершенно разные технологии. FSR 1.0 берет изображение в низком разрешении, масштабирует и накладывает CAS, контрастно-адаптированное увеличение резкости. То есть обводит края объектов, чтобы они выглядели более четкими и создавали иллюзию, что изображение более детализированное. Однако увеличение резкости не создает новые детали. Если их не было, их не будет. При этом плюсы такого подхода очевидны — можно вставить в любую игру, в видео, во что угодно. FSR 2.0 же ближе к DLSS.

В теории, FSR 2.0 работает достаточно просто: игра рендерит кадры в низком разрешении и передают информацию о цвете (финальные пиксели, которые мы видим на экране), информацию о глубине и информацию куда и с какой скоростью объекты движутся по кадру. Дальше происходит магия, и на выходе получается изображение в финальном разрешении.

На деле все чуть сложнее. Движок игры должен уметь рендерить изображения с джиттером — смещать все изображение на 1 пиксель каждый кадр. Проще всего описать джиттер на примере фотоаппаратов Sony, у которых есть очень похожая функция Pixel Shift.

В фотоаппаратах Sony (и некоторых других фирм вроде Hasselblad, Panasonic, Fujifilm и т.д.) Pixel Shift позволяет получать изображение гораздо более высокого разрешения, чем сенсор камеры. Он использует моторы стабилизатора, чтобы сдвинуть весь сенсор на один пиксель 4 раза и получить очень детализированную фотографию (до 240 мегапикселей, аналогично 19К). Съемка 4 фотографий подряд занимает время, поэтому метод подходит только для абсолютно статичных кадров со штатива. Именно эта идея лежит в основе джиттеринга пикселей, который необходим для работы FSR 2.0, DLSS 2.X и грядущего XeSS. Но кадры в играх неизбежно двигаются, поэтому алгоритмы должны знать как изображение двигалось в предыдущих кадрах, для чего используется временной буфер (информация о предыдущих кадрах) и векторы движения.

Векторы движения — это информация о том, куда и с какой скоростью движутся объекты в кадре относительно камеры/экрана. В первую очередь они позволяют создать постэффекты вроде объектного размытия в движении (per-object motion blur), которые придают анимации ощущение скорости и плавности. Но вместе с информацией финального изображения и буфером глубины векторы позволяют делать более корректные постэффекты. В том числе, позволяют угадывать, где объекты были и будут, что очень важно для временной реконструкции изображения.

Буфер глубины — это черно-белая версия кадра, на которой движок игры отмечает близкие объекты более темными оттенками, а те, что дальше — более светлыми. Эта информация используется для улучшения производительности (можно убрать из памяти то, что игрок не видит), пост эффектов вроде глубины резкости (размытие кадра объективом камеры) и затемнения фонового освещения (затемнение углов, куда свет почти не попадает, чтобы изображение выглядело более реалистичным) и для множества других эффектов. Буфер глубины используется играми уже больше 20 лет, но современные версии более стандартизированы и зачастую имеют достаточно высокую разрядность (плавность градаций). Именно поэтому шейдеры таких программ как ReShade иногда плохо работают в старых играх, но совместимы почти со всеми современными.

По сути, это тот же набор требований, что и у DLSS 2.x, что немудрено. Если FSR 1.0 — это обычный пост-фильтр, который берет изображение в низком разрешении, масштабирует и накладывает усиление резкости (по сути, обводку краев), поэтому вставить его в любую игру достаточно просто, то FSR 2.0 почти идентична по трудозатратам и принципу действия современным версиям DLSS.

Таблица AMD, которая показывает средний срок внедрения FSR 2.0 в игру. Если она уже поддерживает DLSS, то все прекрасно, игра почти готова. Но в противном случае движок игры придется подпилить напильником, пока он не начнет поддерживать:

  • Векторы движения (желательно, для всех объектов, подробнее ниже)
  • Раздельное внутреннее разрешение рендера и выходное разрешение на экране
  • Джиттер пикселей
  • Временное сглаживание (TAA) и поддержка информации о предыдущих кадрах

По сути, основная разница между FSR 2.0 и DLSS 2.X в том, что DLSS использует машинное обучение и тензорные ядра для аппаратного ускорения, чтобы правильнее угадывать как должно выглядеть финальное разрешение, если бы оно было в нативном разрешении, а FSR 2.0 использует обычные вычислительные мощности любой более-менее современной видеокарты.

И это приводит нас к главному вопросу: а есть ли разница?

Примеры

На данный момент FSR 2.0 поддерживается только в одной игре — Deathloop от Arkane Studios и Bethesda Softworks. Более того, до обновления игра уже поддерживала просто временное сглаживание TAA, которое использует информацию из предыдущих кадров, чтобы смягчить острые «зубчики» алиасинга, FSR 1.0 и DLSS 2.3.

Первые впечатление: чертовы безумцы из AMD сделали это!

На общих планах FSR 2.0 разворачивается на полную: детализация, конечно, ощутимо хуже, чем у DLSS, зато нет шиммеринга бликов, которым страдает TAA в Deathloop и FSR 1.0, которая вынуждена уповать на встроенную имплементацию сглаживания. FSR 2.0 Performance даже на статике все равно не выглядит как настоящее нативное 4К, как DLSS 2.3 Performance, но очень близко.

Вместе с FSR идет усиление резкости. В Deathloop его настроить нельзя, и оно чрезмерное — ковер на скриншоте (а, также, например, кожа) выглядит как потрескавшаяся краска. У DLSS и TAA в этом плане все нормально, и, что интересно, у них можно прочитать циферблат устройства, а с FSR обеих версий — нет.

Одно из самых слабых мест FSR 2.0 — лазеры и прочие движущиеся детали, толщиной в пиксель или меньше вроде волос. TAA справляется без проблем, DLSS восстанавливает лучи из 1080p в 4К (4x пикселей) и лучи выглядят практически идентично, а вот FSR 2.0 идет с очень сильным алиасингом, который заметен даже больше, чем у FSR 1.0. Тут видна сила алгоритмов машинного обучения, которые могут догадаться, что луч должен выглядеть как луч, а не лесенка.

Специалисты Digital Foundry обнаружили довольно неприятные артефакты FSR 2.0 в движении. Мы тоже их замечали, но гораздо меньше, чем DF, а зачастую — вообще нет.

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

Мы замечали эти проблемы в других местах, вроде фейерверков. FSR 2.0 не может восстановить прогалы в изображении, когда у нее нет или слишком мало информации, тогда как DLSS крайне успешно использует для этого машинное обучение. Это те же самые артефакты, от которых страдают другие подобные алгоритмы вроде «шахматки» (checkerboard rendering) и без алгоритма «угадывания» деталей до конца их убрать пока нельзя.

Производительность

К сожалению, у нас под рукой не оказалось видеокарты AMD, чтобы честно оценить производительность на фирменном железе, поэтому мы приведем примеры из расследования Digital Foundry.

Любой алгоритм реконструкции занимает какое-то время. Реконструкция из 1080p в 4К всегда будет медленнее, чем просто игра, работающая в 1080p. FSR 2.0 использует только базовые вычислительные инструкции видеокарт, что позволяет алгоритму работать на любом современном железе, но медленнее, чем DLSS 2.3. Это ожидаемо. А вот, что FSR работает заметно на современных видеокартах NVIDIA, чем на современных картах AMD — это уже удивительно. Одна миллисекунда может быть разницей между 144 и 120 FPS. Неприятно, но жить с этим можно.

На другом конце спектра, самых старых видеокартах, которые поддерживают FSR 2.0, ситуация хуже. Для 1080p и 1440p FSR 2.0 использовать можно, а вот реконструкцию в 4К уже лучше оставить более мощным и новым устройствам, потому что если добавить 4-6 мс к 80 FPS (12 мс на кадр для стабильных 60 FPS), то фреймрейт превращается в 55-60, что уже довольно некомфортно, если нет монитора с G-Sync/Freesync.

Не исключено, что со временем производительность FSR вырастет, особенно на картах AMD, но уже сейчас ей можно пользоваться. Наилучшие результаты достигаются на больших и дорогих видеокартах, но и старенькие GTX 1060 и RX 580 задышат новой жизнью в играх с FSR 2.0.

FSR 2.0 все-таки похуже, чем последние версии DLSS, но незначительно — на 85% со своей задачей он справляется. В статике кадры выглядят почти идеально, но движение — это сильная сторона DLSS, алгоритм которой продолжают улучшать, уменьшая гостинг — «призраки», силуэты объекта из предыдущих кадров там, где его уже давно нет. Гостинг — это в целом большая проблема для любых временных алгоритмов, включая DLSS и FSR 2.0, потому что если у чего-то на экране нет правильных векторов движения (часто бывает с частицами), то алгоритму приходится угадывать, где он есть, а где его уже нет. Машинное обучение в DLSS с этим иногда справляется, а FSR 2.0 — нет, потому что там этих хитрых приблуд нет.

Однако само появление FSR 2.0 чрезвычайно важно для ПК-гейминга. NVIDIA DLSS и Intel XeSS — это отличные технологии, но они работают только для тех, у кого есть новые видеокарты NVIDIA и Intel с блоками аппаратного ускорения алгоритмов машинного обучения (тензорными ядрами). Владельцы видеокарт AMD, а также старых и младших моделей NVIDIA и Intel остаются за бортом, хотя им-то как раз эти новшества нужны больше владельцев новых сияющих железок. FSR 2.0 демократичнее — для апскейла в 4К AMD рекомендует RX 5700 или RTX 2070, для 1440p — RX 5600 XT или GTX 1080, для 1080p — RX 590 или GTX 1070. То есть низший порог — железо шестилетней давности.

Поможет ли FSR 2.0 консольным играм? Каким-то — да, но на самом деле эта технология появилась не с пустого места. Мы уже писали статью об эволюции алгоритмов масштабирования изображения, и в них ничего нового нет. Практически у каждой крупной студии и популярного движка есть своя версия того, что делает FSR. Так, в Unreal Engine 5 есть Temporal Super Resolution, оптимизированный под PS5 и Xbox Series S|X. Если у разработчиков своего решения еще нет или их вариант хуже, то FSR 2.0 будет отличным вариантом и для консолей. Но в первую очередь это технология для ПК-игр.

Хочется надеятся, что все современные игры будут использовать хотя бы какой-то современный алгоритм масштабирования изображения — будь то FSR 2.0, TSS, DLSS 2.0 или XeSS — чтобы компьютерное железо нагружалось более рационально, а не рендерило гигантские разрешения просто «потому что можем». Универсальность FSR 2.0 значит, что технологию можно использовать на любом железе, а схожесть с аналогами — что ее можно легко дополнить DLSS и XeSS, которые закрывают недостатки при помощи машинного обучения и кастомных тензорных ядер. Но даже сама по себе FSR 2.0 очень хорошо справляется с задачей.

Источник

Понравилась статья? Поделиться с друзьями:
Мир компьютерных игр