Открыть сервис

FXAA

FXAA (от англ. Fast Approximate Anti-Aliasing — быстрое приближённое сглаживание) — это метод постобработки изображения, используемый в компьютерной графике для сглаживания неровных краёв (алиасинга) на трёхмерных объектах. Разработан компанией NVIDIA в 2009 году как альтернатива более ресурсоёмким методам сглаживания, таким как MSAA (мультисемплинг). FXAA работает на этапе постобработки, то есть после полного рендеринга кадра, анализируя готовое изображение и сглаживая контрастные переходы между пикселями.

Принцип работы

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

Основные этапы работы FXAA:

  1. Обнаружение краёв: Алгоритм вычисляет разницу яркости между текущим пикселем и его соседями. Если разница превышает заданный порог, пиксель считается частью края.
  2. Определение направления края: Анализируется локальный градиент яркости, чтобы понять, как проходит край — горизонтально, вертикально или под углом.
  3. Сглаживание: Вдоль найденного направления выбираются несколько пикселей, и их цвета усредняются с весами, зависящими от расстояния до края. Результат записывается в исходный пиксель.

История

FXAA был представлен компанией NVIDIA в 2009 году как часть технологии NVIDIA 3D Vision. Первоначально метод предназначался для стереоскопических игр, где производительность особенно критична. В 2011 году NVIDIA опубликовала исходный код FXAA под лицензией BSD, что позволило разработчикам игр и графических движков интегрировать его в свои продукты.

В 2012 году вышла вторая версия — FXAA 3.11, которая включала две вариации: Quality (качественная) и Console (оптимизированная для консолей). Версия Console отличалась меньшим количеством проходов и более низкой нагрузкой на процессор. В 2013 году была представлена FXAA 3.12, которая улучшила обработку текстур с высоким контрастом и уменьшила размытие.

Преимущества и недостатки

Преимущества

  • Высокая производительность: FXAA — один из самых быстрых методов сглаживания. Он не требует дополнительной видеопамяти и почти не снижает частоту кадров (FPS). Нагрузка на GPU минимальна, так как алгоритм работает с уже готовым изображением.
  • Простота реализации: FXAA не требует изменений в рендеринге сцены. Он применяется как пост-эффект, что упрощает его интеграцию в существующие игры и движки.
  • Сглаживание всех типов краёв: В отличие от MSAA, который сглаживает только геометрические края, FXAA обрабатывает также алиасинг на текстурах, шейдерах и эффектах (например, на траве или волосах).
  • Кроссплатформенность: FXAA работает на любом графическом оборудовании, поддерживающем пиксельные шейдеры (Shader Model 3.0 и выше), включая старые видеокарты и консоли.

Недостатки

  • Размытие изображения: FXAA сглаживает не только края объектов, но и мелкие детали, такие как текстуры, шрифты и линии. Это приводит к потере чёткости, особенно на низких разрешениях.
  • Сглаживание анизотропных текстур: Алгоритм может ошибочно принять текстурный шум за край и сгладить его, что ухудшает детализацию.
  • Отсутствие сглаживания субпиксельных объектов: FXAA не может сгладить объекты, размер которых меньше одного пикселя (например, тонкие линии или далёкие детали), так как они не создают контрастного перехода на уровне пикселей.
  • Зависимость от порога: Качество сглаживания сильно зависит от настройки порога обнаружения краёв. Слишком низкий порог приводит к размытию всего изображения, слишком высокий — к пропуску краёв.

Сравнение с другими методами сглаживания

МетодТипПроизводительностьКачество сглаживанияРазмытиеТребования к оборудованию
FXAAПостобработкаВысокаяСреднееСильноеНизкие
MSAAМультисемплингСредняяВысокоеМинимальноеСредние
SMAAПостобработкаСредняяВысокоеУмеренноеСредние
TAAВременное сглаживаниеСредняяОчень высокоеУмеренноеВысокие
SSAAСуперсемплингНизкаяМаксимальноеОтсутствуетОчень высокие

FXAA уступает по качеству современным методам, таким как TAA (временное сглаживание) и SMAA (субпиксельное морфологическое сглаживание), но превосходит их по скорости. В отличие от SSAA, который рендерит изображение в более высоком разрешении, FXAA не требует дополнительной вычислительной мощности, что делает его идеальным для слабых систем.

Применение

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

Примеры игр, поддерживающих FXAA:

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

Критика

Основная критика FXAA связана с размытием изображения, которое особенно заметно на статичных кадрах и при просмотре текста. Многие игроки отключают FXAA в пользу более качественных методов, таких как MSAA или TAA, если позволяет производительность. В профессиональной среде FXAA считается устаревшим методом, уступающим более современным алгоритмам постобработки, таким как SMAA и CMAA (консервативное морфологическое сглаживание).

Будущее

С развитием графических процессоров и появлением более эффективных методов сглаживания, таких как DLSS (Deep Learning Super Sampling) от NVIDIA и FSR (FidelityFX Super Resolution) от AMD, FXAA постепенно вытесняется. Однако благодаря своей простоте и низким требованиям к ресурсам, он остаётся востребованным в инди-играх, на мобильных платформах и в системах с ограниченной производительностью.

Источники

  • Timothy Lottes. FXAA: Fast Approximate Anti-Aliasing. NVIDIA Corporation, 2009.
  • Timothy Lottes. FXAA 3.11: Fast Approximate Anti-Aliasing. NVIDIA Corporation, 2012.
  • Juan Miguel de Joya. Anti-aliasing in Computer Graphics. Springer, 2015.
  • Документация к графическому движку Unity (версия 2019.4).
  • Статья «Anti-aliasing» в энциклопедии «Википедия» (русскоязычная версия, 2023).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →