Что такое XeSS — и как устроен этот апскейлер от компании Intel
Пока ещё непопулярное, но очень эффективное решение.
Иллюстрация: Катя Павловская для Skillbox Media
Искусственное увеличение разрешения в играх ассоциируется у большинства игроков с DLSS и FSR. Такие технологии называются апскейлерами. Они быстро завоевали рынок и стали стандартом почти для всех современных игр. Если человек хочет получить максимальное качество, то при возможности выбирает DLSS. Если же видеокарта не поддерживает эту технологию, то можно включить FSR, которая с годами тоже научилась качественно обрабатывать изображение.
А вот на апскейлер XeSS от Intel пользователи куда реже обращают внимание. Зачем в настройках игр появилась третья непонятная аббревиатура, когда на рынке уже есть хорошие решения для любых ПК? Но не следует сбрасывать XeSS со счетов. Благодаря уникальному алгоритму обработки кадра XeSS стремится совместить качество DLSS с доступностью FSR.
Рассказываем, как устроен апскейлер от Intel.
Содержание
Апскейлинг и сглаживание
Апскейлинг и сглаживание фундаментально выполняют одну задачу — найти дополнительную информацию в кадре для улучшения картинки. Мы подробно рассказывали о взаимосвязи двух процессов в тексте о DLSS. Для полного понимания рекомендуем ознакомиться с ним. Здесь же вкратце опишем основной принцип.
Апскейлинг и сглаживание в играх фактически выполняют одну задачу — добавить в кадр дополнительные семплы. Разница лишь в масштабах. Сглаживание зачастую работает лишь с границами объектов и помогает избавиться от эффекта алиасинга («лесенок» по краям объектов), в то время как апскейлинг увеличивает разрешение всей сцены. Поэтому неудивительно, что алгоритмы апскейлеров и технологии сглаживания используют похожие техники.
Самый простой способ найти новые семплы — заставить видеокарту обрабатывать изображение детальнее. Это качественный и честный способ, который иногда используется для сглаживания. Например, MSAA точечно увеличивает количество семплов для краёв геометрии, чтобы определить, как лучше всего избавиться от «лесенок».
Для апскейлинга же это не подходит, ведь системе нужно увеличить разрешение всего изображения, а не отдельных кусков. Исходную задачу — сократить нагрузку на видеокарту — так не решить.
Избавиться от нагрузки на видеокарту можно при помощи фильтров, которые автоматически обрабатывают изображения вне зависимости от их наполнения. По такому принципу работает постпроцессинговое сглаживание. Например, FXAA заполняет все контрастные участки кадра пикселями промежуточного цвета. Это эффективно, но результат получается очень мыльным.
Похожие алгоритмы уже можно использовать для простого апскейлинга. Например, первая версия FSR была набором фильтров, которые заполняли пиксели увеличенного кадра промежуточными цветами. Такие алгоритмы корректнее называть не апскейлингом, а интерполяцией, ведь они стараются достовернее заполнить пробелы, но принципиально не могут заполнить кадр качественно новой информацией.
Соответственно, первая версия FSR и её аналоги не могут сделать картинку существенно лучше.
Темпоральный апскейлинг
Долгое время разработчикам приходилось выбирать между производительностью и качеством. Но в начале 2010-х появился хитрый способ получить честные новые семплы без влияния на ресурсы видеокарты: недостающую информацию можно взять из предыдущего кадра игры.
Идея в том, что два соседних изображения игры, как правило, почти не отличаются друг от друга. Если сместить новый кадр на расстояние меньше пикселя, можно получить нужную информацию о границах геометрии. Если совместить актуальную картинку с предыдущей, то получится изображение с достаточным количеством семплов.
Впрочем, у технологии темпорального смещения есть серьёзный недостаток: необходимость учитывать изменения внутри кадра. В динамичных играх вроде гонок или шутеров даже за долю секунды некоторые объекты успевают значительно переместиться.
В таких ситуациях грубое наложение кадров приводит к графическим артефактам. Самый распространённый — это гостинг, полупрозрачный шлейф, движущийся за объектом. Чтобы избавиться от таких проблем, разработчики используют эвристики — алгоритмы, которые не гарантируют успеха, но, как правило, удовлетворительно чистят картинку.
Алгоритм темпорального увеличения семплов — оптимальный вариант и для апскейлинга. Он позволяет почти «бесплатно» получить настоящую недостающую информацию для увеличения разрешения. Однако проблема графических артефактов в этом случае встаёт ещё острее.
Для апскейлинга движку нужно совместить большое количество информации. Нередко видеокарта генерирует лишь четверть актуальных пикселей кадра. Остальное алгоритмы берут из предыдущего кадра. Если делать это в лоб, обычным совмещением изображений, картинка получается очень грязной.
Технологии от NVIDIA и AMD решают эту проблему по-разному. Например, FSR второй версии и выше получает много информации от игрового движка — векторы движения и карты глубины изображения. Они нужны, чтобы при помощи различных алгоритмов корректнее наложить кадры друг на друга и компенсировать движение отдельных объектов.
DLSS тоже использует эту информацию, но вместо ручной обработки алгоритмами использует нейросеть, которая доводит кадр до наилучшего вида. По заверениям NVIDIA, столь сложной технологии необходимы специальные вычислительные ядра, которые есть в относительно новых видеокартах RTX. Без них не получалось бы прогонять нейросеть для каждого отдельного кадра и получать стабильный прирост кадровой частоты.
XeSS — две технологии в одной
Инженеры Intel заметили преимущества глубокого обучения для апскейлинга, поэтому пошли по стопам NVIDIA. Видеокарты Intel Arc тоже имеют особые вычислительные блоки, XMX, которые ускоряют тензорные вычисления для нейросетей. Впрочем, компания поставила перед собой ещё одну, более амбициозную задачу — совместить нейросетевой апскейлинг с доступностью для всех видеокарт. Но как этого добиться без специальных вычислительных ядер, ориентированных на решение нейросетей?
XeSS структурно почти не отличается от DLSS. Нейросеть от Intel обучается на десятках тысяч различных изображений из игр. На входе алгоритму даётся кадр в плохом качестве, векторы движений, буфер глубины и информация предыдущего кадра. На выходе же нейросеть сравнивает свой результат с эталонным изображением в высоком разрешении. Раз за разом нейросеть подстраивает значения своих скрытых слоёв, чтобы результат при подсчётах был максимально близок к качественной картинке. Так происходит до тех пор, пока значения весов не позволят добиваться хорошего результата с первого раза.
Как и в случае с другими большими нейросетями, даже создатели не могут точно знать всех значений итоговой сети.
В первую очередь Intel использует специальный набор инструкций под названием DP4a, которые доступны во всех современных видеочипах — как дискретных, так и встроенных в процессор. DP4a позволяет уместить в одно вычисление не два 32-битных числа, как это происходит при обычных операциях, а восемь 8-битных. Эта техника появилась в индустрии около десяти лет назад специально для машинного обучения, но в апскейлерах её до Intel никто не использовал. Такая инструкция позволяет многократно ускорить вычисления нейросети, но этим всё не ограничивается.
Как и DLSS, XeSS прогоняет через нейросеть каждый кадр, поэтому у видеокарты есть незначительный запас в несколько миллисекунд. Если выйти за его пределы, то на рендер каждого кадра будет уходить слишком много времени — прироста производительности не будет. Поэтому при использовании DP4a нейросеть у XeSS относительно неглубокая.
А вот владельцы видеокарт Arc от Intel при активации XeSS получают более совершенную версию алгоритма. Как мы отметили выше, видеочипы компании оснащены специальными ядрами XMX, которые выполняют ту же задачу, что и тензорные ядра в картах RTX, — ускоряют матричные вычисления. Поэтому они могут справиться и с более комплексными нейросетями за тот же промежуток времени, что и обычные чипы без ядер с нейросетями для DP4a. Если система видит совместимую видеокарту, то использует полноценную большую нейросеть. Это позволяет обработать изображение лучше.
Проще говоря, XeSS предлагает не одну, а сразу две разные нейросети для разных видеочипов.
Качество XeSS
Поначалу XeSS страдала от тех же проблем, что и похожие технологии на релизе. В большинстве игр можно было заметить гостинг и мерцание маленькой тонкой геометрии. Однако с каждой итерацией XeSS становилась всё красивее. Сегодня технология реконструирует кадры удивительно хорошо, и по своему качеству куда ближе к DLSS, чем к FSR.
Серьёзная проблема у XeSS одна: на видеокартах AMD и NVIDIA технология работает не очень шустро. Из-за необходимости использовать нейросеть апскейлер от Intel выделяет больше временного бюджета на обработку кадра. В некоторых играх разница между разными технологиями весьма ощутима. Например, Call of Duty: Modern Warfare 2 при использовании видеокарты AMD Radeon RX 7800 XT апскейлер XeSS с пресетом «качество» в среднем показывает 93 кадра в секунду. Тем временем FSR с идентичными настройками демонстрирует уже 106 кадров в секунду.
* * *
XeSS очень не повезло выйти на рынок сильно позже своих конкуренток. DLSS и FSR к моменту релиза технологии от Intel уже прочно закрепились в умах геймеров как качественные надёжные решения, поэтому даже качество XeSS не привлекло к ней значительного внимания.
Сложно сказать, изменится ли ситуация в будущем. С одной стороны, регулярная поддержка и маркетинг могут постепенно заинтересовывать пользователей. С другой — уже сейчас заметна проблема перенасыщения конкурирующими технологиями. Среднестатистический игрок не понимает нюансов работы апскейлеров, поэтому видит в аббревиатурах DLSS, FSR и XeSS лишь обозначения брендов.
Примечательно, что с этим согласен и Том Петерсен, один из ведущих инженеров Intel. По его мнению, разобраться с путаницей пользователям поможет универсальный механизм, который заранее проанализирует систему до запуска игры и предложит оптимальный для конкретного железа вариант апскейлинга.