FSR 2.0

Обзор качества и производительности AMD FSR 2.0 — убийца DLSS

AMD FidelityFX Super Resolution 2.0 (FSR 2.0) доступная с 12 мая, с выходом последней версией «Deathloop». Анонсированная ранее ещё этой весной версия FSR 2.0 представляет собой крупное обновление системы повышения производительности AMD, конкурирующей с NVIDIA DLSS, позволяющая повысить частоту кадров при минимальной потере качества изображения. И FSR, и DLSS работают по принципу: заставить игру отображать всё, кроме HUD и post-FX, с более низким разрешением, чем способен дисплей, и масштабировать его с использованием сложных алгоритмов, благодаря которым вывод выглядит так, как если бы он отображался в исходном формате. AMD и NVIDIA идут разными путями к достижению этой цели.

title

В этом обзоре сравниваются FSR 2.0 и его различные уровни производительности с качеством изображения FSR 1.0 и NVIDIA DLSS/DLAA.

Резюме FSR 1.0

Начнём с краткого урока истории. Первая версия AMD FidelityFX Super Resolution, также известная как «FSR 1.0» (обзор тут), выпущенная примерно год назад, учитывает только текущее отображаемое изображение и масштабирует его с помощью алгоритма Ланцоша [Lanczos]. Несмотря на то, что это относительно простой подход, результаты были поразительными, особенно с учётом ограниченной сложности алгоритма. Работа только с одним кадром означает, что у FSR 1.0 была только ограниченная информация для работы — это был самый сильный аргумент NVIDIA в пользу DLSS. DLSS, с другой стороны, берёт последовательность изображений, т. е. он знает недавнюю историю, что даёт ему дополнительную информацию, которую он объединяет в один выходной кадр, что делает его больше, чем средство масштабирования. Недостатком таких временных алгоритмов является то, что сцена в видеоигре не статична, а постоянно меняется, что часто может приводить к артефактам и ореолам, но об этом позже.

FSR 2.0

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

Под капотом FSR 2.0 по-прежнему используется алгоритм Ланцоша для масштабирования изображения с низким разрешением до конечного размера рендеринга. Вместо того, чтобы брать в качестве входных данных только текущий кадр, данные из нескольких кадров объединяются в один буфер, который затем масштабируется с помощью Lanczos. Кадры, которые разработчики игр передают в FSR, должны быть слегка дрожащими, что означает, что камера перемещается на крошечную величину субпикселя, чтобы получить дополнительную информацию для каждого кадра. Затем FSR присваивает каждому пикселю оценку «важности», которая учитывает не только возраст этой информации, но и расстояние до целевого пикселя.

buffers

FSR 2.0 находится в том же месте конвейера рендеринга игры, что и FSR 1.0. Он использует 3D-сцену («цветовой буфер»), визуализируемую игрой с более низким разрешением, как и FSR 1.0. Что нового, так это то, что разработчики игр теперь также передают в алгоритм векторы движения и информацию о глубине, как и в DLSS 2.0.

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

Артефакты призраки

disocclusion

Чтобы решить проблему ореолов, AMD использует информацию из буфера глубины для расчета списка пикселей, которые сместились таким образом, что они показывают другой объект, находящийся дальше. Представьте себе красную машину, едущую по зимнему пейзажу. Когда машина движется по экрану, некоторые красные пиксели становятся белыми, открывая снег, от которого машина уехала, что называется «раскрытием», возможно, «раскрыть» или «показать» — более подходящее слово для описания того, что происходит. Если использовать временную информацию из предыдущих кадров наивно, то несколько предыдущих положений автомобиля станут частью текущего изображения: вы увидите красную полосу, тянущуюся за автомобилем — это ореолы, которых все боятся. Для этих обнаруженных пикселей не существует информации о предыдущей истории, поэтому AMD отбрасывает большую часть истории для них. Почему «большая часть» истории, а не вся? Они утверждают, что это делает дисокклюзию более плавной, хотя и создает очень незначительные незаметные ореолы. Они также используют некоторое дополнительное размытие вокруг этого пикселя, чтобы быстро получить свежую информацию от окружающих пикселей.

Тонкие функции

thin-features

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

Чтобы исправить это, AMD обнаруживает такие тонкие «гребни пикселей» и блокирует их, чтобы они стали более заметными и выглядели стабильными. Конечно, эти блокировки должны быть освобождены, когда сцена перемещается, а также когда алгоритм отключения обнаруживает, что что-то ещё стало видимым в этом месте.

Масштабирование динамического разрешения

dynamic-resolution-scaling

