Сглаживание FXAA и SSAA: что это в играх и за что оно отвечает?
Многие , наверное , встречали в играх, а точнее , в их настройках, такие значения , как «FXAA», «SSAA», «MSAA» или еще что-то подобное, но при этом не понимали , что это такое . Просто включали эти опции наугад и замечали, что картинка в играх становилась лучше. Логика даже подсказывала, что эти значения как-то связаны со сглаживанием изображения. Но «змей сомнения» сделал свое дело , и вы все-таки задались вопросом : «Ч то это такое за FXAA и SSAA в играх? ». Поэтому вы оказались на этой странице, а значит , будем разбираться в этих терминах вместе.
Что это такое — FXAA и SSAA в играх
-
Увеличивается разрешение экрана. При таком подходе количество пикселей на квадратный сантиметр увеличивается, а значит , вероятность увидеть «ступенчатые» линии уменьшается. Именно на этой технологии основываются 4К-изображения.
-
Сглаживание. Это более «старый» и проверенный подход, который появился еще в 70-х годах. В то время создать экран с разрешением 4К не представлялось возможным, поэтому проблему решали как могли. Суть сглаживания сводится к тому, что на соседних от «ступенчатых» пикселях добавляют цвета и градиенты, что визуально смягчает «ступенчатые» объекты.
Как работает сглаживание SSAA и FXAA
Сглаживание происходит по конт у ру «ступенчатого» объекта путем добавления к близлежащим пикселям оттенков соседнего цвета. То есть пикселям, которые находятся ближе всего к контуру , задают цвет, который является средним оттенком между цветом самого объекта и его окружением. По итогу мы не видим «рваных» и «ступенчатых» границ объектов, но наблюдаем небольшую «размытость».
Применение подбора цвета — это один алгоритм сглаживания, он применяется для сложных объектов. Но для боле е простых объектов существуют другие алгоритмы сглаживания. В общем , алгоритмов сглаживания много. Одни из них применяются в процессе разработки самой игры, другие — прямо в процессе игры. Одни «питаются» мощностью видеокарты, другие — мощностью процессора.
-
Берется некое изображение с размерами , превышающими необходимые в 2, 4, 6, 8 и больше раз.
-
Потом это изображение «сжимается» до размера вашего экрана.
FXAA — это Fast a pproXimat e Anti — Aliasing. Это сглаживание придумала компания NVIDIA. Его принцип основан на поиске резкой смены цветов на изображении и сглаживании именно этих проблемных участков. То есть сглаживается не все изображение целиком, а лишь его проблемный участок.
У этого подхода есть один недостаток — очень сильно замыливаются мелкие и отдаленные объекты, вплоть до того, что становится невозможным различить их на общей сцене.
Сглаживание FXAA самое нетребовательное к ресурсам компьютера, в этом плане оно даже экономнее , чем MSAA. Но так как общее качество картинки от него страдает, то обычно его включают на компьютерах со слабой видеокартой, чтобы хоть немного сбавить неэстетичность «ступенчатых» изображений.
Заключение
Сглаживание FXAA и SSAA в играх — это эффективный костыль от создателей игр. Квадратное в круглое впихнуть невозможно, но вот обмануть человеческий глаз — вполне . Именно этим и занимаются все технологии по сглаживанию. Не важно , как они называются, всех их объединяет одна идея — заставить человека поверить в то , что квадратное тоже бывает круглым, и при этом найти идеальный баланс между качеством картинки, качеством сглаживания и нагрузкой на компьютер.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Что такое сглаживание в играх и какое лучше выбрать
Мы произвели более 25 тысяч компьютеров для геймеров, творческих профессионалов, блогеров и стримеров, игровых клубов, гарфических дизайнеров и видео монтажеров. Каждый компьютер мы создаем с восхитительным дизайном, высокой производительностью, безупречным качеством и персональным сервисом.
Для начала работы нам надо поговорить. Достаточно рассказать о целях и пожеланиях по новому компьютеру, указать контакты, и мы свяжемся, чтобы все обсудить.
Как вам удобнее общаться:
Когда мы заходим в настройки графики любой современной игры, то видим множество параметров. Некоторые из них у нас не вызывают вопросов. Например, качество текстур, очевидно, отвечает за то, насколько детализированными будут внутриигровые модели. Но в графических настройках встречаются параметры, названия которых нам совершенно ни о чем не говорят. И одним из таких является сглаживание. Далее мы расскажем, зачем нужна данная технология, как ее включить, а также как работают наиболее популярные алгоритмы.
Но перед этим оговоримся, что для простоты восприятия мы опустим сложные нюансы. Рядовому геймеру нет необходимости подробно знать о каждом алгоритме сглаживания. Наша задача – донести до вас информацию так, чтобы вы научились легко настраивать графику в видеоиграх.
Что такое сглаживание
и для чего нужно
Чтобы понять, для чего нужно сглаживание в играх, кратко познакомимся с конструкцией дисплеев. Изображение на современных мониторах строится при помощи маленьких квадратных пикселей. К примеру, у дисплеев Full HD их количество составляет 2 073 600 штук. Когда нам нужно изобразить прямую линию, никаких проблем нет. Но если нам требуется построить диагональ, то возникает эффект «зубчатости». Его также называют «ступенчатостью» или «лесенками», но научное название – «алиасинг».

