ТИПЫ СГЛАЖИВАНИЯ И ИХ ПРИНУДИТЕЛЬНОЕ ВКЛЮЧЕНИЕ В ИГРАХ

 

Любая 3D-игра состоит из тысяч и даже миллионов всевозможных цветных линий. Но из-за того, какими способами они появляются на экране, они часто могут выглядеть неровными и отвлекать от игрового процесса.

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

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

И поскольку пиксельная версия линии уже не является реальной, ее расположение рядом с другими фигурами создает множество визуальных странностей, которые мы и имеем в виду под термином «алиасинг».

Алиасинг возникает из того факта, что отрендеренное изображение должно каким-либо образом отображаться на экране. И независимо от того, сделан ли он из электронно-лучевой трубки (ЭЛТ), жидкокристаллического дисплея (ЖКД) или плазменной панели, этот экран создает изображение с помощью набора цветных элементов.

Разрешения 10 х 7 пикселей недостаточно для отображения этого треугольника без алиасинга
Разрешения 10 х 7 пикселей недостаточно для отображения этого треугольника без алиасинга

Некоторые сигналы меняются во времени, а не в пространстве, и в таком случае при выборке значений через заданные интервалы тоже образуется алиасинг. Например, преобразование аналоговой звуковой дорожки в цифровую включает в себя изменение уровня звука каждые несколько долей секунды: так, в случае аудио компакт-диска это происходит каждые 0,02 миллисекунды. Различия между дискретным и исходным сигналом создают временной алиасинг и обычно устраняются путем более быстрой выборки.

Но что, если сигнал представляет собой последовательность движений? В реальном мире кажется, что вещи вокруг нас движутся непрерывно — поэтому, когда мы преобразуем это в поток кадров, мы получаем алиасинг. В мире кино это приводит к странно выглядящему движению — например, когда колеса автомобиля как будто бы вращаются в обратном направлении. Также и в 3D-графике, когда частота кадров рендеринга недостаточно высока для полного представления движения объектов, это приводит к тому, что края выглядят размытыми или неровными, что еще больше усугубляется пространственным алиасингом.

Хотя методы, используемые для решения этих проблем, в совокупности известны как сглаживание (анти-алиасинг, сокращенно AA), в кино и 3D-играх они совершенно разные. Для последних по факту используется множество методов, имеющих самые разные названия. Но прежде, чем мы рассмотрим подробнее наиболее часто встречающиеся алгоритмы, давайте поговорим о разрешении и частоте кадров. Ведь если бы они всегда были сверхвысокими, то и не возникало бы никаких проблем.

Воспользуемся старым бенчмарком, таким как 3DMark03, чтобы сосредоточиться исключительно на пространственном алиасинге.

Приведенное выше изображение ( оригинал) из теста Wings of Fury было снято с разрешением 1280×720 пикселей. Четырнадцать лет назад, когда Radeon 9800 XT и GeForce FX 5900 Ultra были лучшими из доступных видеокарт, самые большие мониторы имели разрешение около 1600×1200 пикселей — так что разрешение, которое мы используем для тестов сейчас, можно было бы принять за среднее либо низкое (сродни сегодняшнему 1080p).

Беглый взгляд на крылья самолетов ясно указывает на проблему алиасинга, и особенно это заметно в движении. Большой контраст между цветом пикселей на крыле и фоном неба и облаков создает мерцание при движении самолета по небу. Виной всему относительно низкая частота дискретизации, а потому наиболее очевидным решением было бы ее увеличение. Давайте снова посмотрим ту же сцену в разрешении 4K, или 3840×2160 пикселей ( оригинал):

Края крыльев выглядят заметно сглаженными, но если немного увеличить масштаб, то можно увидеть, что алиасинг по-прежнему присутствует. Конечно, можно продолжить увеличивать разрешение до тех пор, пока визуально не останется никаких искажений, но за это придется заплатить производительностью.

Каждый пиксель требует обработки, если не указало иное: к нему нужно применить несколько текстур и обработать его многочисленными шейдерами для расчета окончательного цвета. Обычно это узкое место в большинстве игр, и общая частота кадров обратно пропорциональна разрешению. Если верить столь старому бенчмарку, как 3DMark03, переход с 1280х768 до 3840×2160 пикселей снижает среднюю частоту кадров с 1670 до 1274 кадров в секунду — то есть, увеличение количества обрабатываемых пикселей на 740% приводит к снижению производительности всего на 24%. Однако с новыми бенчмарками все выглядит несколько иначе. Это можно легко продемонстрировать, запустив последний 3DMark
в различных разрешениях. На графике ниже показана средняя частота кадров первого графического теста в бенчмарке Time Spy.

Переход от 720p к 4K означает увеличение разрешения на 800%, но частота кадров при этом падает на 81%. Хотя игры не обязаны соответствовать этой закономерности, современные AAA-тайтлы, скорее всего, покажут схожие результаты. Это говорит о том, что если мы хотим максимально уменьшить влияние алиасинга, нам понадобится метод получше, чем просто повышение разрешения — ведь чем ниже частота кадров, тем хуже временной алиасинг.