AMD уделила большое внимание способности FSR 2.0 поддерживать масштабирование с динамическим разрешением. DRS — это когда можно подавать в алгоритм несколько входных изображений с разным разрешением, и выходные данные все еще могут быть построены, не отбрасывая предыдущую информацию, которая была записана с другим разрешением. Это позволяет корректировать разрешение в реальном времени. Например, когда происходит взрыв, частота кадров на мгновение падает, а объекты взрываются, что часто можно воспринимать как лаг. При динамическом разрешении эти кадры могут отображаться в более низком разрешении, что приводит к более плавному воспроизведению благодаря более высокому FPS, а когда всё утихнет, игра может снова автоматически увеличить разрешение рендеринга. Другим приложением может быть рендеринг с более низким разрешением, когда игрок движется, чтобы всё выглядело плавно, и увеличение разрешения, когда игрок стоит на месте и у него есть время, чтобы рассмотреть изображение поближе.

Чтобы решить эту проблему, алгоритм FSR 2.0 сохраняет информацию, используемую в последующих кадрах, с исходным разрешением, которое остается постоянным даже при масштабировании разрешения.

Заточка

sharpening

Как и FSR 1.0, FSR 2.0 предлагает дополнительный проход для повышения резкости. В отличие от FSR 1.0, повышение резкости можно включать, отключать и регулировать его силу независимо от фактического режима FSR. Алгоритм представляет собой тот же метод надежной контрастной адаптивной резкости (RCAS), что и для FSR 1.0.

Режимы

settings

Как и в FSR 1.0, существует множество «режимов», которые можно выбрать в настройках поддерживаемой игры, изменяющие уровни качества, регулируя разрешение, в котором игра фактически отображается. Для того, чтобы обменивать качество на производительность на каждом этапе. В Deathloop доступны следующие режимы: «Качество», «Сбалансированный» и «Производительность».

Если не знаете, какой режим выбрать, используйте опцию «Адаптивное разрешение», которая представляет собой динамическое масштабирование разрешения, о котором только что говорили. Здесь игровой движок динамически регулирует разрешение рендеринга в зависимости от сложности 3D-сцены в пользу целевой частоты кадров. Здесь также можно ограничить режим адаптивного разрешения, чтобы оно не опускалось ниже 50%, 75% или 85% разрешения экрана, поэтому качество изображения не сильно пострадает.

scaling

Вот список различных режимов и их коэффициенты масштабирования. Режим «Сверхпроизводительность» недоступен в Deathloop (по крайней мере, в настоящее время).

ИИ не требуется

Подобно FSR 1.0, новый FSR 2.0 не использует машинное обучение ИИ, поэтому ему не нужны какие-либо механизмы ускорения ИИ на GPU, в отличие от DLSS, для которого [по крайней мере, официально] требуются графические процессоры с тензорными ядрами (GeForce RTX- только). Это означает, что FSR 2.0 будет работать на графических процессорах NVIDIA GeForce, и, более того, AMD даже делает его открытым исходным кодом на GPU Open, поэтому любой разработчик игр или студент может использовать его по лицензии MIT, которая позволяет модифицировать алгоритм. Доброжелательность AMD рассчитана на то, что она хочет сделать с DLSS то же, что FreeSync сделала с G-SYNC (превзошла по продажам G-SYNC из-за безплатного характера и простоты дизайна). Просто чтобы уточнить, в данном случае DLSS является безплатным, как и FSR, но это не открытый исходный код, и только NVIDIA может вносить изменения и знает, как работают алгоритмы.

Есть ещё некоторые минимальные рекомендации, так что пока не спеите вытаскивать свой GeForce Fermi. Для 4K (т.е. масштабирования до 4K) понадобится как минимум Radeon RX 5700 или GeForce RTX 2070; для 1440p рекомендуется использовать как минимум RX 5600 или GTX 1080, а для 1080p рекомендуется как минимум RX 590 или GTX 1070. Сама технология поддерживает видеокарты вплоть до RX 500 серии «Polaris».

Заключение

AMD добилась немыслимого — новый FidelityFX Super Resolution FSR 2.0 выглядит потрясающе, так же хорошо, как DLSS 2.0, на самом деле DLSS 2.3 (в Deathloop). Иногда даже немного лучше, иногда немного хуже, но в целом это огромная победа для AMD. Взгляните на сравнительные изображения — при сравнении FSR 1.0 с FSR 2.0 наблюдается огромное улучшение. Сравнение с «Native» или «Native+TAA» также всегда выглядит хуже, чем FSR 2.0, что несколько ожидаемо. При сравнении «Качества DLSS» с «Качеством FSR 2.0» возможны незначительные различия, но для каждого случая, однако невозможно объявить один результат лучше другого; это в значительной степени просто личные предпочтения или даже не это.

На нижнем конце спектра всё выглядит немного по-другому, сравнивая «Производительность DLSS» с «Производительностью FSR 2.0». DLSS здесь немного лучше, особенно когда речь идет о текстурированных поверхностях. Тонкая геометрия также выглядит немного более детализированной с DLSS, но в целом это очень близкий результат, особенно учитывая, что у NVIDIA было много времени на тонкую настройку DLSS, в то время как FSR 2.0 находится на первой итерации. Если активно искать проблемы с рендерингом, можно найти их в обеих реализациях масштабирования, но можно радостно сообщить, что ореолы, хотя и слегка заметные, не являются серьезной проблемой в FSR 2.0. Единственный заслуживающий внимания случай — это когда геометрия тонкой линии, такая как забор, скрывается за другой тонкой геометрией, такой как растительность. DLSS в целом справляется с появлением ореолов немного лучше, хотя визуальные артефакты в DLSS немного больше отвлекают, чем в FSR 2.0.