Избавиться от этого эффекта можно тремя способами:
- перестать пользоваться жидкокристаллическими мониторами;
- увеличить максимальное число пикселей на дисплее;
- разработать алгоритм для устранения алиасинга.
От первого варианта человечество напрочь отказалось. Дело в том, что ЖК-дисплеи (LCD) формируют крайне качественную картинку. Мониторы с электронно-лучевой трубкой, которые были популярны ранее, хоть и не имели «лесенок», но значительно уступали по детализации.
Второй вариант очень сложен в реализации. Изготавливать электронику с миллионами крохотных компонентов невероятно трудно. К тому же увеличение пикселей значительно повысит стоимость производства. Многие пользователи просто не смогут себе позволить настолько дорогую технику. Да, начиная с 2013 года в магазинах начали появляться мониторы и телевизоры с разрешением 4K. Они имеют примерно на 6 миллионов пикселей больше, чем у Full HD дисплеев. Но их стоимость, а также необходимость покупать топовые видеокарты отпугивают геймеров даже в 2023 году. Согласно статистике Steam, лишь 2,6% пользователей имеют 4K мониторы. Но высокая цена – это только одна из проблем. Другая заключается в том, что дисплеев с разрешением 4K все равно недостаточно для устранения алиасинга. «Ступенек» становится гораздо меньше, но они не пропадают полностью. А о массовом использовании 8K дисплеев не может идти никакой речи.
И остается третий вариант – разработать программу по устранению «лесенок». Графические инженеры именно так и поступили. Они дали этой технологии название «Anti-Aliasing» или по-русски «Сглаживание». Таким образом, сглаживание – это алгоритм, который устраняет эффект «ступенчатости» на границах кривых линий.
Какие виды сглаживания в играх бывают
Казалось, что избавиться от алиасинга будет просто. И действительно, программисты относительно быстро нашли способы его устранения. Разработанный метод отлично справлялся с «зубчатостью». Однако у этой разработки был всего один недостаток – она требовала невероятно много вычислительной мощности. Игровых разработчиков это совершенно не устраивало, а потому графические программисты начали искать альтернативные способы исправления этого эффекта. И все эти поиски привели к тому, что на сегодняшний день созданы десятки самых разных алгоритмов. Более того, они продолжают разрабатываться и совершенствоваться. На дворе 2023 год, но проблема сглаживания в современных играх по-прежнему не решена.
А все дело в огромном количестве недостатков, которые присутствуют у алгоритмов. Необходимость в дополнительной вычислительной мощи – это только одна из проблем. Дело в том, что в компьютерной графике существует несколько видов алиасинга. И все алгоритмы хорошо справляются с одними их типами, но плохо с другими. Не нужно знать все от и до о каждом виде алиасинга, чтобы правильно настраивать графику в играх. Но давайте кратко ознакомимся с ними:
- Геометрический алиасинг. Возникает при построении наклонных линий. Например, когда перед нами стена, мы видим «лесенки» на ее границах.
- Подпиксельный алиасинг. Возникает при отображении узких объектов. К примеру, линии электропередач просто исчезают на расстоянии.
- Субпиксельный алиасинг. Возникает при сближении узких объектов друг к другу. Например, удаляясь от решетки, ее прутья начинают превращаться в «кашу».
- Алиасинг прозрачности. Возникает во время отображения множества мелких объектов – при удалении от дерева, листва начинает «мерцать».
- Текстурный алиасинг. Возникает при рассмотрении текстур под углом – чем дальше текстура ландшафта, тем сильнее она размывается.
- Шейдерный алиасинг. Возникает при создании контрастного освещения. К примеру, яркое солнечное отражение может создавать квадратные артефакты.
В итоге желание найти баланс между производительностью и эффективностью породило десятки типов сглаживания. Однако к 2023 году разработчики отмели многие из них, и сегодня используются только следующие виды сглаживания в играх:
- Super Sampling Anti-Aliasing (SSAA);
- Coverage Sampling Anti-Aliasing (CSAA);
- Temporal Anti-Aliasing (TAA);
- Fast approXimate Anti-Aliasing (FXAA);
- Morphological Anti-Aliasing (MLAA);
- Subpixel Morphological Anti-Aliasing (SMAA);
- Deep Learning Super Sampling (DLSS).
Все эти слова и аббревиатуры выглядят страшно только на первый взгляд. Далее мы опустим множество технических нюансов и сфокусируемся только на принципе работы этих технологий. Вы поймете, что ничего суперсложного здесь на самом деле нет.
SSAA (Super Sampling Anti-Aliasing)
Помните, мы говорили, что разработчики относительно быстро нашли метод по устранению «лесенок»? Так вот, этим самым методом был Super Sampling Anti-Aliasing или сокращенно SSAA (у нас его принято называть суперсэмплингом). Чтобы создать алгоритм по удалению «ступенек», разработчики придумали помещать в центр пикселя виртуальную точку. Ей дали название «Sample». Если диагональная линия пересекала эту точку – пиксель загорался, если не пересекала – пиксель не выводил изображение.

Как видно на схеме, построить таким способом нормальный треугольник, состоящий из диагональных отрезков, не получается. И тогда разработчики решили помещать внутрь пикселя не один сэмпл, а сразу четыре. Причем они располагались не в одном месте, а в разных.
Но для чего использовать несколько точек вместо одной? Оказалось, это необходимо, чтобы регулировать степень яркости пикселя. Принцип работы следующий:
- линия пересекает сразу все 4 сэмпла – пиксель загорается на полную;
- линия пересекает только 3 сэмпла – пиксель загорается на три четверти;
- линия проходит через 2 сэмпла – пиксель работает наполовину;
- линия проходит только через 1 сэмпл – пиксель загорается всего на треть;
- линия не пересекает ни один из сэмплов – пиксель вообще не загорается.

Простейшая манипуляция с «виртуальными точечками» великолепно решала проблему алиасинга. И пока инженеры праздновали победу, геймдизайнеры испытывали ужас. Да, алгоритм SSAA действительно устранял «лесенки» в компьютерной графике. Но делал он это чудовищно высокой ценой – программа очень сильно нагружала графический процессор. А все потому, что каждый сэмпл воспринимается системой как самостоятельный пиксель. При настройках графики SSAA, к примеру, на «4X», создается изображение в 4 раза больше исходного, а затем сжимается до разрешения монитора. Нетрудно догадаться, что нагрузка на ГПУ также увеличивается в 4 раза.

