Быстрое приблизительное сглаживание - Fast approximate anti-aliasing
Быстрое приближенное сглаживание (FXAA) это экранное пространство сглаживание алгоритм, созданный Тимоти Лоттес в NVIDIA.[1] Его также называют быстрое сглаживание сэмплов (FSAA).
FXAA 3 выпущен под всеобщее достояние лицензия. Более поздняя версия, FXAA 3.11, выпущена под лицензией BSD с тремя пунктами.[2]
Описание алгоритма
- Входные данные - это визуализированное изображение и, необязательно, данные яркости.[3]
- Получите данные о яркости.[3] Эти данные могут быть переданы в алгоритм FXAA с этапа рендеринга в виде альфа-канала, встроенного в изображение, подлежащего сглаживанию, вычисленного из визуализированного изображения или аппроксимированного с использованием зеленого канала в качестве данных яркости.[3]
- Найдите высококонтрастные пиксели с помощью фильтра высоких частот, который использует данные яркости.[3] Обнаруженные низкоконтрастные пиксели исключаются из возможности дальнейшего изменения FXAA.[3] Фильтр высоких частот, исключающий пиксели с низкой контрастностью, можно настроить для баланса скорости и чувствительности.[3]
- Используйте контраст между соседними пикселями, чтобы эвристически найти края и определить, находятся ли края в горизонтальном или вертикальном направлении.[3] Направление наложения пикселя будет перпендикулярно направлению края этого пикселя.[3]
- Вычислите один коэффициент наложения для высококонтрастного пикселя, проанализировав данные яркости в сетке пикселей 3x3, при этом рассматриваемый пиксель является центральным пикселем.[3]
- Выполните поиск вдоль обнаруженной кромки, чтобы определить, как долго эта кромка длится и в каком направлении идет фактическая кромка, когда обнаруженная горизонтальная или вертикальная кромка заканчивается, чтобы учесть фактическое направление кромки для расчета второго коэффициента смешивания.[3] Этот шаг можно настроить для повышения качества путем увеличения разрешения поиска и того, насколько далеко идет поиск до прекращения поиска конца края, или для большей скорости, уменьшив и то и другое.[3]
- Смешайте пиксель, используя выбранное направление наложения и максимум обоих рассчитанных факторов наложения.[3]
Сравнение
Основное преимущество этого метода перед обычным пространственным сглаживанием состоит в том, что он не требует большого количества вычислительная мощность. Это достигается за счет сглаживания нежелательных зубчатых краев ("неровности ")[4] в качестве пиксели, в зависимости от того, как они появляются на экране, а не анализировать 3D модель сам, как в обычном пространственном сглаживании.[1] Поскольку он не основан на фактических геометрия, сгладит не только края между треугольниками, но и ребра внутри альфа-смешанные текстуры, или в результате пиксельный шейдер эффекты, которые невосприимчивы к воздействию мультисэмпловое сглаживание (MSAA).[5]
Минусом является высокая контрастность. карты текстур размыты; FXAA должен применяться перед оказание HUD элементы игры, чтобы она не повлияла и на них; и что многоугольные детали размером меньше одного пикселя, которые были бы захвачены и визуализированы с помощью MSAA и SSAA, не будут захвачены и визуализированы только FXAA.
Смотрите также
- Морфологическое сглаживание
- Мультисэмпловое сглаживание
- Анизотропная фильтрация
- Временное сглаживание
- Пространственное сглаживание
Рекомендации
- ^ а б Лоттес, Тимоти (февраль 2009 г.). «FXAA» (PDF). NVIDIA. Получено 29 сентября 2012.
- ^ "opengl - Использование NVidia FxAA в моем коде: Какая модель лицензирования?". Переполнение стека.
- ^ а б c d е ж грамм час я j k л Брось, Джаспер. «FXAA: сглаживание пикселей». Получено 21 июля, 2020.
- ^ Ван, Джеймс (19 марта 2012 г.). «FXAA: сглаживание на скорости деформации». NVIDIA. Получено 3 января, 2013.[мертвая ссылка ]
- ^ Этвуд, Джефф (7 декабря 2011 г.). «Быстрое приближенное сглаживание (FXAA)». Кодирование ужасов. Получено 30 сентября, 2012.