FXAA или SMAA что лучше - TurboComputer.ru
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд (пока оценок нет)
Загрузка...

FXAA или SMAA что лучше

SMAA: улучшенное субпиксельное морфологическое сглаживание

Данная статья основана на журнале Хорхе Хименеса, Хосе Эчеварриа, Тиаго Соуса и Диего Гутьерреса.

Их демо реализации SMAA можно посмотреть здесь (файл .exe). На моём GTX 960 2GB оно работает вполне нормально.

Старые способы сглаживания (антиалиасинга)

Современные способы сглаживания

Существует множество современных основанных на фильтрации методов, которые хорошо справляются со своей работой, несмотря на то, что уступают двум перечисленным выше. FXAA, DEAA, GPAA, GBAA, CSAA, EQAA, DLAA… В этой статье мы поговорим о SMAA, и о его предшественнике — MLAA. Эти современные основанные на фильтрации методы имеют собственные проблемы:

  • Большинство алгоритмов распознавания краёв, которые лежат в основе этих методов, учитывают только численные различия между пикселями и игнорируют то, как они отображаются зрителю.
  • Исходная форма объекта не всегда сохраняется, общее скругление углов почти всегда чётко заметно на текстах, резких углах и субпиксельных элементах.
  • Большинство решений рассчитано на обработку только горизонтальных или вертикальных паттернов, и игнорирует диагонали.
  • Реальные субпиксельные элементы и субпиксельное движение обрабатывается неверно. Алиасинг отражений (specular) и затенения (shading) устраняются не полностью.

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

Морфологическое сглаживание (Morphological Antialiasing, MLAA)

MLAA пытается оценить покрытие исходной геометрии. Для точной растеризации сглаженного треугольника необходимо вычислить площадь покрытия каждого пикселя внутри треугольника, чтобы правильным образом смешать его с фоном. MLAA начинает с изображения без сглаживания, а затем обращает процесс вспять, векторизируя силуэты, чтобы вычислить покрываемые ими площади. Поскольку фон после растеризации узнать нельзя, MLAA затем смешивает его с соседом, предполагая, что его значение близко к значению исходного фона. Другими словами, алгоритм распознаёт границы (с помощью информации о цвете или глубине), а затем обнаруживает в них конкретные паттерны. Сглаживание обеспечивается интеллектуальным смешиванием пикселей в границах. MLAA имеет реализации на DirectX 10 и Mono Game (XNA). Он честно реализован в таких играх, как Fable II. Создатели MLAA позже создали SMAA, или Enhanced Subpixel Morphological Antialiasing (усовершенствованное субпиксельное морфологическое сглаживание), которое является основной темой данной статьи.

MLAA в действии

Enhanced Subpixel Morphological Antialiasing (SMAA)

Сравнение SMAA и других методов в Crysis 2

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

Вверху — AA нет; в середине — MLAA; внизу — SMAA

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

Распознавание краёв

Распознавание краёв — важнейший этап, потому что нераспознанные края остаются искажёнными. С другой стороны, слишком большое количество краёв с фильтрацией снижает качество сглаженного изображения. Для распознавания края может использоваться различная информация: цветность, яркость, глубина, нормаль поверхности и их сочетание. SMAA по четырём причинам использует яркость (luma):

  1. Меньше артефактов.
  2. Яркость всегда видима.
  3. Она может справляться с искажениями затенения.
  4. И, наконец, она быстрее, чем цветность (chroma).

Слева и в центре: другие методы распознавания краёв, приводящие к появлению красных пересечений и артефактов; справа: совершенно чёткие края SMAA

Запомните это изображение. Вот как работает распознавание краёв: окончательное вычисленное значение — это булево значение, называемое граница левого края. Аналогичным образом вычисляются булевы значения для верхнего края. Формула:

0.5.c_$” data-tex=”display”>

Все значения c называются дельтами контраста.

Обработка паттернов

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

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

Диагональные паттерны: мы добавили совершенно новый способ распознавания диагональных паттернов. Он состоит из двух следующих этапов:

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

Если распознавание диагональных паттернов завершилось неудачей, то запускается распознавание ортогональных паттернов.

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

Где и — это два двоичных значения (0 или 1), а — значение интерполяции.

Результаты

MLAA работает с одним сэмплом на пиксель. Что приводится к субсемплированию, из-за которого реальные субпиксельные элементы воссоздать невозможно.

Сравнение MLAA с SMAA и отсутствием AA