И тогда графические инженеры отправились на поиски нового алгоритма. Они быстро заметили, что алиасинг возникает только на границах объектов. А потому зачем сэмплировать всё изображение? Почему бы не рассчитать только те пиксели, которые находятся на границах объектов? Именно так и поступили. Новая технология получила название «MultiSample Anti-Aliasing» или MSAA (у нас ее принято называть мультисэмплингом). В большинстве случаев свежий алгоритм действительно требовал намного меньше мощности. Однако в видеоиграх по-прежнему оставались сцены, где MSAA был настолько же «прожорливым», что и SSAA. Например, в лесах с большим количеством растительности. Также мультисэмплинг значительно уступал суперсэмплингу по эффективности. MSAA боролся только с геометрическим алиасингом, но другие типы «ступенчатости» он не затрагивал. Чтобы изменить это, программисты создали улучшенную версию мультисэмплинга, о которой мы поговорим далее.
CSAA (Coverage Sampling Anti-Aliasing)
CSAA представляет собой улучшенный вариант MSAA. Так как этот тип сглаживания почти не применяется в современных играх, мы не будем подробно о нем говорить, а только в общих чертах. Алгоритм CSAA, как и MSAA, работает на границах объектов. Но помимо обычных сэмплов, он также использует дополнительные. Но за что они отвечают? Эти вспомогательные сэмплы собирают информацию о соседних пикселях для построения более качественного изображения. Причем они почти не нагружают систему – максимальный режим CSAA по производительности равен MSAA 4X. При этом качество итоговой картинки аналогично MSAA 8X. Но, несмотря на эти показатели, игровые разработчики по-прежнему были недовольны высокой требовательностью. А потому графические инженеры приступили к созданию новых типов сглаживания, не использующих сэмплы в своей работе.
TAA (Temporal Anti-Aliasing)
Именно этот алгоритм является стандартом для игровой индустрии. Ранее мы говорили, что все типы сглаживания хорошо справляются с одними видами алиасинга, но плохо с другими. Так вот, TAA-сглаживание – это единственный в мире алгоритм, который эффективно борется со всеми типами алиасинга. Причем делает он это ценой крайне малой производительности. При включении TAA-сглаживания FPS в играх падает всего на 5-10%. Это в десятки раз меньше, чем у SSAA и MSAA. Также темпоральное сглаживание работает на этапе пост-процессинга. Это значит, что игровым разработчикам не нужно внедрять алгоритм в свой движок. Достаточно переместить файлы сглаживания в проект и написать пару строчек кода.
Изображение на мониторах строится при помощи кадров, которые с высокой скоростью сменяют друг друга. Чем больше этих кадров сменяется за одну секунду, тем плавнее будет изображение. Эта характеристика называется «Frames Per Second» или сокращенно «FPS». Работа TAA-сглаживания как раз осуществляется за счет этих кадров:
- алгоритм запоминает часть пикселей от предыдущего изображения;
- использует их для реконструкции нового;
- итоговое расположение пикселей усредняется;
- создается сглаженная картинка.
Да, это метод работает настолько элементарно, насколько звучит. Никаких манипуляций с точками, сэмплами или выборками. Просто берется часть предыдущего кадра и совмещается с новым. Создали TAA – гениальные разработчики из компании NVIDIA. Спросите, почему гениальные? Да потому, что только им пришла в голову простейшая мысль – использовать отработанные кадры с пользой.
Но неужели у TAA-сглаживания нет недостатков? Есть, но их всего два: «гостинг» и «мыло». Под «гостингом» подразумевается образование шлейфов у быстро движущихся объектов. Возможно, вы замечали, как в современных играх падающая листва оставляет за собой след. Вот именно это и называется гостингом (от слова «Ghost», в переводе – «призрак»). К сожалению, избавиться от этого эффекта полностью невозможно. Но разработчикам удалось значительно снизить его интенсивность. Также помогает увеличение частоты кадров. Например, при 30 FPS гостинг гораздо сильнее, чем при 60. Под «мылом» подразумевается потеря детализации. Картинка становится смазанной и расплывчатой. Полностью избавиться от этого явления невозможно. Однако интенсивность «мыла» можно снизить несколькими способами:
- Увеличить разрешение. При Full HD «мыла» будет много, при 2K – меньше, а при 4K оно почти исчезнет.
- Наложение резкости. Этот эффект выделяет границы объектов, что делает их более детализированными. Интенсивность «мыла» также зависит от работы графических программистов. Например, в Battlefield 5 и Days Gone используется одинаковое TAA-сглаживание. Однако в первой игре «мыла» очень много, а вот во второй – гораздо меньше. Почему так? Потому что некоторые разработчики лучше справляются с реализацией некоторых технологией.
FXAA (Fast approXimate Anti-Aliasing)
Это сглаживание пользовалось большой популярностью до изобретения TAA. А все потому, что оно легко встраивалось в игру и требовало мало производительности (FPS падал на 2-3%). Кстати, его также разработала компания NVIDIA. Алгоритм FXAA устраняет алиасинг путем сравнения яркости и контрастности соседних пикселей. Например, очевидно, что стена и небо имеют разную яркость. Алгоритм распознает их границу и сглаживает обнаруженную линию. Несмотря на преимущества и простоту работы, FXAA имеет множество недостатков. Оно не справляется со многими типами алиасинга и сильно «мылит» изображение.
MLAA (MorphoLogical Anti-Aliasing)
Как и FXAA, данный тип сглаживания анализирует цвета между соседними пикселями. Его разработала компания Intel, а все вычисления осуществляются не на видеокарте, а на центральном процессоре. Технология MLAA устраняет «лесенки» в 3 этапа:
- сначала обнаруживаются резкие цветовые переходы (аналогично FXAA);
- далее они распознаются с помощью специального алгоритма;
- и в конце распознанные пиксели смешиваются друг с другом.
Сглаживание MLAA относительно неплохо справляется с «зубчатостью» и делает это ценой небольших мощностей. Однако данный алгоритм имеет два ключевых недостатка: «замыливание» и невозможность работы с мелкими объектами. Чтобы исправить эти проблемы, разработчики решили модифицировать данную технологию. В результате получился новый вид сглаживания, о котором речь пойдет далее.
DLSS (Deep Learning Super Sampling)
Объяснить простыми словами, как работает этот тип сглаживания, сложно. А потому мы дадим только самую общую информацию. Итак, все технологии антиалиасинга требуют вычислительной мощности. Одним алгоритмам нужно много производительности, а другим – мало. Но существует всего один тип сглаживания, который не отнимает FPS, а, наоборот, прибавляет его. Звучит как волшебство, не правда ли? Но на деле это реальность. Речь идет, конечно же, о DLSS, или «сглаживании на основе глубинного обучения» от компании NVIDIA.
В основе данной технологии лежит нейронная сеть. Если опустить сложные технические подробности, то это математическая модель, которая может самостоятельно обучаться. Для работы нейросети требуется перемножать множество матриц данных. Но видеокарты понятия не имеют, как это делать. Поэтому NVIDIA добавила в свои устройства специальные вычислительные блоки под названием «тензорные ядра». За счет именно этих ядер работает DLSS-сглаживание.
Так почему у нас FPS прибавляется, а не отнимается? Дело в том, что при включении DLSS на ваш монитор выводится изображение с меньшим разрешением. Например, если у вас дисплей Full HD, и вы включаете DLSS на «качество», то игра работает не в 1080p, а в 720p. Но как это возможно, если в настройках графики стоит разрешение 1920×1080p? Вот именно в этом и состоит работа нейросети. Она «дорисовывает» изображение до того разрешения, которое у вас выставлено в настройках игры.
DLSS-сглаживание обладает теми же преимуществами и недостатками, что и TAA. А все потому, что временный антиалиасинг лежит в основе этой технологии. Если упростить до максимума, то DLSS – это тот же TAA, но с прибавкой производительности.
Также недавно вышла отдельная версия DLSS – DLAA. Ее отличие состоит в том, что она не снижает разрешение картинки. Нейросеть используется для того, чтобы сделать картинку качественнее. За счет этого FPS не повышается, а качество итогового изображения почти не отличается от стандартного TAA.
Какое сглаживание лучше выбрать
Лучшее сглаживание сегодня – это DLSS. Однако данная технология является эксклюзивом видеокарт NVIDIA GeForce RTX. Если игра не поддерживает DLSS, у вас другая карта или вам просто не нравится, как происходит сглаживание картинки, то включайте TAA. Почти во всех современных проектах оно используется по умолчанию. Но, предположим, вы играете в киберспортивные проекты, и вам нужно избавится от «мыла». Тогда используйте SMAA.
Кстати, не забывайте, что «мыло» можно уменьшить, увеличив разрешение картинки. Во многих играх есть такой параметр – «масштаб разрешения». По умолчанию он выставлен на 100%. Если повысить его, например, до 130%, то игра будет работать в разрешении на 30% больше исходного.
Давайте разберемся на примере. Предположим, у вас монитор с разрешением 1920×1080p, и вы выставляете масштаб разрешения на 130%. Таким образом, изображение будет выводится не в 1920×1080px, а в 2496×1404px. Но имейте в виду, что нагрузка на видеокарту также увеличится на 30%.
Еще частично устранить «мыло» помогает эффект резкости. Его можно добавить в любую игру, если у вас установлена программа GeForce Experience. Она позволяет не только вовремя обновлять драйверы видеокарт NVIDIA, но и накладывать графические эффекты. Зайдите в игру, нажмите сочетание клавиш Alt+F3 и добавьте резкость. Ее интенсивность настраивается с помощью ползунка.
В старых играх современных типов антиалиасинга не будет. Чаще всего придется довольствоваться мультисэмплингом. Выставляйте его на значение 2X или 4X. А если мощность вашей видеокарты позволяет, то можете попробовать установить MSAA на 8X
Компьютеры HYPERPC и современные типы сглаживания
В системы HYPERPC устанавливаются графические ускорители от компании NVIDIA серии RTX. Это значит, что вам будет доступно любое сглаживание, в том числе и DLSS. Оно в разы повышает частоту кадров и позволяет играть с новейшими графическими технологиями. Даже трассировка лучей не станет для вас особой проблемой. С компьютерами HYPERPC вам открывается полноценный доступ в мир гейминга на максимальных настройках графики.
Как работает рендеринг 3D-игр: сглаживание с помощью SSAA, MSAA, FXAA, TAA и других методик