Также есть сравнения с DLAA от NVIDIA (deep-learning anti-aliasing), который рендерит с собственным разрешением и использует DLSS только для сглаживания. Это в основном собственное качество с улучшениями. В настоящее время у FSR пока нет аналога, но есть уверенность, что если спрос будет достаточно высоким, они добавят эту возможность. С технической точки зрения, добавить что-то поверх FSR 2.0 не так уж и сложно. Хотя стоит ли повышение производительности рендеринга с собственным разрешением хотя бы крошечного улучшения качества изображения. Может быть, для тех однопользовательских игр, которые в любом случае работают со скоростью более 200 fps, где требуется абсолютное лучшее качество изображения.

С FSR 1.0 AMD впервые добавила фильтр повышения резкости в конвейер масштабирования. Хотя это было возможно и с помощью NVIDIA sharpening через их панель управления, она не была так хорошо интегрирована. С тех пор NVIDIA добавила пропуск повышения резкости и в DLSS 2.0, но эта опция недоступна в Deathloop. В то время как заточка на FSR 1.0 была привязана исключительно к предустановке «Ultra Quality», она была отделена от FSR 2.0 и теперь является отдельной опцией с детальным контролем степени применяемой заточки. Снова надеемся, что всем разработчикам настоятельно рекомендуется предоставить эти настройки конечному пользователю, потому что выбираемый диапазон плюс «Выкл.» является обязательным для любого фильтра повышения резкости из-за личных предпочтений. Именно поэтому в сравнении разделил изображения «Качество FSR 2.0» и «Качество FSR 2.0» на «Резкость» — многие люди находят резкие изображения очень отвлекающими и предпочитают немного более плавный вид.

Ещё одним новшеством является то, что FSR 2.0 поддерживает динамическое масштабирование разрешения, которое работает очень хорошо. Получается множество вариантов для игры, включая установку целевого значения FPS и минимального качества, а алгоритмы позаботятся обо всем остальном. То, как игра переключается между разрешениями, настолько плавно, что этого практически невозможно заметить — попытка безусловно была.

С точки зрения производительности FSR 2.0 также заслуживает похвалы. Хотя он немного более требователен, чем FSR 1.0, что неудивительно, учитывая дополнительную логику, он по-прежнему очень быстр и практически идентичен DLSS 2.0 даже на оборудовании NVIDIA, которое способно переложить многие операции масштабирования DLSS на тензорные ядра. Без сомнения, на оборудовании AMD будут дополнительные оптимизации, но тогда не сможем сравнить производительность с DLSS, потому что это эксклюзивная технология NVIDIA. С другой стороны, можно использовать FSR даже на более старом оборудовании NVIDIA, которое не поддерживает DLSS (Pascal или даже Turing 16-серии). Здесь действительно должно поаплодировать AMD за демократизацию масштабирования без дополнительных требований к оборудованию. Всё, что сейчас нужно, — это широкая поддержка разработчиков игр.

Скорее всего, что поддержка разработчиков станет самой большой проблемой для AMD. В то время как реализация FSR 1.0 тривиальна — это, по сути, дополнительный проход шейдера — FSR 2.0 имеет более серьезные требования, которые в основном идентичны DLSS 2.0. Для разработчиков, которые уже поддерживают DLSS 2.0, добавление поддержки FSR 2.0 будет несложным, AMD говорит о днях. Векторы движения здесь являются самой большой проблемой. Как разработчик, вы должны убедиться, что учитывается каждый перемещаемый объект, иначе возникнут проблемы с рендерингом. Это всё ещё происходит с DLSS сегодня; например, возле дверей, лифтов, вентиляторов и других анимированных объектов, 100% вина разработчика. Однако со временем, когда компании будут создавать свои активы с учётом увеличения масштаба, это перестанет быть проблемой. Ещё одним препятствием для AMD будет то, что NVIDIA имеет глубокие карманы и, безусловно, способна предоставить различные средства «поддержки» разработчикам игр, использующим DLSS. Конечно, это работает в обоих направлениях, как на пример, когда FreeSync обогнал G-SYNC, и стратегия AMD по партнёрству с разработчиками игр для оптимизации эффектов трассировки лучей, похоже, работает нормально. В идеальном мире разработчики игр добавили бы поддержку как DLSS, так и FSR, что позволило бы обеим компаниям конкурировать и не прекращать внедрять инновации — кто знает, к каким потрясающим улучшениям это приведет.

инновация

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.