Содержание
  1. Избыточная выборка сглаживания, или суперсэмплинг (Supersampling anti-aliasing, SSAA)
  2. Множественная выборка сглаживания, или мультисэмплинг (Multisample anti-aliasing (MSAA)
  3. Быстрое приблизительное сглаживание (Fast approximate anti-aliasing, FXAA)
  4. Временное сглаживание (Temporal anti-aliasing, TAA)
  5. И это еще не все!
  6. Пример сглаживания
  7. Виды сглаживания
  8. Традиционные методы
  9. Избыточная выборка сглаживания — Super-Sampling Anti-Aliasing (SSAA)
  10. Множественная выборка сглаживания — Multi-Sample Anti-Aliasing (MSAA)
  11. Мультикадровое сглаживание — Multi-Frame Anti-Aliasing (MFAA)
  12. Сглаживание повышенного качества — Enhanced Quality Anti-Aliasing (EQAA)
  13. Выборка сглаживания с перекрытием — Coverage Sampling Anti-Aliasing (CSAA)
  14. Избыточное шахматное сглаживание — Quincunx Super Anti-Aliasing (QSAA)
  15. Избыточная выборка сглаживания с разряженной решёткой — Sparse Grid Super-Sampling Anti-Aliasing (SGSSAA)
  16. Сглаживание гибридной выборки — Hybrid-Sampling Anti-Aliasing (HSAA)
  17. Методы постобработки
  18. Быстрое приблизительное сглаживание — Fast Approximate Anti-Aliasing (FXAA)
  19. Морфологическое сглаживание — Morphological Anti-Aliasing (MLAA)
  20. Субпиксельное морфологическое сглаживание — Subpixel Morphological Anti-Aliasing (SMAA)
  21. Субпиксельное восстанавливаемое сглаживание — Subpixel Reconstruction Anti-Aliasing (SRAA)
  22. Консервативное морфологическое сглаживание — Conservative Morphological Anti-Aliasing (CMAA)
  23. Динамическое сверхвысокое разрешение — Dynamic Super Resolution (DSR)
  24. Временное сглаживание — Temporal Anti-Aliasing (TAA)
  25. Временное приблизительное сглаживание — Temporal approXimate Anti-Aliasing (TXAA)
  26. Временная избыточная выборка сглаживания — Temporal Super-Sampling Anti-Aliasing (TSSAA)
  27. Методы реконструкции
  28. Сглаживание гибридной реконструкции — Hybrid Reconstruction Anti-Aliasing (HRAA)
  29. Избыточная выборка при помощи глубокого обучения — Deep Learning Super-Sampling (DLSS)
  30. FidelityFX супер разрешение — FidelityFX Super Resolution (FSR)
  31. Сравнение качества сглаживания в разных сценах
  32. Выводы
  33. Что такое сглаживание и для чего нужно

Избыточная выборка сглаживания, или суперсэмплинг (Supersampling anti-aliasing, SSAA)

Это самый старый и самый простой метод сглаживания. Он включает в себя рендеринг сцены с более высоким разрешением, чем заданная настройка, а затем сэмплинг и смешивание результата до меньшего числа пикселей. Например, монитор может быть иметь разрешение 1920×1080 пикселей, а игру можно настроить для рендеринга с разрешением 3840×2160, после чего происходит масштабирование обратно до меньшего разрешения и вывод результата на экран.

Обычно в этом алгоритме используется метод ближайшего соседа, а математика смешивания является ни чем иным, как средним арифметическим сэмплов.

Конечно, возможности современных графических процессоров позволяют использовать и более сложные алгоритмы сэмплирования и смешивания. Но для начала посмотрим, как работает этот.

На изображении ниже показан классический 4x SSAA в действии. 4x указывает на смешение четырех сэмплов путем вычисления среднего арифметического значения цвета для вывода его на экран. Для этого разрешение увеличивается в 2 раза по обеим осям.

Обратите внимание на расположение сэмплов в примере выше. Поскольку сами пиксели имеют дискретную область, позиции сэмплов могут быть установлены в любом месте в пределах этой области.

Проблема с SSAA заключается в том, что все эти дополнительные пиксели необходимо обрабатывать, и, как мы видели в тестах 3DMark, увеличение разрешения может легко вызвать резкое падение частоты кадров.

Сейчас суперсэмплинг используется уже редко, хотя и нашел новое применение в качестве настроек в драйверах для видеокарт AMD и NVIDIA: в первых эта технология называется виртуальное суперразрешение (Virtual Super Resolution, VSR), во второй — динамическое суперразрешение (Dynamic Super Resolution, DSR). Их можно использовать для сглаживания в некоторых старых играх, в которых нет никакой встроенной системы, или просто для улучшения уже имеющегося изображения.

Множественная выборка сглаживания, или мультисэмплинг (Multisample anti-aliasing (MSAA)

Этот метод впервые появился в исследовательских лабораториях Silicon Graphics в начале 90-х годов. По сути, это тот же SSAA, но с выборочным применением только там, где это действительно необходимо. Ладно, пожалуй, это все-таки не просто SSAA, но такая формулировка должна помочь в понимании, как работает этот алгоритм.

Главное преимущество суперсэмплинга само по себе представляет проблему, поскольку при нем сглаживается все
: края примитивов, плоские текстурные поверхности, прозрачные многоугольники и многое другое. Учитывая, что фильтрация текстур уже заботится о том, что происходит внутри треугольников рендеринга, нам нужна система, которая работала бы только с краями, которые больше всего подвержены проблеме алиасинга.

Но как это сделать? Так уж вышло, что необходимая для этого информация у нас уже есть. Когда трехмерный мир вершин преобразуется в двухмерную плоскость растра, в пикселях, образующих различные примитивы в сцене, закладывается информация не только о цвете и текстурах, но и о глубине.

Эта информация может храниться в z-буфере (или буфере глубины), а затем использоваться для определения видимости краев. В приведенном выше примере все крайне просто: белый цвет обозначает фон, черный — примитив.

С возможностями современных графических процессоров мы можем создать версию черно-белой сетки с более высоким разрешением. В таком случае мы просто записываем глубину примитива в местах выборки:

Можно заметить, что большее число сэмплов дает нам более репрезентативную карту глубины.

А теперь перейдем к самому интересному. Отложив эту карту глубины, вернемся к кадру с исходным разрешением и запустим все наши пиксельные шейдеры для формирования конечного цвета. Затем вернемся к детализированному буферу глубины и для каждого пикселя, что находится в примитиве (т.е. для черных пикселей), выделим цвет шейдера на выходе. Очевидно, что это нужно где-то хранить, так что нам понадобится относительно небольшой буфер для каждой точки из выборки в пикселе. Затем, как и в SSAA, мы сэмплируем и смешиваем детализированный буфер до требуемого разрешения — и получаем фрейм со сглаживанием. Что касается производительности, то мы запускали пиксельные шейдеры только на относительно небольшом количестве точек, но при этом нам пришлось создать и сохранить пару буферов с высоким разрешением.

Таким образом, для мультисэмплинга необходимо большее количество VRAM и более высокая пропускная способность памяти (а также возможность быстрого чтения/записи в z-буферы), но зато он не требует большой мощности от шейдеров. Давайте для сравнения с SSAA воспользуемся старым примером кода AMD.

Код запускает простую сцену с базовыми текстурами и освещением, но большим количеством геометрии, так что алиасинг по краям видно особенно хорошо. Если приблизить изображение, то в верхнем левом углу можно увидеть следующую информацию: каждому кадру требуется в среднем 0,18 миллисекунды на рендеринг и всего 0,02 мс на смешивание для окончательного вывода. Цветовой буфер имеет размер 7,4 МБ, как и буфер глубины.

Также можно увеличить определенные области кадра, чтобы увидеть алиасинг во всех деталях. Напомним, что можно отрендерить все это с более высоким разрешением, но это увеличит время рендеринга. Если мы применим к сцене 4x SSAA, именно это и произойдет.

Обратите внимание, что на изображении выше время рендеринга увеличилось до 0,4 мс (то есть, на 122%), а время смешивания удвоилось. Кроме того, размер буферов цвета и глубины увеличился в 4 раза. Такова стоимость использования SSAA, и хотя современному графическому процессору не составит особой проблемы произвести такое сглаживание на столь простом примере, но современные 3D-игры — совсем другое дело.

Теперь взгляните на увеличенный фрагмент. Обратите внимание на гладкость линий. Да, осталось еще много «лесенок», но результат выглядит заметно лучше. Было бы это еще не так дорого.

Но теперь рассмотрим MSAA:

Здесь время рендеринга сцены почти вернулось к тому значению, каким оно было без применения сглаживания (что хорошо), хотя время вывода еще больше увеличилось. Общий объем памяти — где-то на полпути между отсутствием AA и 4x SSAA, отчего может показаться, что MSAA определенно лучший вариант, чем SSAA. Можно сказать, что даже уменьшение алиасинга на краях примитивов выглядит лучше, хотя это больше связано с выбором шаблона сэмплинга, а не с природой самого MSAA. Но если посмотреть на текстуру стены в увеличенной области, станет очевидным один недостаток MSAA.

Там, где SSAA улучшает все, MSAA влияет только на края геометрии, и хотя это не представляет большой проблемы для статических изображений, в движении разница будет куда более заметной. Другая проблема заключается в том, что алгоритм плохо работает с отложенным рендерингом, и, хотя есть способы обойти это, ни один из них не будет «бесплатным» с точки зрения.

Быстрое приблизительное сглаживание (Fast approximate anti-aliasing, FXAA)

В 2009 году Nvidia представила новый метод очистки неровных краев фигур в 3D-сценах. В отличие от SSAA и MSAA, реализация FXAA был разработана полностью при помощи шейдеров. С момента выпуска он претерпел не одно улучшение и сегодня активно используется в играх.

Алгоритм представляет собой проход постобработки — то есть, запускается после того, как большая часть рендеринга уже завершена, но до применения таких элементов, как HUD,  — и обычно имеет вид однопиксельного шейдера. Первая итерация алгоритма работает следующим образом: сначала мы выбираем буфер, содержащий изображение, которое мы хотим отобразить, и преобразуем значение sRGB в линейную оценку яркости этого пикселя (это мера того, сколько света проходит через заданную область в заданном направлении). Эта часть шейдера состоит всего из нескольких строк и даже может использовать зеленый канал для оценки уровня освещенности. Зачем это нужно? Что ж, следующий шаг в шейдере включает проверку относительного контраста окружающих пикселей по отношению к выбранному пикселю: если разница велика, то это место, скорее всего, окажется границей.

Последовательность FXAA: найти пиксели на границе, определить ее ориентацию, сдвинуть их, размыть конечное изображение
Последовательность FXAA: найти пиксели на границе, определить ее ориентацию, сдвинуть их, размыть конечное изображение

Отобранные пиксели проходят еще одну проверку по определению ориентации границы. После этого пара пикселей под углом 90° к границе, имеющая наибольшую разницу в яркости, участвует в сканировании по этой границе для поиска ее концов.

После идентификации всех краев на изображении позиции пикселей вдоль этих краев сдвигаются: вверх или вниз в случае горизонтальных линий и из стороны в сторону для вертикальных. Перемещаются они совсем ненамного, так что новое положение находится в пределах области исходного пикселя. Исходный буфер кадра дискретизируется с использованием уже новых местоположений: пиксели внутри примитивов по-прежнему останутся там, где они были раньше, но те, что определяли границы, поменяются, что поможет уменьшить влияние алиасинга.

FXAA имеет серьезные преимущества перед SSAA и MSAA. Во-первых, он представляет собой простой фрагмент кода, что под силу выполнить практически любому графическому процессору. Во-вторых, он сглаживает все края, а не только периметры фигур. Например, текстуры с прозрачностью, часто используемые для дыма, мусора и листвы, окажутся сглажены, чего не будет при MSAA.

Без AA (слева) и FXAA (справа) — обратите внимание, что деревья и элероны на крыле выглядят намного более гладкими
Без AA (слева) и FXAA (справа) — обратите внимание, что деревья и элероны на крыле выглядят намного более гладкими

Какие же минусы? При заполнении кадра высококонтрастными областями, такими как яркие пиксели на темном фоне, они будут смешаны независимо от того, было ли это нужно или нет.

Метод имеет меньшую точность, чем в SSAA или MSAA, ведь он не улавливает детали субпикселей и по сути просто является своеобразным фильтром, который размывает некоторые текстуры. Но принимая во внимание его дешевизну при относительной эффективности, нетрудно понять, почему FXAA все еще часто применяют 12 лет спустя, пусть и переработанный.

Существуют и другие полноэкранные алгоритмы обнаружения границ, аналогичные этому: морфологическое сглаживание
(MLAA), разработанное Intel, в свое время послужило вдохновением для создания FXAA; далее оно было доработано разработчиком игр Crytek и университетом Сарагосы в Испании и получило новое название Enhanced Sub-pixel MLAA
(SMAA). Самое лучшее во всех этих алгоритмах — что, в отличие от SSAA и MSAA, они могут постоянно обновляться и модифицироваться программистами, настраивающими их в соответствии с приложениями или играми, которые они создают.

Временное сглаживание (Temporal anti-aliasing, TAA)

До сих пор мы рассматривали только методы борьбы с визуальным воздействием пространственного алиасинга. Чтобы противостоять временному алиасингу, вызываемому тем, что 3D-игры генерируют дискретные выборки непрерывного движения, чаще всего используют следующий алгоритм.

Начинается рендеринг как обычно, но затем мы сохраняем значения цвета пикселей в блоке памяти, называемом буфером истории. После этого рендер переходит к следующему кадру в последовательности и обрабатывает его. Перед его отображением мы берем сэмплы из буфера истории, и результат смешивается с текущим кадром. Затем буфер истории обновляется с новым результатом, копируется для формирования окончательного изображения, а в конце отмечается как готовый для отображения на мониторе.

Основная предпосылка временного сглаживания
Основная предпосылка временного сглаживания

Затем все последующие кадры следуют тому же шаблону рендеринга, сэмплируют буфер истории, смешивают, обновляют и отображают результат. Накопление последовательных кадров приводит к сглаживанию всей сцены при переходе от кадра к кадру — так у нас получается гладкое изображение, на которое вполне можно смотреть.

Но если бы на этом работа алгоритма заканчивалась, он был бы бесполезен — например, если бы от кадра к кадру не было изменений, то смешивание ничего не исправило бы. Чтобы это обойти, каждый кадр изначально рендерится со случайным смещением камеры с небольшим запасом (это называется субпиксельным дрожанием). Слегка сдвинутые позиции пикселей затем используются для сэмплирования буфера истории, после чего дрожание устраняется, и обработку кадра можно считать завершенной. Таким образом, когда дело доходит до смешивания значений истории с текущими, вы почти всегда получаете выборки координат субпикселей, которые находятся не совсем в одном и том же месте, что приводит к некоторой степени сглаживания.

Самый распространенный алгоритм TAA
Самый распространенный алгоритм TAA

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

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

Окончательное смешивание пикселей текущих и из истории также может быть взвешено с использованием сравнительных значений цвета, яркости или скорости. Наконец, на финальной копии обновленного буфера истории можно использовать различные фильтры размытия, чтобы еще больше уменьшить гостинг изображения.

Без AA (слева) и TAA (справа) — обратите внимание на размытие деталей на крыле
Без AA (слева) и TAA (справа) — обратите внимание на размытие деталей на крыле

Для разработчиков запрограммировать все это гораздо сложнее, чем добавить в игру SSAA или MSAA. Но современные графические процессоры могут довольно быстро обрабатывать все требуемые шейдеры, и там, где алгоритмы супер- и мультисэмплинга требуют множество сэмплов для каждого кадра (а значит, большей работы модуля вывода рендеринга (ROP) и пропускной способности памяти), TAA эффективно распределяет эти сэмплы по нескольким кадрам. Это значит, что для игр, не сильно ограниченных количеством затенения, можно включить TAA с относительно небольшой потерей производительности.

Кроме того, TAA хорошо работает с отложенным рендерингом и может использоваться в связке с FXAA и SMAA, что приводит к еще лучшему виду изображения. К сожалению, он имеет склонность к чрезмерной размытости и вызывает мерцающие артефакты на краях с высокой контрастностью. Но, поскольку вычислительные мощности графических процессоров пока не демонстрируют никаких признаков выхода на плато, все эти методы можно продолжать совершенствовать.

И это еще не все!

Четыре описанных выше метода широко используются в играх для ПК и консолей, особенно в FXAA и TAA. Но на них дело не ограничивается.

Например, когда NVIDIA выпустила видеокарты серии GeForce 9, она также анонсировала модифицированную версию MSAA под названием Multi-Frame Sampled Anti-aliasing (MFAA). По сути, в этом алгоритме с каждым кадром графический процессор изменяет шаблон сэмплирования, и таким образом каждый раз берется и смешивается меньшее количество сэмплов. При усреднении по нескольким кадрам эффект оказывается такой же, как и при обычном MSAA, но с меньшими затратами на производительность. К сожалению, этот алгоритм можно было реализовать только в играх, разработанных под руководством NVIDIA. Тем не менее, он все еще существует, и вы можете получить к нему доступ, включив опцию в панели управления драйвером GeForce.

Совсем недавно та же компания вложила значительные ресурсы в разработку алгоритма AA, использующего искусственный интеллект. Алгоритм, появившийся в 2018 вместе с чипами Turing, имеет название суперсэмплинг при помощи глубокого обучения
(DLSS).

Первая версия DLSS требовала обучение глубокой нейронной сети на определенных играх. В них она сравнивала кадры низкого разрешения с кадрами очень высокого разрешения, в которых был включен SSAA. Текущая версия использует более обобщенную сеть и принимает во внимание дополнительную информацию в виде векторов движения для определения, как должен выглядеть кадр, если он был отрендерен с более высоким разрешением.

Сравнение оригинального 1080p и с применением DLSS:

Сейчас AMD работает над собственным аналогом DLSS. Можно предположить, что со временем алгоритмы глубокого обучения AA заменят традиционные, но сейчас до этого еще далеко. Такие системы не легче внедрить, чем, скажем, TAA, а визуальные результаты при этом не всегда идеальны.

Мы прошли уже долгий путь со времен Riva TNT и Half-Life , когда просто приходилось мириться с неровными полигонами повсюду, ведь не было никаких технологий, чтобы можно было что-то с этим сделать, но исследования улучшенных методов сглаживания продолжаются и продолжаются.

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

Сглаживание (Anti-aliasing) — это метод компьютерной графики, который пытается минимизировать нежелательные «лесенки» или неровные контуры объектов, которые возникают из-за ограниченного разрешения в 3D-рендерерах, по сути путём «сглаживания» этих линий.

Необходимо ещё затронуть несколько терминов, среди которых выборка, репрезентативность выборки и генеральная совокупность, а также шейдеры.

«Генеральная совокупность — это совокупность всех объектов или наблюдений, относительно которых исследователь намерен делать выводы при решении конкретной задачи».

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

Выборка должна соответствовать определённым критериям, чтобы была возможность обобщить и распространить её на генеральную совокупность. Основные критерии — это репрезентативность выборки и статистическая достоверность результатов.

Репрезентативность выборки, если говорить более простым языком — это её представительность, т. е. способность выборки представить явления или объекты достаточно полно с точки зрения их изменчивости в генеральной совокупности.

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

Пример сглаживания

Слева изображен куб без сглаживания, справа же — со сглаживанием 16x. Как вы видите, слева те самые «лесенки», справа, конечно, тоже «лесенки», но их края «смазаны» и без приближения стороны куба смотрятся более гладкими.

Виды сглаживания

На сегодняшний день существует большое количество методов сглаживания, но все они основываются на одном принципе. Они отрисовывают несколько пикселей для одного исходного пикселя в финальном изображении.

Фактически методы различаются только двумя пунктами:

  • Как они определяют пиксели, которые могут быть наложены друг на друга.
  • Как они «смешивают» несколько отрисованных пикселей для получения необходимого нам конечного пикселя.

Кроме этого данные алгоритмы используют разное количество пикселей для получения финального пикселя. В видеоиграх данное количество представлено достаточно просто с помощью использования числа 2 в какой-либо степени, т. е. 2x, 4x, 8x и т.д.

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

Кроме этого следует отметить, что некоторые методы сглаживания могут использовать видеокарты как Nvidia, так и Radeon, другие же — только Nvidia или только Radeon.

Традиционные методы

Результат более чёткий и чистый, чем методы постобработки.

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

Данные методы в большинстве случаев довольно затратны по используемым ресурсам. Методы постобработки могут использоваться, как альтернатива для снижения влияние сглаживания на производительность.

Традиционные методы не конфликтуют с большинством типов временного сглаживания.

Избыточная выборка сглаживания — Super-Sampling Anti-Aliasing (SSAA)

Данный метод также известен как Полноэкранное сглаживание Full Scene Anti-Aliasing (FSAA) от AMD и зачастую заменяется термином снижение масштабирования.

Технически при корректном использовании снижения масштабирования разница с SSAA/MSAA будет заключаться в том, что снижение масштабирования применяется как к 2D, так и 3D объектам, в то время как SSAA/MSAA только к 3D объектам. В некоторых реализациях это может привести к меньшему снижению производительности и лучшей совместимости.

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

Данные методы используют общую формулу сглаживания к полноэкранным изображениям, уменьшая «эффект лестницы». По сравнению с отрисованным изображением, которое прошло через MSAA, изображение SSAA/FSAA будет выглядеть более гладким. На 2D текст также могут повлиять большинство из реализации снижения масштабирования, в то время как SSAA/MSAA не должны влиять на текст при их правильной реализации.

Реализованная на системах Nvidia Избыточная выборка сглаживания с упорядоченной решёткой — Ordered Grid Supersample Anti-Aliasing (OGSSAA). Может быть включена с помощью использования Nvidia Profile Inspector в следующих режимах: 2×1, 1×2, 2×2, 3×3, 4×4.

Множественная выборка сглаживания — Multi-Sample Anti-Aliasing (MSAA)

MSAA по своей сути — это «бюджетная» версия SSAA.

Для уменьшения нагрузки, которая создаётся SSAA/FSAA на системы, множественная выборка оптимизирует процесс, оценивая каждый пиксель только один раз, при этом настоящая избыточная выборка происходит только на краях отрисованного объекта и до значений глубины. Это приводит к аналогичному (но менее радикальному) улучшению качества изображения при одновременном снижении нагрузки на систему при отрисовке и снижению масштабирования в высоких разрешениях изображения.

В первую очередь данный метод убирает искажения геометрии, т. е. временное искажение и искажение шейдерных эффектов, текстур и прозрачностей не будут затронуты.

У данного метода также присутствуют как плюсы, так и минусы. Он решает проблемы с субпикселями, а также не искажает основной объект большим количеством выборок. Однако потребление памяти увеличивается линейно с ростом количества выборок, время отрисовки зависит от количества выборок, а также существуют проблемы комплексной интеграции при работе с отложенной отрисовкой.

Мультикадровое сглаживание — Multi-Frame Anti-Aliasing (MFAA)

Данный метод используется на видеокартах серии Nvidia GeForce GTX 900 или выше (в свою очередь метод является преемником выборки сглаживания с перекрытием CSAA).

Метод предназначен для использования с MSAA для уменьшения негативного эффекта в виде снижения производительности за счёт чередования шаблонов выборок, используемых для каждого пикселя, как пространственно в одном кадре (например, каждый последующий пиксель использует один из четырёх разных образцов шаблонов — 2x сглаживание) и чередуются по нескольким кадрам во времени. Конечным результатом является то, что MFAA может обеспечивать качество изображения, приближающееся к 4x MSAA по производительности, сопоставимой с 2x MSAA, или 8x MFAA по производительности, сопоставимой с 4x MSAA.

Однако стоит отметить важный момент: MFAA не работает должным образом при отрисовке ниже 40 FPS (кадров в секунду). При достижении данного порога изображение размазывается и появляется размытие в движении.

Также возможно отключение некоторого списка команд драйвера D3D11, тем самым убивается многопоточная отрисовка. В следствии этого падает производительность, особенно когда центральный процессор работает на пределе своих возможностей.

Сглаживание повышенного качества — Enhanced Quality Anti-Aliasing (EQAA)

Метод используется для видеокарт серии AMD Radeon HD 6900 и выше.

AMD утверждает, что предлагает улучшенное качество сглаживания по сравнению со стандартными режимами MSAA, добавляя большее количество выборок для перекрытия на единицу пикселя, но сохраняя такое же количество выборок цвета/глубины/образцов для достижения лучшего качества сглаживания, чем стандартные режимы MSAA.

Тестовая выборка проверяет, есть ли полигон в определённой точке выборки и возможно ли использовать их вес для вычисления окончательного цвета пикселя. Поскольку такие выборки достаточно просто получать, то мы имеем конечный результат в виде повышенного качества, которое в меньшей степени воздействует на производительность по сравнению с выборками MSAA. К сожалению, значения данных выборок зависит от определённого пикселя, поэтому мы можем получить как улучшение качества, так и отсутствие каких-либо видимых изменений.

Выборка сглаживания с перекрытием — Coverage Sampling Anti-Aliasing (CSAA)

Кроме данного метода существует и Выборка сглаживания с перекрытием с упором на качество — Quality Coverage Sampling Anti-Aliasing (QCSAA), которая направлена на ещё большее увеличение качества путём использования вдвое большего количества выборок для анализа.

Для метода необходимы видеокарты серии Nvidia GeForce 8000 и выше. Да, именно тех самых старых видеокарт.

В графических процессорах, которые базируются на архитектуре Maxwell, в таких как GTX 750 Ti и серия GTX 800M/900, поддержка данного сглаживания удалена.

Метод нацелен на снижение дополнительной нагрузки, которую создаёт MSAA на систему, при этом Nvidia утверждает, что отрисовка с помощью CSAA конкурирует по качеству с 8x-16x MSAA, при этом нагрузка на систему сравнима с 4x MSAA. Данное качество достигается за счёт уменьшения количества настроек, определяемых каждой выборкой (с помощью создания новой выборки для перекрытия) при одновременном увеличении общего количества выборок.

Данный метод аналогичен EQAA от AMD, поэтому если вы хотите узнать принцип работы сглаживания, то изучите метод EQAA.

Избыточное шахматное сглаживание — Quincunx Super Anti-Aliasing (QSAA)

Данный метод — это эксклюзив от Nvidia.

Немного улучшает стандартный MSAA. Для примера: 2x QSAA примерно соответствует 3x MSAA с точки зрения качества. Данный метод по своей сути — фильтр размытия, который сдвигает отрисованное изображение вверх на половину пикселя и влево на половину пикселя для создания субпикселей. Данная технология убирает большинство неровных краёв, при этом общая детализация изображения также растёт.

Избыточная выборка сглаживания с разряженной решёткой — Sparse Grid Super-Sampling Anti-Aliasing (SGSSAA)

Метод — эксклюзив от Nvidia.

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

Существует две разновидности метода: FSSGSSAA (Полноэкранная избыточная выборка сглаживания с разряженной решеткой — Full Scene Sparse Grid Supersampling Anti-Aliasing, чаще всего называемая SGSSAA) и TrSGSSAA (Прозрачная полноэкранная выборка сглаживания — Transparency Sparse Grid Supersampling Anti-Aliasing, чаще всего называемая TrSSAA).

Прозрачная версия включается с помощью настройки в панели Nvidia. Полноэкранная версия требует установить настройки сглаживания — Режим переопределения настроек приложения, Сглаживание — Настройки для 2x 4x или 8x избыточной выборки и Сглаживание — Прозрачность на аналогичное значение в тех же настройках. Обратите внимание, что со стороны игр требуется поддержка данных видов сглаживания, небольшой список вы можете просмотреть по ссылке: NVidia Profile Inspector — AA Flags — Google Диск или воспользоваться Nvidia Profile Inspector.

Если вспомнить немного истории, то Nvidia внедрила поддержку TRSSAA в одном из своих альфа тестов. Однако в одном из драйверов присутствовала ошибка и метод SGSSAA применялся ко всем пикселям. Они исправили ошибку в следующем релизе, но многие пользователи начали жаловаться, что с SGSSAA изображение было лучше. Это заставило Nvidia заново включить данную ошибку в свой драйвер. На текущий момент данный вид сглаживания не поддерживается и Nvidia предупреждает, что данный метод вы используете на свой страх и риск, но другой разработчик включил данную ошибку в другой инструмент nvidia inspector, если данной настройки у вас нет.

SGSSAA может оказаться лучше или хуже OGSSAA в nvidia inspector в зависимости от игры. В некоторых играх один из методов может сделать картинку размытой, а другой — нет, и наоборот. Метод работает практически на любом API. Он работает путём многократной отрисовки в нескольких промежуточных выборках вне экрана, каждый раз применяя смещение к выборкам в разных направлениях. После этого он смешивает постобработку буферов. В настоящее время никто, кроме nvidia не знает наверняка, является ли данная реализация аппаратной или основана на драйверах (шейдерах).

Сглаживание гибридной выборки — Hybrid-Sampling Anti-Aliasing (HSAA)

Данный метод использует комбинацию SSAA и MSAA.

Пользователи Nvidia могут использовать Nvidia Profile Inspector для принудительной установки необходимой версии, которая использует SSAA с упорядоченной сеткой вместе с обычным MSAA в некоторых играх (режимы с расширением xS).

Иногда работает в тех случаях, когда SGSSAA не работает или работает с слишком высоким размытием из-за ошибки в драйвере.

Методы постобработки

Данные методы используют меньше ресурсов по сравнению с традиционными методами.

Данные методы используются после отрисовки изображения, в отличии от традиционных методов. Это означает, что они совместимы практически с каждой игрой, видео или даже фотографиями.

При использовании данных методов изображения (в частности текстуры) иногда могут становиться размытыми, так что общее качество может стать даже хуже оригинала, если метод реализован некачественно. Размытие в некоторой степени можно уменьшить с применение технологий повышения резкости.

Данные методы должны применяться перед отрисовкой элементов интерфейса в игре для исключения воздействия на них.

Быстрое приблизительное сглаживание — Fast Approximate Anti-Aliasing (FXAA)

Метод не требует больших вычислительных мощностей. Это достигается за счёт сглаживания неровных краёв («неровностей») исходя из того, как они изображаются на экране в виде пикселей, вместо того, чтобы анализировать сами 3D — модели, как при обычном сглаживании. Кроме этого метод достаточно быстрый, он выполняется за 1,3 миллисекунды на 1 кадр.

Однако улучшение качества изображение, которое достигается данным методом по качеству несколько хуже, чем традиционные методы сглаживания, такие как MSAA. Данный метод может быть применён дважды с использованием двух отдельным инструментов (например, внутриигровые настройки и панелью управления видеодрайвера и т. д.) или же поверх SMAA или TAA для дальнейшего удаления неровностей, но с большой долей вероятности данный метод ухудшит размытие наравне с увеличением производительности.

Морфологическое сглаживание — Morphological Anti-Aliasing (MLAA)

Доступно на картах AMD на Windows и может быть принудительно запущено для всех игр через панель управления драйвером видеокарты независимо от используемого графического API, а также для игр OpenGL под Linux с драйверами Mesa.

Данный метод больше воздействует на производительность, чем FXAA, хотя и позволяет получить более чёткое изображение.

MLAA предназначен для уменьшения артефактов искажения в отображаемом изображении без использования дополнительных лучей или спектров. Он содержит 3 основных этапа:

1. Находим разрывы между пикселями на изображении.

2. Определяем переопределённые выборки.

3. Смешиваем цвета по соседству с данными шаблонами.

Слева вы можете видеть изображение без сглаживания, а справа с применением MLAA.

Субпиксельное морфологическое сглаживание — Subpixel Morphological Anti-Aliasing (SMAA)

Данный метод может быть добавлен в большинство игр через ReShade (даже в игры с определение глубины границ)

В своей основе используется метод MLAA. Качество изображения меняется от игры к игре в связи с разной реализацией, но в большинстве случаев данный метод бывает лучше чем FXAA или MLAA.

Метод использует функции локального контраста для определения краёв, а также ускоренный и более точный поиск по расстоянию между пикселями, что позволяет лучше распознавать шаблоны для сглаживания. Это позволяет восстанавливать субпиксели, сопоставимо с сглаживанием 4x MSAA, кроме этого данное сглаживание гибко настраивается под конкретные нужды разработчиков.

Субпиксельное восстанавливаемое сглаживание — Subpixel Reconstruction Anti-Aliasing (SRAA)

В настоящее время используется только в Unigine 2.13.

Метод сочетает в себе однопиксельное затенение с субпиксельной видимостью для создания сглаженных изображений без значительного уменьшения производительности. S RAA направлено на отрисовку с отложенным затенением, которую не может использовать MSAA. S RAA работает как постобработка на отрисованном изображении с глубиной сверхвысокого разрешения и нормальными буферами, поэтому его возможно включить в существующий метод отрисовки без изменения шейдеров. S RAA по своему принципу действия похож на Морфологическое сглаживание (MLAA), но новый метод лучше учитывает геометрические границы и имеет фиксированное время выполнения, независимо от сцен и сложности изображения. S RAA приносит пользу приложениям, привязанных к затенению. S RAA обеспечивает ускорение по сравнению с SSAA, которые тратят больше 1 мс на затенение, для понимания — в большинстве современных игр на этот процесс уделяется от 5 до 10 мс.

Слева изображено сглаживание 16x SSAA, справа 4x SRAA.

Консервативное морфологическое сглаживание — Conservative Morphological Anti-Aliasing (CMAA)

Метод CMAA находится между FXAA и SMAA 1x по необходимой вычислительной мощности (требует в 1.0-1.2 больше чем FXAA 3.8 и в 0.55-0.75 раза больше чем SMAA 1x).

По сравнению с FXAA, CMAA обеспечивает значительно лучшее качество изображения и стабильность времени кадра, поскольку метод правильно обрабатывает линии краёв длиной до 64 пикселей и основан на алгоритме, который работает только с симметричными неоднородностями, чтобы избегать нежелательного размытия.

У CMAA четыре основных логических шага (шаги не всегда связаны с порядком при реализации):

Анализ изображения на предмет неоднородности цвета (впоследствии сохраняется в локальном сжатом «рёберном» буфере). Используемый метод не является уникальным для CMAA.

Извлечение доминирующих рёбер с небольшим ядром (уникальная особенность среди существующих методов).

Обработка симметричных длинных ребер (уникальный подход к оригинальному алгоритму обработки форм в MLAA).

Ниже вы можете увидеть примеры работы данного метода в сравнении с другими.

Динамическое сверхвысокое разрешение — Dynamic Super Resolution (DSR)

В данном методе происходит отрисовка игры в высоком разрешении (до формата 4K), после этого изображение масштабируется до разрешения дисплея. Это позволяет повысить качество изображения, но производительность в таком режиме снижается, т. к. отрисовка происходит в более высоком разрешении.

Временное сглаживание — Temporal Anti-Aliasing (TAA)

Временное сглаживание — общий термин для различных временных методов. Не ограничен конкретным производителем.

Метод включает в себя алгоритм на основе шейдера, который объединяет два кадра с использованием векторов движения для определения места выборки предыдущего кадра, является одним из наиболее распространённых алгоритмов улучшения изображения, используемых сегодня.

Временное приблизительное сглаживание — Temporal approXimate Anti-Aliasing (TXAA)

Метод предназначен для видеокарт серии Nvidia GeForce GTX 600 и выше.

Техника в стиле кино предназначена для уменьшения временного искажения (ползание и мерцание, наблюдаемые в движении во время игры).

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

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

Ниже вы можете увидеть сравнение нескольких режимов: без сглаживания, FXAA, SMAA и TXAA

Временная избыточная выборка сглаживания — Temporal Super-Sampling Anti-Aliasing (TSSAA)

Данный метод также известен как TMAA.

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

В отличии от TXAA, TSSAA не привязан к конкретному производителю и работает для всех видеокарт. Данный метод сглаживания был применён в World of Tanks с версии 9.9. В данной игре он поделился на две версии:

TSSAA-LQ — это более лёгкий вариант нового метода сглаживания, использующий меньшее количество предыдущих кадров во время обработки изображения.

TSSAA-HQ — метод сглаживания высочайшего качества. Даже если у вашего компьютера недостаточно производительный процессор, вы можете не заметить разницы в производительности между HQ и LQ, т. к. основная нагрузка ложится на видеокарту.

Ниже вы можете увидеть сравнение изображения: без сглаживания, FXAA, TSSAA-LQ и TSSAA-HQ.

Методы реконструкции

Сглаживание с использованием методов реконструкции — попытка снизить нагрузку на графический процессор за счёт рендеринга с более низким разрешением, затем масштабирования до выходного разрешения с одновременным сглаживанием.

Сглаживание гибридной реконструкции — Hybrid Reconstruction Anti-Aliasing (HRAA)

Данный метод — гибридное решение аппаратной выборки, постобработки, временной обработки и анализа. Сглаживание было разработано Ubisoft Montreal и применено в Far Cry 4. Метод основан на лучших элементах постобработки, равен SMAA с точки зрения четкости изображения в статических моментах при попытке устранить мерцание, которое вызвано отсутствием временной выборки.

На практике на PS4 HRAA достаточно успешно обрабатывает неровности, избегая остаточного размытия текстуры. Данная проблема присутствует при использовании популярного метода FXAA. С геометрическими искажениями трудно справиться и при работе с конечной целью растеризации субпиксельные элементы тщательно очищаются. В неподвижных изображениях игра сохраняет резкость во всех нужных местах. Вторая же цель метода — улучшить работу сглаживания в движении. Высококонтрастные элементы, такие как промежутки между листвой деревьев (типичная жертва временного мерцания), выигрывают от смешивания текущего и предыдущего кадров, чтобы уменьшить визуальные помехи. Конечным результатом является очень небольшое мерцание, напоминающее метод TXAA, используемый на ПК.

Ниже вы можете увидеть пример работы метода: без сглаживания, со сглаживанием, со сглаживанием и увеличением резкости.

Избыточная выборка при помощи глубокого обучения — Deep Learning Super-Sampling (DLSS)

Метод — эксклюзив видеокарт Nvidia RTX.

DLSS эмулирует избыточную выборку с использованием нейронной сети для вывода дополнительных деталей поверх внутриигровой отрисовки, сопоставляя его с эталонным изображением, которое было отрисовано с использованием избыточной выборки 64x (64xSS).

В то время, как TAA выполняет отрисовку с конечным целевым разрешением, затем объединяет кадры и вычитает детали, DLSS снижает количество ресурсов необходимых для отрисовки, используя меньшее количество выборок, тем самым практически не влияя на конечную производительность, т. к. для сглаживания используются тензорные ядра.

Ниже один из примеров различия в качестве DLSS, кроме этого вы можете посмотреть подробное видео по DLSS у нас на Youtube – канале.

FidelityFX супер разрешение — FidelityFX Super Resolution (FSR)

FidelityFX супер разрешение — это пространственное масштабирование, которое берёт текущий сглаженный кадр и масштабирует его до разрешения дисплея, не учитывая другие данные, как например история кадров или векторы движения. Логичным вопросом будет, а почему данный метод находится в методах реконструкции, хотя это масштабирование? Ответ на данный вопрос рассмотрим немного ниже.

В основе FSR лежит передовой алгоритм, который обнаруживает и воссоздаёт края с высоким разрешением из исходного изображения. Эти края с высоким разрешением являются критическим элементом, необходимым для превращения текущего кадра в изображение «супер разрешения».

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

FSR состоит из двух основных этапов:

  • Этап масштабирования называется гранично-адаптивной пространственной повышающей дискретизации (EASU — Edge-Adaptive Spatial Upsampling), который выполняет реконструкцию краёв. На этом этапе входной кадр анализируется, и основная часть алгоритма обнаруживает изменение градиента смотря на отличия соседних градиентов из набора входных пикселей. Интенсивность изменения градиента определяет веса, применяемые к реконструированным пикселям на конечном разрешении экрана.
  • Этап повышения резкости называется активной контрастно-адаптивной резкостью (RCAS — Robust Contrast-Adaptive Sharpening), который извлекает детали пикселя из масштабированного изображения.

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

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

Сравнение качества сглаживания в разных сценах

Теперь рассмотрим несколько примеров разных видов сглаживания для сравнения.

Выводы

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

Что такое сглаживание и для чего нужно

Для начала стоит немного рассказать о том, что такое алиасинг, чтобы понять, для чего нужно сглаживание. Дело в том, что графика дискретна — очевидно, пиксель либо закрашен полностью, либо нет. При построении сцены цвет каждого пикселя определяется тем, лежит ли в его центре часть какого-нибудь объекта или нет. Именно поэтому некоторые детали могут не отрисовываться, если они покрывают лишь четверть пикселя. А другие примитивы, наоборот, имеют слишком резкие переходы между парой пикселей, даже если сам предмет должен обладать плавными формами.

Иначе говоря, алиасинг — резкий переход между двумя или несколькими пикселями. Самые очевидные примеры алиасинга в играх — мерцание тонких объектов или текстур с мелкими деталями в движении и эффект ступенчатости на краях объектов.

Так вот, сглаживание, или же AA (Anti-Aliasing) — это способ устранения артефактов алиасинга, в том числе и тех самых «лесенок» на изображении. Оно позволяет сделать сцену в игре более реалистичной и приятной глазу, как в реальной жизни. Добиваются плавности как раз «смягчением» переходов между пикселями, заполняя соседние пиксели корректными оттенками.

Александр

Здравствуйте, меня зовут Александр, уже более 10 лет я занимаюсь ремонтом компьютером, этот сайт я создал чтобы делиться полезной и практической информацией с вами! Буду благодарен, если вы опишите свой опыт или мнение в комментарии, надеюсь, что данная информация принесёт только пользу

Оцените автора
WindowsComp.ru
Добавить комментарий