3D-игры состоят из тысяч, если не миллионов разноцветных прямых линий и других рёбер. А из-за того, как происходит их обработка для вывода на экран, эти линии иногда могут выглядеть изломанными и искажёнными. В пятой части нашего исследования рендеринга в 3D-играх мы расскажем, какие методики используются для сглаживания рёбер миров, в которые мы играем. Хорошие новости — на этот раз математики будет не так много!
Часть 1: обработка вершин
Кто виноват
С математической точки зрения, искажение возникает при преобразовании непрерывного «сигнала» в дискретный набор значений при помощи сэмплирования. Растеризация прямых или искривлённых линий вызывает пространственные искажения — эти геометрические формы, по сути, состоят из бесконечного количества точек между двумя точками пространства, и их отображение при помощи фиксированного количества пикселей всегда приводит к аппроксимации этой линии вне зависимости от количества используемых пикселей.
Так как пикселизированная версия линии больше не является истинной линией, её перемещение или размещение рядом с другими фигурами создаёт множество визуальных артефактов, которые мы и называем «искажениями» (aliasing).
Можно задаться вопросом, действительно ли нужен этот процесс, но он возник из необходимости: отрендеренное изображение должно отображаться на экране. Из чего бы он ни был собран, будь то электронно-лучевая трубка, жидкокристаллический дисплей, или плазменная панель, этот экран отрисовывает изображение при помощи массива разноцветных элементов.

Разрешения 10 x 7 пикселей не совсем хватает для отображения этого треугольника без искажений
Некоторые сигналы меняются не в пространстве, а во времени, и здесь мы тоже получаем искажения при сэмплировании с заданными интервалами. Например, для преобразования аналоговой аудиодорожки в цифровую требуется измерять уровень звука через определённые доли секунды (допустим, в случае CD audio это каждые 0,02 миллисекунды).
Различия между сигналом, созданным из сэмпла, и оригинальным сигналом создают временные искажения, с которыми обычно справляются благодаря повышению частоты сэмплирования. Но что если сигнал на самом деле является последовательностью движений? Когда мы следим за реальным миром, окружающие нас предметы движутся без дискретности, поэтому когда это движение преобразуется в поток «снимков», получаются искажения.
В мире кинематографа это приводит к странно выглядящим движениям, например, колёса автомобиля как будто вращаются в обратном направлении. Это проявляется и в 3D-графике, когда частота кадров рендеринга сцены недостаточна для полной передачи движения объектов и персонажей, из-за чего края выглядят размытыми или зазубренными; последний дефект усугубляется пространственным искажением.
Хотя методики, используемые для решения этих проблем, имеют общее название anti-aliasing (AA), способы их решения в фильмах совершенно отличаются от способов в 3D-игре. В последних применяется множество методик, имеющих всевозможные названия. Но прежде чем мы приступим к общему обзору самых популярных алгоритмов, давайте поговорим о разрешении кадра и частоте кадров.
Зачем? Потому, что если бы и то, и другое было чрезвычайно велико, то искажение не представляло бы проблемы. Если взять старый бенчмарк, например 3DMark03, и запустить его на современной системе, то мы сможем сфокусироваться исключительно на пространственных искажениях.

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

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

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