Однако SMAA работает на субпиксельном уровне. Это приводит к следующему:

  • Локальный контраст
  • Распознавание диагональных паттернов
  • Резкие геометрические элементы
  • Точный поиск

Всё это можно увидеть на изображении ниже, где эти аспекты сравниваются с результатами других методов. На самом деле, SMAA может создавать результаты, близкие к SSAA 16x.

Типы сглаживания и их принудительное включение в играх

Любой хотя бы раз видел в игре настройку «Сглаживание», оно же Antialiasing. Это функция, позволяющая устранить эффект лесенки на краях объектов и сделать изображение менее пилообразным. Производители видеокарт создали немало различных методик, общее количество которых исчисляется десятками. Многие из них устарели и забыты, а некоторые используются до сих пор.

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

Типы сглаживания

В качестве образца будет использоваться игра Track Mania вкупе с Full HD разрешением монитора. Видеокарта GTX 1070. Первый скриншот «чистый», без сглаживания. Просматривать рекомендуется в полном размере.

FXAA (Fast approXimate Anti-Aliasing)

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

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

SMAA (Subpixel Morphological Anti-Aliasing)

Продвинутое пост-сглаживание, основанное на FXAA и MLAA. Дает ощутимо лучший результат, но потребляет чуть больше ресурсов видеокарты. Имеет четыре степени качества.

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

MSAA (Multi-Sample Anti-Aliasing)

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

Когда в играх вы выбираете степень сглаживания x2, х4 или x8 подразумевается именно MSAA.

SSAA (Super-Sample Anti-Aliasing)

Самое лучшее, самое правильное и самое требовательное к производительности сглаживание. В отличие от MSAA происходит масштабирование всех возможных объектов, а также шейдеров и текстур.

При выборе настройки SSAA x 4 объект увеличивается в четыре раза с каждой стороны (вертикаль и горизонталь), что дает внутреннее разрешение 7680×4320 от изначального 1920×1080.

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

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

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

Читайте также:  Создаем рисунок из фото в Фотошопе

Иногда в настройках попадается SSAA x 0.5. При его использовании игровое разрешение уменьшается вчетверо (до 960×540), что ухудшает качество картинки, но дает прирост производительности.

DSR (Dynamic Super Resolution)

Технология от NVIDIA, позволяющая использовать разрешения, превышающие возможности вашего монитора. Максимальное значение x 4, что соответствует формату 2160p. По качеству немного превосходит SSAA x2.

И если SSAA работает с внутренним разрешением игры, то DSR запускает игру в настоящем 4К, которое затем даунскелится до родного разрешения монитора. Это дает возможность снимать видео и делать скриншоты в 3840×2160 на мониторе с меньшим разрешением.

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

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

У AMD есть свой аналог, названный VSR (Virtual Super Resolution).

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

Комбинации и ответвления

Производители частенько любят хитрить со сглаживанием, комбинируя методы. В качестве примера TXAA: на самом деле это всего лишь одновременная работа MSAA и FXAA низкого качества. Адаптивным сглаживанием называют SSAA + MSAA. Многокадровое сглаживание MFAA это просто надстройка для MSAA, призванная улучшить качество (через панель управление не заработала ни в одной игре).

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

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

Кстати, DSR и SSAA можно использовать одновременно. Track Mania в этом случае запускается в разрешении 16К (15360×8640), при 26 кадрах в секунду.

В итоге игра 2006 года почти “поставила на колени” GTX 1070. Ну а про игры типа Metro Redux и говорить нечего, всего 1-3 фпс.

Использование

FXAA

Для активации нам понадобится программа FXAA Tool.

В главном окне программы убираем галочку Pre Sharpen. Далее нажимаем кнопку “Add”, программа попросит нас ввести имя профиля (можете написать любое), а затем необходимо указать путь к папке с игрой.

Переходим во вкладку “AntiAliasing”. Двигая ползунок влево и вправо, мы изменяем баланс между производительностью и качеством. После того, как необходимый уровень выбран, нажимаем кнопку “Save”. Теперь при каждом запуске игры сглаживание будет включаться автоматически. Чтобы его убрать достаточно в главном меню нажать кнопку “Remove”.

SMAA

Для его использования необходимо скачать программу SweetFX.

Первым делом нажимаем кнопку Add new game и указываем путь на файл запуска игры (.exe).

В списке игр появится строчка с именем файла, щелкаем по ней один раз.

Нажимаем кнопку Add SweetFX.

Заходим в настройки SweetFX Injector settingsи выбираем желаемый уровень качества.

Лучше всего поставить SMAA_PRESET_HIGH. Нажимаем Save settings, а затем в главном окне Save new config.

Как и в случае с FXAA Tool при каждом запуске игры сглаживание будет включаться автоматически. Чтобы его убрать необходимо в главном меню нажать кнопку “Remove SweetFX”.

MSAA SSAA VSR (Radeon)

Новая панель управления от AMD максимально упрощена. Чтобы активировать VSR, нужно лишь нажать соответствующую кнопку в разделе “Дисплей”. После этого в играх появятся новые доступные разрешения.

Активация MSAA и SSAA также не доставит никаких проблем. Переходим во вкладку «Игры» и изменяем несколько настроек.

  1. Режим сглаживания — переопределить настройки приложения.
  2. Ставим желаемый уровень сглаживания (например 4X).
  3. Выбираем метод сглаживания.

Избыточная выборка — это SSAA, а множественная выборка — это MSAA.

MSAA SSAA DSR (GeForce)

Для включения DSR необходимо перейти в раздел «Управление параметрами 3D» и выбрать строчку «DSR-Степень».

Появится небольшое окно, в котором вы сможете выбрать, во сколько раз большие от оригинального разрешения вам нужны. К примеру, x1.78 соответствует разрешению 2560×1440, а x4 соответствует 3840×2160. После этого выбранные разрешения станут доступны в параметрах рабочего стола, а также в самих играх.

Также необходимо выставить параметр «DSR-плавность» на значение 0 %. В противном случае изображение будет слегка размыто.

Для включения MSAA, в этом же разделе (Управление параметрами 3D) нужно изменить два параметра.

  1. «Сглаживание — режим» выставляем «Замещение настроек приложения».
  2. «Сглаживание — параметры» выставляем желаемую степень сглаживания (например 4x).

Затем нажимаем кнопку «Применить».

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

Для SSAA сглаживания настройки в панели управления не предусмотрено (исключение — старые видеокарты).

Включить его получиться только с помощью сторонней утилиты NVIDIA Profile Inspector.

  1. Запускаем программу и ищем раздел 3-Antialiasing.
  2. Для строки Antialiasing — Mode меняем значение на Override any aplication settings.
  3. Для строки Antialiasing – Setting выбираем уровень сглаживания. Рекомендуется либо 2×2 Supersampling, либо 4×4 Supersampling.
  4. Нажимаем кнопку Apply changes.

Для сброса настроек вы можете нажать на значок NVIDIA.

Сравнение

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

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

А теперь сравним влияние сглаживания на FPS в игре.

Исходные материалы

Все использованные в статье игровые скриншоты, а также несколько дополнительных вы можете скачать в архиве по ссылке.

Track Mania Nations — игра, использованная для демонстрации типов сглаживания доступна для бесплатного скачивания на странице в Steam.

Вывод

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

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

  • В любой требовательной игре включать сглаживание MSAA x4 (или выше), даже если придется понизить другую графическую настройку. Всё-таки четкость контуров играет большую роль, нежели сверхдальняя прорисовка теней.
  • В играх, в которых не используется мышка (гонки, аркады, файтинги и тд.) применять технологию DSR x4.
  • В старых играх активировать сглаживание SSAA x4, так как сильно повышается качество игрового мира, а производительности видеокарты хватает с запасом.

Типы сглаживания в играх

Начнем с определения:

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

Почему возникает «зубчатость»? Проблема в том, что мониторы современных ПК состоят из квадратных пикселей, а значит на них действительно прямыми будут только горизонтальные и вертикальные линии. Все линии, находящиеся под углом, будут строиться из пикселей, находящихся по диагонали друг к другу, что и вызывает «зубчатость». К примеру, справа на картинке — вроде бы ровная линия. Однако стоит ее увеличить, как сразу становится видно, что никакая она не прямая:

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

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

SSAA (Supersample anti-aliasing) — самое тяжелое сглаживание, потому что оно, по сути, описывает способ убирания лесенок, который я привел выше: при четырехкратном (4х) сглаживании видеокарта готовит картинку в разрешении вчетверо выше, чем выводит на экран, потом происходит усреднение цвета соседних пикселей и вывод на экран в исходном разрешении. Получается, что виртуальная плотность пикселей вдвое выше, чем у экрана, и лесенки практически перестают быть заметными. Очень сильно сказывается на производительности: к примеру, если разрешение в игре 1920х1080, то видеокарта вынуждена готовить картинку в 4К — 3840х2160. Однако результат получается великолепным — картинка выглядит как живая, никакого мельтешения нет:

Читайте также:  Приложения для ставок на спорт для iPhone

MSAA (Multisample anti-aliasing) — улучшенная версия SSAA, которая потребляет гораздо меньше ресурсов. К примеру — зачем сглаживать то, что находится внутри текстуры, если лесенки есть только на краях? Если текстура представляет собой прямую линию под углом к игроку, то можно сгладить лишь один участок и продолжить эффект на весь край текстуры. В результате нагрузка на видеокарту становится ощутимо меньше, и по тяжести даже 8х MSAA оказывается ощутимо легче 4х SSAA при сравнимом качестве картинки.

CSAA и CFAA (Coverage Sampling anti-aliasing и Custom-filter anti-aliasing) — по сути несколько улучшенный MSAA от Nvidia и AMD (позволяют выбирать дополнительные отсчёты «перекрытия» пикселя, по которым можно уточнять итоговое значение цвета попадающего на край треугольника экранного пикселя). 8x CSAA/CFAA дает сравнимое с 8x MSAA качество картинки, однако потребляет примерно столько же ресурсов, столько и 4х MSAA. На сегодняшний момент оба сглаживания не используются — разработчики игр решили использовать унифицированные для всех видеокарт сглаживания.

FXAA (Fast approXimate anti-aliasing) — нетребовательное быстрое сглаживание. Алгоритм прост — совершается один проход по всем пикселям изображения и усредняются цвета соседних пикселей. Это слабо нагружает видеокарту, однако сильно мылит картинку (обратите внимание на четкость текстуры камня), делая далекие объекты вообще неузнаваемыми:

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

MLAA (MorphoLogical anti-aliasing) — аналог FXAA от Intel. Работает схожим образом, однако алгоритм сложнее — все изображение разбивается на Z, L и U -образные части, и сглаживание происходит смешением цветов пикселей, входящих в каждую такую часть:

Из особенностей — это единственное сглаживание, работающее полностью на процессоре, поэтому практически не влияет на fps в играх при мощном процессоре. Из-за более сложного алгоритма изображение получается более качественным, чем с FXAA, однако до 2x MSAA все еще далеко.

SMAA (Subpixel Morphological anti-aliasing) — смесь FXAA и MLAA. По сути несколько улучшенный MLAA, но работающий на видеокарте (так как процессор для сглаживания подходит гораздо хуже). Дает картинку, сравнимую с MLAA, лучше, чем FXAA (обратите внимание на бочки), однако потребляет больше ресурсов:

Такое сглаживание является хорошей заменой FXAA, и по уровню нагрузки на видеокарту находится между отсутствием сглаживания и 2x MSAA, так что есть надежда, что в будущем игр с ним будет все больше.

TXAA(Temporal antialiasing) — новая технология сглаживания от Nvidia. В отличии от других типов сглаживания, которые работают только с одним кадром (то есть с неподвижной картинкой), это умеет работать с движущимися объектами и хорошо убирает «мельтешение» картинки. По сути является смесью MSAA и SMAA, дает очень качественную картинку, однако немного ее мылит и очень требовательно к ресурсам.

В итоге — какое сглаживание выбрать? Если видеокарта совсем плохо тянет игру, то или оставаться без сглаживания и смотреть на лесенки, или же выбрать FXAA и любоваться на мыло. Если же система по-мощнее, но MSAA все еще не тянет — стоит выбрать MLAA или SMAA. Если видеокарта играючи справилась с 8х MSAA — стоит смотреть на SSAA или TXAA.

[Spin-Off] Anti-Aliasing (AA) в современных играх

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

Anti-Aliasing (AA) в современных играх

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

Чтоб разобраться, что это за зверь такой — “антиалайзинг” — и с чем его едят, надо сперва выяснить, что такое «алайзинг» (aliasing) и откуда он берётся.

Внимание!
Расстановка точек над АА невозможна без некоторой суровой теории. И картинки по ходу тоже будут не красивыми скриншотами из ААА-игр, а специальными синтетическими примерами.
Если тебе такое не по силам / не интересно — крути вниз, к кратким выводам.

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

Допустим, у нас в кадре есть чайник (так уж повелось у 3D-шников: брать его в качестве болванки).

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

