Edge detect что это
Ближе к идеалу: Алгоритмы сглаживания изображения и фильтрации текстур
Преобразовать набор текстур и геометрических примитивов в двумерную картинку, которую мы видим на экране, — задача не из легких. Чтобы отобразить один кадр трехмерной игры, графическая плата проделывает массу трудоемких операций. Разбиение трехмерного объекта на примитивы, нанесение на них текстур, применение всех необходимых эффектов — это лишь часть того, чем занимается видеокарта, пока мы наслаждаемся виртуальными приключениями.
Для создания фотореалистичного изображения мало одних только высокополигональных моделей или множества сложных шейдерных эффектов. Здесь не обойтись без операций фильтрации текстур и сглаживания. О них — наш сегодняшний рассказ.
Приводим объяснения некоторых терминов, встречающихся по тексту. Знакомство с этим словариком позволит вам легче ориентироваться в мире современных графических технологий.
Пиксель (Pixel) — самый маленький графический элемент, точка на экране.
Полигон (Polygon) — пространственный многоугольник. В компьютерной графике чаще всего используется его простейший вариант — треугольник. Видеокарта, получив в свое распоряжение трехмерную модель, разбивает ее на полигоны, и все операции проводятся уже над ними.
Тексель (Texel) — мельчайший графический элемент (точка) текстуры.
Текстура (Texture) — двумерное (плоское) изображение определенного формата, предназначенное для нанесения на полигон. Чем выше его разрешение, тем четче и детальней картинка.
Ширина шины памяти — важная характеристика видеокарты. Чем «шире» шина, тем больше информации она может передать за один такт.
Максимальная четкость
Перед выводом какого-либо объекта на экран видеокарта должна точно определить цвет каждой его точки. Допустим, надо отобразить деревянный кубик. В наличии: три грани (остальные не видны), расположенные под определенным углом друг к другу, и текстура дерева, которая нанесена на каждую из них. Цвет экранного пикселя будет вычисляться на основе цветов текселей — точек на текстуре. Для грани, которая расположена перпендикулярно оси зрения, все просто: пикселю на дисплее соответствует тексель на текстуре (с учетом достаточного разрешения текстуры и отображения ее в масштабе 1:1). Для двух оставшихся граней ситуация осложняется тем, что они будут изображены под наклоном: в одной точке на экране будут одновременно находиться несколько текселей текстуры. А уж если объект начнет двигаться или вращаться, сложность определения цвета пикселя возрастет еще больше. И здесь уже не обойтись без помощи текстурной фильтрации.
Простейший способ фильтрации текстур — это, так называемый, point sampling. В рамках данного алгоритма каждому пикселю присваивается цвет того текселя, который расположен ближе всего к его центру. Для более или менее однородных текстур с малым количеством цветов это, может быть, и выход. Однако в современной 3D-графике уже давно используются 32-битные изображения, а это свыше четырех миллиардов оттенков.
Если нанести на кубик 32-битную подробную текстуру и затем применить к нему point sampling, исчезнет большая часть деталей, картинка размоется, и на выходе получится непонятно что. Когда размер текстуры меньше размера грани, будет наблюдаться эффект блочности: сразу несколько близлежащих пикселей обретут цвет одного и того же текселя. Взгляните на незабвенный DOOM, и вы поймете, о чем речь. При вращении куба точки начнут мерцать и перескакивать с одного места на другое. Удручающая картина.
К счастью для всех нас, point sampling давно канул в лета. В конце прошлого века он был вытеснен билинейной фильтрацией, которая на тот момент демонстрировала гораздо лучшие результаты.
Билинейная фильтрация (bilinear filtering) несколько отличается от point sampling: она выдает цвет экранного пикселя, аппроксимируя (усредняя) значения цветов четырех текселей текстуры, расположенных ближе всего к его центру. В минусы уходят мерцание точек и блочность изображения, но боковые грани кубика все равно останутся размытыми. Дело в том, что усреднение выполняется корректно лишь для тех объектов, которые расположены параллельно плоскости экрана. Так что ни о какой четкости не может быть и речи.
Трилинейная фильтрация (trilinear filtering) — это, по сути, та же самая билинейная фильтрация, но выполняющаяся на двух соседних MIP-уровнях. Опс. Новый термин. Давайте ненадолго отвлечемся и выясним, что такое эти самые «MIP-уровни».
В современных компьютерных играх текстуры зачастую обладают очень большими размерами. Представьте, к примеру, бесконечную стену, расположенную почти перпендикулярно плоскости экрана. Для той части стены, которая расположена ближе всего к наблюдателю, надо использовать текстуру высокого разрешения. Только тогда будут видны плавные цветовые переходы и всякие мелкие детали. Однако применять ее же для дальнего сегмента, размеры которого в десятки раз меньше самой текстуры, неразумно: корректно провести фильтрацию в этом случае не получится. К тому же шина памяти у видеокарты не резиновая, так что негоже лишний раз нагружать ее ненужными данными.
Здесь на помощь приходит процесс, именуемый MIP-текстурированием (mip-mapping). Его суть проста: в памяти видеокарты создается ряд уменьшенных копий исходной текстуры, каждая следующая — меньше предыдущей. Эти изображения как раз и называются MIP-уровнями. При нанесении текстуры на полигон видеокарта учитывает расстояние от наблюдателя до объекта и выбирает необходимый MIP-уровень. Иначе говоря, находит текстуру подходящих размеров — такую, чтобы в дальнейшем проводить над ней минимум лишних расчетов.
Ну а теперь вернемся к нашей теме обсуждения. У нас есть два соседних MIP-уровня: две текстуры, одна из которых — уменьшенная копия другой. На каждом из них при помощи билинейной фильтрации выбирается окрас пикселя по цветам четырех текселей. Получаются два значения цвета, усреднив которые мы вычислим итоговый цвет пикселя. Качество немного возрастет, но все проблемы билинейной фильтрации останутся. Вдобавок удвоится нагрузка на видеокарту.
Анизотропная фильтрация (anisotropic filtering), которая с успехом применяется до сих пор, одним махом решила все проблемы. При определении цвета точки она использует большое количество текселей, что гарантирует высокое качество картинки. Вдобавок она учитывает положение полигонов по отношению к экрану и не теряется, когда объект приходит в движение. Уровень анизотропной фильтрации определяется числом текселей, которые обрабатываются при вычислении цвета пикселя. Эти значения вам наверняка знакомы: 2x (16 текселей), 4x (32 текселя), 8x (64 текселя) и 16x (128 текселей). При повышении уровня фильтрации возрастает нагрузка на шину данных видеокарты. Однако для современных графических плат это уже несущественно.
Проблема грубых границ
Итак, видеокарта точно рассчитала цвета всех пикселей, применила все необходимые спецэффекты и вывела наш с вами кубик на экран. Все хорошо, вот только боковые ребра выглядят как-то странно. Вместо прямых линий отображаются ступеньки из множества углов. Виной тому пресловутый aliasing, который в народе также известен как «лесенка».
Основная причина его возникновения кроется в несовершенстве наших мониторов. Сколько ни увеличивай разрешение экрана, картинка на нем все равно будет состоять их точек определенных размеров. Вот и получается, что мы хотим вывести на дисплей окружность, а получаем замкнутую последовательность из отдельных пикселей. Здесь можно провести аналогию с мозаикой: издалека вся она выглядит цельной картиной, но если присмотреться или подойти поближе, будут видны составляющие отдельные кирпичики.
А теперь все то же самое, но с точки зрения 3D-технологий. В режиме «без сглаживания» цвет экранной точки соответствует цвету того объекта, в котором находится ее центр. Простейший пример — граница черного и белого. Когда центр пикселя попадает в черную зону, он окрашивается в ее цвет без учета процентного соотношения белого и черного цветов. При движении объекта все еще хуже: пограничные точки начинают мерцать, становясь то белыми, то черными.
Как с этим бороться? Одно из очевидных решений — обрабатывать изображение таким образом, чтобы «лесенка» не была заметна при обычных разрешениях, то есть повышалась точность передачи оттенков на границах полигонов. Собственно, именно этим и занимается anti-aliasing, или полноэкранное сглаживание.
Впервые некое подобие этого алгоритма продемонстрировала компания 3dfx на примере ее легендарной видеокарты Voodoo. Этот видеоадаптер рисовал полупрозрачные линии на границах объектов, тем самым пытаясь сгладить цветовые переходы. К сожалению, результат подобной процедуры выглядел удручающе. Инженеры 3dfx вскоре осознали свою ошибку и предложили принципиально новый алгоритм, получивший название supersampling (SSAA). Впервые он был использован в видеокартах Voodoo 4/5.
Принцип работы SSAA прост, как все гениальное: кадр сначала строится в увеличенном разрешении, а при выводе на экран сжимается до требуемых размеров. Уровень сглаживания показывает, во сколько раз увеличивается площадь изображения относительно первоначального. Таким образом, если кадр с разрешением 800х600 сглаживается с помощью 4x supersampling, видеокарта проводит все этапы построения изображения на картинке с размерами 1600х1200. При переходе к изначальному разрешению цвета четырех точек, соответствующих одному исходному пикселю, усредняются. Таким образом, пиксель, находящийся на границе черного и белого объектов, может быть светло-серым, серым и темно-серым. Все бы ничего, но нагрузка на видеокарту при использовании метода возрастает неимоверно. Хотите четырехкратный supersampling? Миритесь с четырехкратным падением производительности. К счастью, SSAA — это лишь первый удачный опыт разработчиков видеокарт на пути к идеальному сглаживанию.
Направленное действие
Главный недостаток supersampling в том, что он делает много лишней работы, сглаживая не границы объектов, а все изображение целиком. Разработчики долго корпели над решением этой проблемы и в итоге создали новый, более экономичный метод. Он получил название multisampling (MSAA). Первой видеокартой, которая научилась использовать MSAA, стала революционная GeForce 3 от NVIDIA.
При использовании multisampling кадр все так же строится в увеличенном разрешении, однако над пикселями, находящимися внутри полигонов, никаких расчетов не производится. Другое дело — пиксели на границах объектов. Для них в зависимости от уровня сглаживания строятся две, четыре и более дополнительных точек (sub-samples), по которым и определяется итоговый цвет пикселя. Уровень MSAA соответствует количеству используемых точек: 2x — две, 4x — четыре, и так далее.
Помимо вышеперечисленных режимов GeForce 3 поддерживала также Quincunx и 4х 9-tap. В них при расчете цвета пикселя учитывались цвета не только его sub-samples, но и соседних пикселей. Проще говоря, соседние пиксели также оказывали влияние на конечный цвет, но с меньшим коэффициентом влияния. Картинка в результате получалась красивой, но смазанной.
Следующим знаменательным событием стало появление видеокарты Radeon 9700 и сопутствующей ей технологии ATI Smoothvision 2.0 — именно она повысила планку качества сглаживания, достигаемого при помощи multisampling.
Если в более ранних версиях алгоритма дополнительные точки в режиме 4х располагались самым простым образом (по углам от квадрата, вписанного в пиксель), то ATI повернула этот квадрат на 30 градусов. В чем же секрет успеха?
Дело в том, что разные искажения картинки бросаются в глаза по-разному. И особенно заметны они на «почти вертикальных» и «почти горизонтальных» линиях. А ведь они обычно и составляют значительную часть 3D-сцены. В случае классического расположения дополнительных точек такие линии практически не сглаживались — и именно эту проблему успешно решил метод, предложенный ATI. С выходом GeForce 6800 NVIDIA начала применять аналогичную технологию: «решетка» также повернулась на 30 градусов, только в противоположном направлении.
С этого момента multisampling на долгое время прекратил свое развитие. Были доведены до ума некоторые алгоритмы, появились методики сглаживания прозрачных текстур, однако существенные изменения внесла лишь GeForce 8800.
Передовые методы
Вместе с видеокартами GeForce восьмой серии публике был представлен режим сглаживания coverage sampling (CSAA). Инженеры NVIDIA провели ряд исследований, которые показали, что при расчете цвета «пограничного» пикселя важны не столько значения цвета соседних пикселей, сколько точная информация о расположении пикселя относительно цветовой границы.
В случае CSAA вокруг центра «пограничного» пикселя располагаются не только добавочные точки, определяющие значение цвета, но и так называемые coverage-samples (значения перекрытия), передающие информацию о своем местонахождении. На основе сведений, получаемых от значений перекрытия, видеокарта делает выводы о соотношении площадей объектов, пересекающихся в данном пикселе. Учитывая эти данные, а также цвета перекрывающихся объектов, карта высчитывает итоговый цвет пикселя.
Настройки сглаживания в панели управления NVIDIA ForceWare | |||
Режим | Тип сглаживания | Кол-во sub-samples | Кол-во значений перекрытия |
2х | MSAA | 2 | — |
4х | MSAA | 4 | — |
8х | CSAA | 4 | 8 |
8xQ | MSAA | 8 | — |
16x | CSAA | 4 | 16 |
16xQ | CSAA | 8 | 16 |
При одинаковых степенях сглаживания coverage sampling незначительно уступает multisampling по качеству, зато ресурсов новый метод потребляет намного меньше. 8-кратный MSAA требует увеличения исходного кадра в восемь раз, что с трудом дается даже платам GeForce 8800 GTX/Ultra. А информация о том, попадает ли sub-sample на полигон, выражается всего лишь двумя значениями — да или нет, 1 или 0. Это серьезно экономит память видеокарты и снижает нагрузку на шину данных.
В драйверах ForceWare, предназначенных для восьмого поколения видеокарт NVIDIA, появилось четыре новых настройки сглаживания. Заметим, что полноценный 8-кратный multisampling обеспечивают лишь режимы 8xQ и 16xQ. Они выдают картинку очень высокого качества, но расплатой за красоту стало сильное падение производительности. Режимы 8x и 16x используют только четыре дополнительных точки цвета, а различаются количеством задействованных значений перекрытия: 8 и 16 соответственно.
В ответ на CSAA ATI (точнее, уже AMD) наделила видеокарты семейства Radeon HD 2000 целым рядом новых режимов сглаживания. В Catalyst Control Center появились четыре типа так называемых фильтров: box, narrow-tent, wide-tent, edge-detect. Box — это обычный multisampling, способный работать в режимах 2х, 4х и 8х. Narrow-tent и wide-tent — всего лишь идейные наследники технологии NVIDIA Quincunx: на итоговый цвет пикселя влияют дополнительные точки соседних пикселей.
Настройки сглаживания AMD Catalyst Control Center | ||
Режим | Кол-во внутренних sub-samples | Кол-во внешних sub-samples |
2х narrow-tent | 2 | 2 |
4x narrow-tent | 4 | 2 |
8x narrow-tent | 8 | 4 |
2x wide-tent | 2 | 4 |
4x wide-tent | 4 | 4 |
8x wide-tent | 8 | 8 |
Но самым интересным, безусловно, стал фильтр edge-detect, появившийся только в драйверах Catalyst 7.7. Алгоритм edge-detect находит пиксель, попадающий на границу резкого цветового перехода, и увеличивает количество sub-samples, по которым рассчитывается значение цвета этого пикселя. При этом «пограничные» точки, в которых вариация цветов незначительна, обрабатываются обычным multisampling. Например, в режиме 4х edge-detect количество дополнительных точек для пикселей с контрастными переходами возрастает до двенадцати, а для остальных это значение равно четырем. При режиме 8х edge-detect оба значения удваиваются. По качеству сглаживания технология не уступает coverage sampling, а зачастую и превосходит его. Увы, но при использовании edge-detect наблюдается чудовищное падение производительности. Отметим, что для использования альтернативных режимов сглаживания, вроде CSAA и narrow-tent, необходимо форсировать их из драйверов, так как почти все игры по умолчанию сглаживают картинку посредством multisampling.
И последнее: в грядущем DirectX 10.1 алгоритмы сглаживания стандартизированы, а все DX10.1-карты обязаны их поддерживать. Похоже, что вездесущая Microsoft положила конец гонке технологий, а разница в качестве сглаживания между видеокартами AMD и NVIDIA стала уделом прошлого.
Сглаживание. Какое лучше?
При чем, одновременно можно использовать оба метода сразу. Какой выбрать исходя из эстетических соображений и ресурсов видеокарты, решать конечно индивидуально.
Начнем с того, что AA (Anti-Aliasing, Сглаживание) — способ устранения «ступенчатости» на краях объектов, линий, которые находятся под наклоном и не являются ни строго вертикальными и ни строго горизонтальными. Особенно «лесенка» заметна на стыках полигонов с разными цветами.
В играх может использоваться, когда видеокарте не хватает мощности для вывода изображения в высоком разрешении, где все детали плавные и приятны глазу. Если AntiAliasing отрабатывает хорошо и качественно, то из-за этого страдает производительность, падает фпс в играх. Если сглаживает плохо, то страдает графика, появляется замыливание картинки, артефакты. Поэтому, если есть возможность играть при высоком разрешении и фпс при этом падает не на много, не включайте AA, играйте на высоком. Так же из особенностей, сглаживание «лесенки» может быть включено на уровне настроек видеокарты и при этом еще и на уровне приложений. Эффект при этом «усиливается», если используется первый и второй тип сглаживания. Поэтому если собрались испытывать антиальясинг, убедитесь чтобы оно было включено где то в одном месте, дабы не получить замыленность.
Первый тип
Влияние на фпс прямое, в зависимости от метода и пропускной способности видеопамяти.
SSAA (SuperSample Anti-Aliasing, Избыточная выборка сглаживания) — Самое тяжелое, но и самое качественное и жутко нагружающее видеокарту. В ускорителях применяется регулярная маска размером от 2×1 до 4×4. От этого и появляется нагрузка, при разрешении 1920×1440 и маске 2х2 строится кадр с разрешением 3840х2880 (что требует памяти в 4 раза больше), после этого, усредняются цвета всех суб-пикселей в маске и уже после кадр сжимается и подается на вывод на экран в исходном разрешении.
Существовала технология в основном до DirectX 8, пока не появился MSAA. Из-за большого влияния на фпс от него отказались. Но так как мощность видеокарт перманентно росла, NVIDIA его вернули в строй и используется для игр с поддержкой DX9, DX10, DX11.
Хотите 60 фпс? Тогда сами сможете прикинуть под какой нагрузкой будет работать видеоадаптер. Однако, от картинки вы получите наслаждение. Данный метод рекомендуется обладателям производительных видюх для современных игр.
MSAA (MultiSample Anti-Aliasing, Множественная выборка сглаживания) — пришел на смену SSAA, потребляя меньше ресурсов, но и результат дает немного другой. Изображение по-прежнему рендерится в большем разрешении, но производительность достигнута за счет AA только краев объекта, а не всей картинки как в SSAA. Из минусов, на прозрачных полигонах (стекла, вода..) данный метод не работает, поэтому лесенку иногда можно лицезреть. И так как сглаживается только часть изображения, то можно наблюдать еще и артефакты. Плюс несовместимость с методом отложенного освещения. Нужно помнить, что MSAA выгоднее юзать на низких разрешениях. Чем оно выше, тем накладнее по ресурсам. Так же рекомендуется обладателям топовых видеокарт, с большим количеством видеопамяти.
CSAA (Coverage Sampling Anti-Aliasing, Выборка сглаживания с перекрытием) — это продолжение эволюции SSAA->MSAA->CSAA, который сохранил совместимость с алгоритмами используемых в железе. Улучшение достигнуто за счет того, что в буфер кадра передается еще информация о субсэмпле с соседнего пикселя. Что в итоге помогает рассчитать более качественное сглаживание.
При равных уровнях (4,8..) CSAA и MSAA, качество кадра всегда будет у CSAA выше, а по производительности они друг другу не будут уступать.
FSAA (Full Scene Anti-Aliasing, Полноэкранное сглаживание) — То же что и SSAA, но от AMD и с небольшими отличиями.
QCSAA (Quality Coverage Sampling Anti-Aliasing, Выборка сглаживания с перекрытием) — не трудно догадаться, что это улучшенная версия CSAA, только использует вдвое больше сэмплов для анализа
AAA (Adaptive Anti-Aliasing, Адаптивное сглаживание) — Как известно у MSAA есть проблема при сглаживании краев на прозрачных объектах. Данный способ призван устранить такую проблему. Является синергией мультисемплинга (MSAA) и суперсемплинга (SSAA). Как можно догадаться, данный вид ресурсоемок и рекомендуется обладателям топ карт. Используется у AMD.
TrAA (Transparency Anti-Aliasing, Прозрачное сглаживание) — тоже что и AAA, только от NVIDIA.
TrAAA (Transparency Adaptive Anti-Aliasing, Адаптивное Прозрачное сглаживание) — см. TrAA
TrMSAA (Transparency Multi-Sampling Anti-Aliasing, Прозрачная множественная выборка сглаживания) — использует краевой метод (MSAA) для прозрачных объектов. Разновидность TAAA. Может обозначаться как TMAA
TrSSAA (Transparency Super-Sampling Anti-Aliasing, Прозрачная полноэкранная выборка сглаживания) — использует полноэкранное сглаживание (SSAA) для прозрачных объектов. Разновидность TAAA. Может обозначаться как TSAA
OGSSAA (Ordered Grid SuperSampling Anti-Aliasing, Избыточная выборка сглаживания с упорядоченной решеткой) — Классический SSAA в котором используется решетка с упорядоченной выборкой, выровненная по вертикали и горизонтали.
RGSSAA (Rotated Grid SuperSampling Anti-Aliasing, Избыточная выборка сглаживания с повернутой решеткой) — Все тот же SSAA, с уточнением расположения решетки наклоненной под определенным углом. Данный метод показывает качество немного лучше, чем OGSSAA, при почти горизонтальных или вертикальных краях объектов (слегка наклоненных).
SGSSAA (Sparse Grid SuperSampling Anti-Aliasing, Избыточная выборка сглаживания с разряженной решеткой) — выборки располагаются на регулярной сетке, как в OGSSAA. Но выборка производится лишь на некоторых узлах сетки. Здесь заложен компромиссный подход между производительностью и качеством изображения. Метод используется у NVidia
HRAA (High-Resolution Anti-Aliasing, Полноэкранное сглаживание для высоких разрешений) — метод полноэкранного сглаживания в NVIDIA с 5-ю сэмплами. Качество как 4xSSAA, по нагрузке как 2xSSAA.
HRAA (Hybrid Reconstruction Anti-Aliasing, Гибридное сглаживание) — решение использующее лучшие практики, на основе краевого метода (MSAA, CSAA), постобработки с аналитикой и временного антиалиасинга.
EDAA (Edge Detect Anti-Aliasing, Краевое сглаживание) — так же краевой метод + обсчитываются контрастные переходы еще и на объектах и текстурах. Что в итоге сильнее садит fps. Условно можно назвать это аналогом CSAA, только от AMD. Это разновидность CFAA, описанного ниже.
QAA ( Quincunx Anti-Aliasing, Шахматное сглаживание ) — метод от NVidia, в основе которого лежит учет не только своих субпикселей, но и данные берутся от соседних. При этом, при расчете финального цвета, свой сэмпл имеет вес больше, чем данные с соседних. В расчет берется 5 точек. По качеству 2xQSAA, приблизительно так же выглядит как 4xMSAA.
FAA (Fragment Anti-Aliasing, Частичное Сглаживание) — разработана компанией Matrox. Сглаживание применяемое к краям объектов. Отличие от SSAA и MSAA, в том, что края и сами объекты не увеличиваются в несколько раз по маске. Каждый пиксель делится на 16 частей и если покрытие полное, то пиксель отправляется в кадровый буфер, если неполное, то уходит в отдельный буфер. Такой пиксель считается фрагментированным, при чем в дальнейшем над ним проводится анализ и он видоизменяется. Такая реализация очень сильно экономит ресурсы видеокарты. Но есть и проблема, алгоритм определения краев не всегда корректно обнаруживает те самые края. Проблема с прозрачными объектами во всей красе.
TXAA (Temporal approXimate Anti-Aliasing, Временное приблизительное сглаживание) — технология от Nvidia, которая использует основу MSAA. В формуле расчета используется время, данные по пикселям из предыдущих кадров и данные из обрабатываемой сцены. После чего происходит усреднение по цвету. Это позволяет избавиться от мерцания и дерганья объектов в игре. Вдали дает качественную картинку, однако немного мылит близкие объекты и требования к ресурсам почти как для MSAA, хотя качество при тех же значениях лучше.
Со слов производителя, TXAA 2x сравнимо по качеству с 8xMSAA, но при по затратам производительности сопоставимо как с 2xMSAA, а TXAA 4x выше по качеству чем 8xMSAA, но по затратам производительности сопоставимо как с 4xMSAA. Отлично подходит для сглаживания в динамике.
TSSAA (Temporal Super Sampling Anti-Aliasing, Временная избыточная выборка сглаживания) — Этот метод, что и TXAA, только не привязан к видеокартам NVIDIA и завязана на суперсэмплинг.
Второй тип
Влияние на фпс слабое. Так называемые методы пост-обработки, когда сглаживание происходит в момент вывода изображения на экран.
FXAA (Fast approXimate Anti-Aliasing, Быстрое приблизительное сглаживание) — разработка NVidia. Из названия видно, что это более производительное сглаживание по-сравнению с традиционным MSAA. Алгоритм использует простой способ обнаружения разрыва цветов фигур. В момент вывода изображения на экран усредняются по цвету все соседние пиксели. Это не нагружает видеокарту, но жутко мылит кадр. Далекие и затуманенные объекты в игре будут почти не узнаваемы. Такое сглаживание имеет смысл включать на слабых машинах, ноутбуках, нетбуках и прочих эконом вариантах.
MLAA (MorphoLogical Anti-Aliasing, Морфологическое сглаживание) — условный аналог FXAA. Методика придумана компанией Intel. Алгоритм, ищет пиксельные границы на каждом кадре, похожие на Z, L и U буквы и смешивает цвета соседних пикселей, входящих в каждую такую часть. Алгоритм переведен на использование процессора, а не GPU. Отсюда можно рекомендовать его обладателям слабых видеокарт и с более менее производительным процессором. Из-за более сложного алгоритма изображение получается более качественным, чем с FXAA. Имеется реализация у AMD, но технически может использовать и NVidia. Есть проблема: сглаживание не отрабатывает на прозрачных текстурах. Поэтому в довесок этой постобработки нужно подключать еще и TrAA для улучшения изображения. Время обработки занимает 0,9 мс. Так же есть методики MLAA реализованные на GPU.
CMAA (Conservative Morphological Anti-Aliasing, Консервативное морфологическое сглаживание) — среднее между FXAA и SMAA 1x. Идеально подходит для слабых и средних графических процессоров. Отличие от FXAA происходит за счет обработки линий краев длиной до 64 пикселей. Используется алгоритм, с обрабатыванием только симметричных разрывов цветов, чтобы избежать ненужного размытия. Отличие от SMAA 1x происходит за счет менее полного сглаживания объектов, т.к. обрабатывается меньше типов фигур и обладает повышенной временной стабильностью, т.е меньше мерцаний объектов.
MFAA (Multi-Frame Sampled Anti-Aliasing, Мультикадровое сглаживание) — производится выборка двух сэмплов для каждого пикселя из текущего кадра и двух сэмплов из предыдущих, после чего применяетя фильтр. MFAA, по сути, соответствует 2xMSAA по нагрузке на видеокарту, но даёт качество картинки на уровне 4xMSAA. При этом этот метод работает примерно на 30 процентов быстрее. Падение производительности из-за фильтра минимальное. Для MFAA необходим определенный уровень частоты кадров, чтобы сглаживание можно было рассчитывать на основе двух кадров. NVIDIA утверждает, что частоты кадров 30-40 fps должно быть достаточно.
GPAA (Geometric Post-process Anti-Aliasing, Сглаживание с геометрической постобработкой) — в работе техники заложено копирование буфера с отрендеренными данными и повторной обработки ребер.
GBAA (Geometry Buffer Anti-Aliasing, Сглаживание с буфером геометрии) — усовершенствованный GPAA, в котором границы обрабатываются несколько иначе. За счет чего улучшена производительность.