Переход с 720p на 4K — это повышение разрешения на 800%, но частота кадров упала на 81%. Хотя игры могут и не демонстрировать этот паттерн в точности, но современные AAA-игры не очень от него отличаются. Это говорит нам, что если мы хотим максимально снизить влияние искажений, нам нужен способ получше, чем повышение разрешения растра — чем ниже частота кадров, тем хуже становятся временные искажения.
К сожалению, первый алгоритм, разработанный для устранения пространственного искажения, делал именно это, но прежде чем мы приступим к его рассмотрению, надо указать на его особенности, о которых мы поговорим в этой статье. Техники устранения искажений многие годы разрабатывались независимыми научными исследователями, а также разработчиками систем в компаниях наподобие ATi, Intel и Nvidia.
Из-за отсутствия центральной организации, определяющей терминологию, существует большое разнообразие названий. Поэтому мы будем использовать самые общие названия алгоритмов, а также расскажем, как работают лежащие в их основе техники. У каждой из них есть множество модифицированных и расширенных версий со своими названиями.
Supersampling anti-aliasing (SSAA)
Этот способ, часто называемый также full scene anti-aliasing — самый старый и простой из всех. Он заключается в рендеринге сцены с повышенным разрешением, с последующим сэмплированием и смешением результата в меньшее количество пикселей. Например, монитор может иметь максимальное разрешение 1920 x 1080, но игра рендерится с разрешением 3840 x 2160, а затем картинка масштабируется и передаётся на экран.
В качестве паттерна сэмплирования обычно используются ближайшие соседние пиксели (по сути, окружающий пиксель квадрат), а математика смешивания заключается в простом арифметическом усреднении сэмплов.
Разумеется, мощности современных GPU позволяют использовать более сложные алгоритмы сэмплирования и смешения. Но давайте вкратце рассмотрим, как это работает. На изображении ниже показано действие классического 4x SSAA. «4x» означает, что вычислением арифметического среднего смешивается вместе 4 сэмпла (также называемых taps) для получения окончательного цвета. Для этого растровое разрешение увеличивается по каждой из осей в два раза.

Заметили, что сэмплы в этом примере расположены точно в центрах пикселей? Так как сами пиксели имеют дискретную площадь, позиции сэмплов можно установить в любой точке этой области. Много лет назад AMD и Nvidia экспериментировали со всевозможными паттернами сэмплирования для обеспечения наилучшего сглаживания.
Описанный выше паттерн и способ смешения называется box filter, однако существует его популярное улучшение с использованием повёрнутой сетки позиций сэмплов (RGSS). Проблема SSAA заключается в том, что все эти дополнительные пиксели необходимо обрабатывать, и как мы видели из тестов 3DMark, повышение разрешения растра запросто может сильно снизить частоту кадров.
По большей части суперсэмплирование можно заменить более эффективными алгоритмами, однако оно обрело новую жизнь в качестве параметра драйверов графических карт AMD и Nvidia. AMD называет свою технологию Virtual Super Resolution (VSR), а Nvidia — Dynamic Super Resolution (DSR).
Их можно использовать для включения сглаживания в некоторых старых играх без встроенных систем сглаживания, или для улучшения уже имеющейся в игре системы.
Multisample anti-aliasing (MSAA)
Этот способ возник как результат работы исследовательских лабораторий Silicon Graphics в начале 90-х. По сути, это SSAA, но применённая только там, где это на самом деле нужно. Ну, на самом деле, внутри технологии есть не только это, но такое объяснение поможет вам понять, как работает алгоритм.
Основное преимущество суперсэмплирования одновременно является и проблемой, потому что сглаживается всё: края примитивов, плоские текстурированные поверхности, прозрачные полигоны, всё сразу. Учитывая то, что фильтрация текстур уже обработала то, что находится внутри треугольников рендеринга, нам нужна система, применяемая только к рёбрам, потому что они создают наиболее заметную проблему искажений.
Но как это сделать? Оказывается, что необходимая для этого информация уже есть. Когда 3D-мир вершины преобразуется в 2D-плоскость растра, пиксели, создающие форму всевозможных разных примитивов в сцене, содержат не только информацию о цвете и текстурах, но и глубину.

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

Обратите внимание, как множественные сэмплы (multiple samples, вот отсюда и взялось название технологии) дают нам более точную карту глубин примитива. А теперь начинается хитрость. Сохранив эту подробную карту глубин, мы возвращаемся к кадру с исходным разрешением и выполняем все нужные шейдеры для получения окончательного цвета.
Потом мы возвращаемся к детализированному буферу глубин и каждому пикселю, находящемуся внутри примитива (т.е. чёрному), назначаем выходной цвет шейдера. Очевидно, что его нужно где-то хранить, поэтому необходимо создать ещё один буфер высокого разрешения, или же отдельный, но относительно малый буфер для каждой точки сэмпла в пикселе.
Затем, как и в случае с SSAA, мы сэмплируем и смешиваем детализированный буфер, приводя его к требуемому разрешению, и всё! Мы получили кадр без искажений. С точки зрения производительности, мы выполняли пиксельные шейдеры только для относительно малого количества точек, но для этого нам понадобилось создать и хранить пару буферов высокого разрешения.
Поэтому для multisample anti-aliasing требуется много видеопамяти и широкий канал передачи данных (плюс возможность быстрого считывания/записи в z-буферы), зато эта методика не требует большой вычислительной нагрузки на шейдеры. Давайте воспользуемся старым примером кода AMD, чтобы посмотреть, как она выглядит и чем отличается от SSAA.

Код запускает сцену с простыми текстурами и освещением, но со множеством геометрии, поэтому искажения на её рёбрах бросаются в глаза намного сильнее. В верхнем левом углу есть любопытная информация — для рендеринга каждого кадра в среднем требуется 0,18 миллисекунд, а для смешивания в окончательный результат — всего 0,02 мс. Буфер цвета (тот, который мы видим) занимает 7,4 МБ, как и буфер глубин.
Также можно приблизить отдельные области картинки, чтобы увидеть всю ужасность искажений. Не забывайте, что мы могли бы отрендерить всё это в более высоком разрешении, но это просто увеличит время рендеринга. Но если мы применим к сцене 4x SSAA, то именно это и произойдёт.

Обратите внимание, что в представленном выше изображении время рендеринга увеличилось до 0,4 мс (рост на 122%), а время смешивания (под названием «Resolve») удвоилось. Кроме того, размер буферов цвета и глубин увеличился в четыре раза. Такова цена использования SSAA, и хотя любой современный GPU с лёгкостью справится с этой сценой, в новых 3D-играх ситуация окажется ужасной.
Однако посмотрите на увеличенную часть изображения. Заметили, насколько более гладкими стали линии? Да, в изображении ещё довольно много искажений, но оно заметно лучше. Вот если бы эта техника была не такой затратной! Ну, несколькими нажатиями мы можем переключиться на MSAA, и посмотреть, что изменится.

Показатели времени рендеринга сцены почти вернулись к тем, когда не применялось сглаживание, что хорошо, однако ещё больше стало время смешивания. Общий занятый объём памяти тоже находится примерно посередине между отсутствием AA и 4xSSAA, поэтому, похоже, что MSAA определённо стоит использовать.
Даже искажения на рёбрах примитивов кажутся меньшими, однако это больше связано с использованным паттерном сэмплирования, а не с самим принципом работы MSAA. На самом деле, если посмотреть на текстуру стены в увеличенной области, становится очевидным один недостаток multisample AA.
SSAA улучшает всё, а MSAA влияет только на рёбра полигонов, и хотя для статических изображений это не так важно, движение обычно делает разницу между сглаженными линиями и размытыми текстурами чуть более заметной. Ещё одна проблема заключается в том, что алгоритм плохо сочетается с отложенным рендерингом и хотя эту проблему можно обойти, все способы её решения имеют свою цену с точки зрения производительности.
Что же делать, если методики supersampling и multisampling anti-aliasing неидеальны?
Fast approximate anti-aliasing (FXAA)
В 2009 году Nvidia представила другой способ улучшения изломанных краёв фигур в 3D-сцене. SSAA пользуется исключительно «грубой силой», MSAA — аппаратными функциями и трюками в коде. FXAA спроектирована так, чтобы выполняться исключительно через шейдеры. После появления этой методики её несколько раз совершенствовали и сегодня она активно применяется в играх.
Код выполняется как этап постобработки (т.е. после завершения большинства операций рендеринга, но до наложения элементов наподобие интерфейса), обычно в виде единственного пиксельного шейдера. Первоначальная версия алгоритма работала так: сначала сэмплируем буфер, содержащий отображаемое изображение, и преобразуем sRGB в линейную оценку яркости этого пикселя (это величина количества света, проходящего через заданную площадь в указанном направлении).
Эта часть шейдера состоит всего из нескольких строк, она даже может использовать зелёный канал для вычисления уровня освещения. Зачем ему это нужно? На следующем этапе шейдера выполняется проверка относительного контраста пикселей, окружающих сэмплируемый пиксель — если разница велика, то это место с большой вероятностью является ребром.

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

Без AA (слева) и FXAA (справа) — обратите внимание, что деревья и элероны крыла выглядят намного плавнее
А какие недостатки есть у этой методики? Если в кадре есть множество областей с высокой контрастностью, например, с яркими пикселями на тёмной фоне, они смешиваются, вне зависимости от необходимости.
Точность этого способа не так высока, как у SSAA или MSAA, потому что он не может передавать субпиксельные детали — по сути, это просто хитрый фильтр, который может создавать довольно бесформенно выглядящие текстуры. Но благодаря своей малозатратности и создаю достаточно эффективных результатов, FXAA по-прежнему используется спустя 12 лет, хотя и в переработанном виде.
Существуют и другие полноэкранные алгоритмы поиска рёбер. Источником вдохновения для разработчиков FXAA стало созданная Intel Morphological anti-aliasing (MLAA); эта методика была усовершенствована разработчиком игр Crytek и испанским Университетом Сарагосы, которые дали ей название Enhanced Sub-pixel MLAA (сокращённо SMAA).
Лучше всего во всех этих методиках то, что, в отличие от SSAA и MSAA, их можно постоянно обновлять и модифицировать, подстраивая под конкретные приложения или игры.
Temporal anti-aliasing (TAA)
Пока мы рассматривали только методики для устранения визуального влияния пространственных искажений. Для борьбы с временными искажениями (temporal aliasing), возникающими из-за того, что 3D-игры генерируют дискретные сэмплы непрерывного движения, чаще всего используется следующий алгоритм.
Мы начинаем с рендеринга кадра и его отображения; однако также мы сохраняем значения пикселей в блок памяти, называемый буфером истории (history buffer). Затем рендерер переходит к следующему кадру последовательности и обрабатывает его, но перед его отображением сэмплирует буфер истории, а результаты сэмплирования смешиваются с текущим кадром. Затем в буфер истории сохраняется этот результат, скопированный для создания окончательного изображения, а готовый буфер помечается как готовый для отображения на мониторе.

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

Самый популярный алгоритм TAA.
Временное сглаживание (Temporal AA) может создавать избыточное размытие, а также проблему под названием ghosting, при которой края движущихся объектов выглядят размазанными, а не смягчёнными.
Для решения этой проблемы используется методика с вычислительным шейдером, рассчитывающим движение векторов объектов, сохраняющим информацию в память (буфер скоростей), а затем сравнивающим относительные скорости текущих пикселей с сэмплированными — если они сильно различаются, то сэмпл истории не используется.
Кроме использования значений скоростей, большинство реализаций алгоритма TAA выполняют ещё один процесс проверки сэмплов истории; это не позволяет использовать значения из предыдущих кадров, не относящиеся к текущему кадру (например, они могут оказаться скрытыми за сдвинувшимся объектом). В этой методике обычно используется ограничивающий параллелепипед, выровненный по координатным осям (axis-aligned bounding box, AABB), в котором по осям отложена хроматичность буфера истории; она отсекает все пиксели, имеющие цвет за пределами этих границ.
В окончательное смешивание истории и текущих пикселей тоже можно добавить веса, используя сравнительные значения цвета, яркости или скорости; наконец, во время последнего копирования обновлённого буфера истории для отображения можно применять различные фильтры размытия, ещё больше снижающие ghosting.