Как ты уже, наверняка, понял, лишь одна эта точка раскрашивает весь пиксель. Хотя на самом деле должна влиять вся область, которую он охватывает.
И в компьютерной графике в принципе нет способа «по-честному» вычислить именно цвет области. Только так: стреляем семпл (англ sample, «проба») в каком-то направлении -> находим, куда он попал -> вычисляем там цвет -> назначаем цвет этого семпла соответствующему пикселю.
В результате — возникает сразу 2 проблемы:
1. Любой семпл в любую поверхность может либо попасть, либо нет. Только 2 варианта. Поверхность не может находиться в пикселе частично.
2. В связи с этим — рендеринговый движок может вообще «не увидеть» поверхность в каком-то пикселе. Просто потому, что соответствующий семпл в неё не попал.

Своего врага мы теперь знаем в лицо. Осталось разобраться, как с ним бороться.

Super-Sampling (SSAA)

Так что самое простое и очевидное решение — «стрелять» по несколько семплов в каждом пикселе, а потом усреднять их цвета. Это и есть суперсемплинг.
Решение, что называется, «в лоб» (брутфорсное), и это палка о двух концах. С одной стороны, брутфорс всегда корректнее, чем всякие имитации. С другой — он и ресурсов требует гораздо больше.
Фактически, если мы стреляем в каждом пикселе по 2, 4, 8 семплов — это всё равно что рендерить картинку в разрешении, которое больше во столько же раз. То есть, и производительность падает пропорционально.

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

Так что если ты увидишь в меню варианты вида «SSAA grid» и «SSAA rotated grid» — ты поймёшь, что речь как раз об этом. Grid — это самый первый (самый «дубовый») вариант, все остальные выглядят лучше при том же числе семплов.

Суперсемплинг также называют FSAA (Full-Scene AA), но на мой взгляд это весьма неудачная аббревиатура, т.к. возникают разночтения с FullScreen AA. То есть, с «полноэкранным антиалайзингом» — общим названием вообще всех видов АА как такового.
Ещё помнится, что я встречал в какой-то игре вариант перевода «избыточная выборка» — это тоже SSAA, только глазами надмозгов.

Multi-Sampling (MSAA)

Как видно, MSAA немного размывает картинку. И оттого она получается не столь корректной, как при «честном» SSAA. Но он гораздо быстрее по производительности, что позволяет, скажем, вместо SSAAx2 использовать MSAAx4.

CSAA (Coverage Sampling AA)

Есть также симметричный алгоритм от AMD — CFAA (Custom-Filter AA).

АА как пост-эффект

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

Кроме того, у всех пост-эффектных режимов сглаживания есть одно колоссальное преимущество: они дружат с deffered освещением. Что это такое — как-нибудь в другой раз, но штука эта в современных играх архи-нужная.

Читайте также:  Что значит DNS сервер не отвечает

Из всего длиннющего списка пост-эффектных АА хочется выделить несколько:

FXAA (Fast approXimate AA) — самый эффективный метод по соотношению ресурсы/качество. Он весьма удачно справляется со сглаживанием на краях объектов. На верёвках, естественно, не особо помогает (как и все остальные в этом списке). Но он действительно шустрый. Что и позволило ему доминировать на консолях предыдущего поколения.
К сожалению, по природе своей, он не только сглаживает границы, но и слегка размывает текстуры. Однако это с лихвой оправдывается тем, что он практически бесплатен в сравнении с MSAA/CSAA.

MLAA (MorphoLogical AA) — неожиданный «ход конём». В отличие от всех остальных видов антиалайзинга, этот работает не на видюхе, а на проце. Ощутимо медленнее, чем FXAA, зато и картинка гораздо корректнее.

SMAA (Subpixel Morphological AA) — смесь двух предыдущих. По сути своей — усовершенствованный FXAA, но:
а) он также использует алгоритм MLAA;
б) он очень тесно связан с SSAA/MSAA.
Для игрока это означает следующее: этот режим хоть и медленнее FXAA, но быстрее MSAA. Зато текстуры он не блюрит, и вообще по качеству соизмерим скорее со вторым, чем с первым.
Эпичная видео-демонстрация SMAA от СryTek под саундтрек из TRON: Legacy (vimeo)

TXAA (Temporal AA)

В отличие от SMAA, TXAA немного блюрит (размывает) картинку. Зато характерного «дребезжания» нет вообще.
ИЧСХ, во всех демонстрациях TXAA почему-то сравнивают не с другими режимами антиалайзинга, а с его отсутствием. Мне лично кажется, что в паре SMAA-TXAA выиграет первый, но по ютубу оценить трудно, а у самого прогнать синтетические тесты — нет возможности. Так что, как говорится, на вкус и цвет.

Краткие выводы