Без AA (слева) и TAA (справа) — обратите внимание на размытие деталей на крыле
Для разработчиков кодировать всё это значительно сложнее, чем добавить в игру SSAA или MSAA. Но современные GPU способны быстро вычислять все необходимые шейдеры; в то время как алгоритмы supersampling и multisampling для каждого кадра требуют множества сэмплов, TAA, по сути, распределяет эти сэмплы на несколько кадров. Это означает, что в играх, не сильно ограниченных объёмом вычисляемых шейдеров, TAA можно реализовать ценой относительно малого снижения производительности.
Кроме того, TAA хорошо работает с отложенным освещением и может использоваться с аналогами FXAA и SMAA, что приводит к ещё большему улучшению графики. К сожалению, эта методика подвержена чрезмерному размытию и возникновению артефактов мерцания вдоль рёбер с высокой контрастностью. Однако вычислительная мощь GPU, похоже, ещё долго не выйдет на плато, и подобные техники можно совершенствовать, используя более сложные методы определения способа сэмплирования и проверки буфера истории.
И это ещё не всё!
Четыре описанные выше методики, особенно FXAA и TAA, активно используются в играх для PC и консолей. Но есть и множество других алгоритмов.
Например, когда Nvidia выпустила серию графических карт GeForce 9, то объявила и о создании модифицированной версии MSAA под названием Multi-Frame Sampled Anti-aliasing (MFAA). По сути, GPU изменяет паттерн сэмплирования с каждым последующим кадром, то есть на кадр приходится меньшее количество создаваемых и смешиваемых сэмплов.
Среднее от нескольких кадров и создаваемый эффект практически такие же, как при обычном MSAA, но с меньшим снижением производительности. К сожалению, этот алгоритм можно реализовать в играх, разрабатываемых под руководством Nvidia, и он недоступен во всех проектах. Однако он всё равно существует и его можно включить в панели управления драйвером GeForce.
Позже этот разработчик GPU вложил значительные ресурсы в разработку алгоритма сглаживания с использованием искусственного интеллекта под названием Deep Learning Super Sampling (DLSS), впервые появившегося в 2018 году вместе с выпуском чипов Turing.
В первой версии DLSS компания Nvidia должна была обучать нейросеть глубокого обучения (DNN) на конкретных играх сравнением кадров низкого разрешения с кадрами в высоком разрешении со включенным SSAA. Современная версия использует более обобщённую сеть и получает дополнительную информацию в виде векторов движения для определения того, как должен выглядеть кадр, как если бы он рендерился с более высоким разрешением.

Хотя основное преимущество DLSS заключается в повышении производительности (например, рендеринг выполняется при 1080p, но нейросеть повышает разрешение до 1440p), система, по сути, применяет AA, потому что её целевыми данными является изображение.
AMD сейчас работает над собственной версией такой системы и после её выпуска мы можем наконец увидеть, как алгоритмы AA с глубоким обучением постепенно заменяют традиционные, но пока этого не случилось. Такие системы реализовать не проще, чем, допустим, TAA, а визуальные результаты не всегда идеальны.
Исследования более совершенных техник сглаживания продолжаются, но мы и так уже проделали длинный путь со времён Riva TNT и Half-Life, когда нам приходилось мириться с зазубренными полигонами, потому что на их устранение не хватало производительности.
Итак, когда в следующий раз вы будете настраивать параметры графики в новой игре и увидите различные варианты доступных способов AA, поблагодарите про себя инженеров и программистов, придумавших всё это.
Сглаживание в играх: как разработчики делают картинку приятнее и какой тип сглаживания выбрать?
Если вы когда-нибудь заглядывали в настройки графики в играх, то, вероятнее всего, замечали параметр сглаживания. И если другие настройки, такие как дальность прорисовки или качество теней, достаточно интуитивны, то с пониманием сглаживания могут возникнуть проблемы.
Зачем нужно сглаживание в играх?
Строение экрана монитора представляет из себя матрицу квадратных пикселей. Несложно догадаться, что в таком случае идеально правильными будут отрисовываться только горизонтальные и вертикальные линии. Как только компьютер попытается отрисовать наклонную линию — появляется зубчатость пикселей.
![]()
Лесенка пикселей при отрисовке наклонных линий
Эту проблему можно решить приобретением монитора с бОльшим разрешением. Скорее всего, если у вас не современная видеокарта, то придётся обновить и её. Но такой вариант устроит далеко не каждого.
По этой причине разработчики добавляют в свои игры технологию сглаживания. Она была придумана ещё в 1972 году, но популярность в игровой индустрии начала набирать только спустя несколько десятков лет. Суть сглаживания заключается в том, чтобы закрасить соседние от зазубренности пиксели в промежуточный цвет (или градиент цветов). В таком случае переход будет казаться не таким резким, тем самым сглаживая границу.

Пример сглаживания наклонной линии
Примечание Сглаживание применяется не только в играх, но и в интерфейсах программ и даже просто в операционных системах. Помимо изображений, алгоритм обрабатывает и текст, делая маленький шрифт более читаемым.
Добиться сглаживания можно разными способами. Ниже перечислены 8 основных и популярных алгоритмов сглаживания, однако в играх могут попасться и другие типы.
SSAA (SuperSample Anti-Aliasing)
Самый простой, но в то же время самый эффективный тип сглаживания, который в играх даёт самую приятную картинку. К сожалению, он сильно снижает производительность. Видеокарта виртуально увеличивает разрешение экрана в несколько раз. После отрисовки кадра изображение сжимается обратно до оригинальных размеров, усредняя цвета виртуальных пикселей в соответствующие им реальные пиксели. Если разрешение экрана Full HD (1920×1080), а сглаживание работает в четырёхкратном режиме, то кадр будет отрисовываться в разрешении 4K (3840×2160).
Примечание Усреднение пикселей — это просто нахождение среднего цвета от нескольких виртуальных пикселей. Например, в SSAA x 4 разрешение увеличивается в два раза. Тогда каждому реальному пикселю будут соответствовать 4 виртуальных. Вот примеры того, как будет происходить усреднение:

Примеры усреднения цветов
Такой тип сглаживания убирает лесенку, делает мелкие объекты вдали более различимыми, а саму картинку просто более приятной для глаз.
К сожалению, далеко не во всех играх реализован такой тип сглаживания. Алгоритм SSAA лучше всего подойдёт для несовременных игр, где ресурсозатратность такого сглаживания будет компенсироваться большой производительностью самой игры.
Однако иногда в настройках может попасться сглаживание SSAA x 0,5. При его использовании разрешение изображения виртуально уменьшается в два раза, а при отрисовке на экран обратно растягивается. Качество картинки в таком случае ухудшается, а вот производительность игры наоборот увеличивается.
MSAA (MultiSample Anti-Aliasing)
На практике, сглаживание не нужно применять абсолютно ко всему кадру. Оно уместно там, где есть наклонные линии, контрастные границы полигонов или мелкие объекты на дальнем расстоянии. Поэтому на замену ресурсоёмкому SSAA пришёл более лёгкий MSAA.
Этот тип сглаживания работает по схожему алгоритму: увеличивает виртуальное разрешение определённого участка кадра, прорисовывает его, а затем уменьшает разрешение до оригинала.

Результат четырёхкратного сглаживания MSAA
Но такое сглаживание неэффективно в играх, где нужно отрисовывать много мелких объектов: траву, листву или волосы — всё то, что разработчики так яростно пытаются детализировать. В таких случаях этот тип сглаживания становится идентичным своему предшественнику, а значит — таким же ресурсозатратным.
FXAA (Fast approXimate Anti-Aliasing)
Суть этого алгоритма заключается в усреднении цветов соседних реальных (не виртуальных) пикселей.

Результат сглаживания FXAA
FXAA сильно мылит изображение, зато требует минимум ресурсов. Не самый лучший вариант, однако один из самых популярных. При его использовании стоит понимать, что любые чёткие элементы или контрастные границы размываются, что в некоторых случаях делает картинку не сильно приятной для глаз. Поэтому вам предстоит сделать выбор между замыленным изображением и лесенками пикселей.
MLAA (MorphoLogical Anti-Aliasing)
Этот тип сглаживания является аналогом FXAA от Intel. Алгоритм работает после финальной отрисовки кадра, поэтому может выполняться уже не на видеокарте, а на центральном процессоре. Это позволяет существенно снизить нагрузку на видеокарту.

Принцип разбиения изображения на структуры. Источник
MLAA определяет места с резким переходом цветов по 3 разным паттернам: Z, U и L. Потом участок градуируется по цветам по заранее заданным алгоритмам, свойственным каждому из паттернов.
SMAA (Subpixel Morphological Anti-Aliasing)
Это сглаживание, созданное на основе FXAA и MLAA. Является улучшенной версией MLAA, но работает уже не на ЦП, а на видеокарте, а значит, тратит её ресурсы.
Теперь для определения контуров алгоритм использует не только разность цветов, но и яркость пикселей. Паттерны Z, U и L остаются, а вдобавок к ним появляются диагональные паттерны. Это помогает точнее отрисовывать острые грани объектов.

Результат сглаживания SMAA. Обратите внимание на дерево и листья у здания
К сожалению, как и два предшественника, этот тип сглаживания в играх тоже замыливает картинку, поэтому некоторые отдельные мелкие объекты (такие как частички грязи или царапины) размываются.
TXAA/TAA (Temporal Anti-Aliasing)
Этот тип сглаживания, разработанный Nvidia, не только борется с зазубринами пикселей, но и устраняет ненужное дрожание объектов.
Первая проблема решается соединением и оптимизацией двух типов сглаживаний: MSAA и SMAA. С дрожанием алгоритм борется с помощью анализа нескольких предыдущих кадров. Поэтому этот тип ещё называют временным сглаживанием (так как он анализируют кадры, которые были некоторое время назад).

Результат работы сглаживания TAA
Такое сглаживание отлично работает при статичном или почти статичном изображении. Как только сцена становится динамичной, алгоритм начинает потреблять много ресурсов. К тому же, могут начать появляться артефакты, вызванные остаточным изображением прошлых кадров.
DSR (Dynamic Super Resolution)
Сглаживание тоже прямиком от Nvidia. Алгоритм похож на SSAA. Разница в том, что DSR просто запускает игру в бОльшем разрешении экрана. После этого, как и SSAA, он отрисовывает кадр, а затем уменьшает картинку до оригинального разрешения.
Из вытекающих преимуществ: вы сможете делать 4К скриншоты на Full HD мониторе, например. Однако, если игра не до конца оптимизирована под этот тип сглаживания, то интерфейс игры и чувствительность мыши могут уменьшиться, так как по сути вы играете на разрешении большем, чем у вашего монитора.
CSAA/CFAA (Coverage Sampling Anti-Aliasing/Custom-Filter Anti-Aliasing)
Улучшенная версия MSAA. Даёт качество картинки на уровне MSAA x 8, но при этом потребляет ресурсов, как MSAA x 4. Замыливания почти нет.
Улучшение алгоритма достигнуто тем, что в расчёт берутся также данные о соседних пикселях. Это позволяет более точно провести сглаживание, не затрагивая мелкие объекты, которые не должны размываться.

Результат восьмикратного сглаживания CSAA
Примечание Многие алгоритмы сглаживания во время обработки изображения учитывают не только соседние пиксели, но и отдельно их субпиксели (да-да, те самые R, G и B каналы) — всё зависит от строения и особенностей матрицы вашего монитора.
На изображении ниже видно, что при сглаживании текста участвуют не полноценные пиксели, а только некоторые их каналы: красный, синий и жёлтый (смесь красного и зелёного).

Технология субпиксельного рендеринга Clear Type
Какое сглаживание выбрать в игре?
Если вы — владелец мощного игрового компьютера, а в настройках графики видите SSAA-сглаживание — без раздумий выбирайте его. Но если вы переоценили силы вашего ПК, и такое решение сильно ударило по частоте кадров, то попробуйте найти SMAA или TXAA (TAA).
Если ваш компьютер более бюджетный, всегда есть варианты использования FXAA, MLAA или MSAA.
К тому же, кроме экспериментов с типом сглаживания, можно пробовать изменять степень сглаживания (если такое предусмотрено разработчиком).
Итак, из этой статьи вы узнали много разных наборов букв. Проверьте, получилось ли у вас что-то запомнить.