0. Отсутствие AA — жуть и безобразие.
1. SSAA — самый правильный, но и самый (до безобразия) тормозной алгоритм.
2. MSAA — относительно правильный, и приемлимо тормозной (если нет тех, что дальше).
3. CSAA — по качеству такой же, как MSAA, но значительно быстрее.
4. FXAA — практически бесплатный, но самый «мыльный».
5. MLAA — такой же, как CSAA/MSAA по качеству, но гораздо быстрее по скорости. И, как и FXAA, совместим с современными технологиями (deferred lighting).
6. SMAA — гораздо лучше по качеству, чем FXAA и MLAA, медленнее их по скорости, но по-прежнему быстрее, чем MSAA.
7. TXAA — адская вундервафля, про которую пока мало чего ясно. Соперничает с SMAA, но при этом стремится по скорости к MSAA, а по качеству — к FXAA. Но она единственная полностью устраняет эффект дребезжания (во всяком случае, так заявлено, а на глаз она это делает ничем не лучше, чем SMAA).

Ну и напоследок — срыв покровов.
Все эти режимы сглаживания в будущем могут оказаться попросту не нужны. Разрешения мониторов растут, уже достигли 4K, и при этом некоторые умудряются играть на нескольких мониторах. На всяких retina display — и вовсе невозможно разглядеть отдельный пиксель.
Так что предлагаю тебе сперва провести простой эксперимент:
1. сделать в фотошопе чёрную картинку с пятью-шестью одиночными яркими пикселями разных цветов. Разрешение картинки — как у твоего монитора. Желательно, если ты в ФШ ткнёшь карандашом в случайные места (чтоб сам не знал, где каждый пиксель).
2. Сохраняешь в PNG, открываешь картинку на весь экран через твой просмотровщик (вроде IrfanView).
3. Садишься на том расстоянии от монитора, на котором ты играешь, и ищешь глазами эти цветные пиксели.

Если на поиск у тебя ушло около минуты или больше — поздравляю! Тебе можно вообще класть болт на все эти навороченные антиалайзинги. По той причине, что ты просто не увидишь лесенку в игре, как бы ты ни старался. Грубо говоря, разрешение твоего монитора — больше, чем разрешение твоего глаза (на эту область).
Включай FXAA как почти-бесплатный — и радуйся бескомпромиссному качеству картинки.

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

FXAA, TXAA, ССАА, а может быть, MSAA – что лучше выбрать в играх?

Сглаживание — это улучшение качества отображаемой графики. Оно существует в разных версиях — FSAA, MSAA, MFA, CSAA, CFAA, MLAA, SMAA, HRAA, FXAA, TXAA, TAA и, наконец, SSAA.

Фото: mos-holidays

Что такое сглаживание?

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

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

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

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

Еще одним улучшением по сравнению с FSAA и MSAA является MFAA. Прежде всего, эта технология хранит данные в гораздо более быстрой оперативной памяти, а не на диске. Благодаря этому можно анализировать каждый последующий кадр, благодаря чему эффекты намного лучше. К сожалению, это работает только на видеокартах Nvidia GeForce серии 900.

Фото: gapm

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

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

Технология, разработанная компанией Nvidia. Она минимально влияет на производительность. В этом случае анализируются сами пиксели. Такой способ работает как на прозрачных краях, так и на тенях. Но если что-то минимально обременяет GPU, то эффект, вероятно, будет не самый лучший — минимум размытие изображения.

TXAA/TAA

Продукт Nvidia. По сравнению с другими решениями, разница заключается в одновременном анализе двух кадров, благодаря чему можно получить более плавный эффект. Кроме того, TXAA/TAA устраняет неровности, т.е. эффект перемещения краев объекта. Как это происходит? Используется та же технология, что и MSAA, но добавляется эффект постобработки.

Еще одно новое решение, разработанное компанией Nvidia. Для этого используется искусственный интеллект, который учится создавать изображения с высоким разрешением из изображений с низким разрешением. Это дает хорошие результаты и очень положительно влияет на плавность игр.

Что лучше?

Здесь нельзя дать однозначного ответа. Многое зависит от самой игры. Но если у вас есть видеокарта GeForce RTX, то стоит переключиться на новейшую технологию DLSS. В противном случае рекомендуется использовать MSAA или SMAA. А если кто-то переживает о производительности, тогда сглаживание можно полностью отключить или выбрать параметр FXAA, который не сильно влияет на количество отображаемых кадров.

Ссылка на основную публикацию
Adblock
detector