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

1.jpg

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

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

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

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

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

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

ssaa-696x392.jpg

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

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

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

869846.jpg

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

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

c69f9e11.jpg

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

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

GOTHIC3.jpg

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

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

Итог

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

26

Будь в курсе последних новостей из мира гаджетов и технологий

Мы в соцсетях

Комментарии

+12
Ладно!
1 марта 2017 в 19:03
#
Xoxlamon
+107
Отличная статья. Познавательно.
2 марта 2017 в 09:19
#
+250
Кажется, что Егор единственный, кто пишет статьи не про мобильные устройства.
2 марта 2017 в 16:26
#
+49
Доброго дня!
Забыли ещё один тип сглаживания указать- MFAA.
Фишка Nvidia , вроде как только на видеокартах Maxwell и Pascal. Хотя может и другие поддерживают, не проверял- у меня на Maxwell видюха.

Смысл технологи- сглаживания улучшает качество изображения, полученное при использовании MSAA, одновременно сокращая потери производительности. Это дополнительно позволяет использовать высокое разрешение рендеринга и активировать технологию DSR.
GPU предыдущих поколений использовали фиксированные позиции для выборок, хранящиеся в ПЗУ. Когда геймеры выбирали сглаживание 2x или 4x MSAA, использовались имеющиеся позиции выборок. В Maxwell появилась возможность программировать позиции выборок для растеризации, которые хранятся в ОЗУ. Это является основой для новой, более гибкой техники сглаживания, которая уникальным образом решает трудности современных игровых движков, такие как повышенные затраты производительности при высококачественном сглаживании.

Программируемая мультипиксельная выборка-
Новая технология может так же быть запрограммирована на использование стандартных MSAA и TXAA-выборок, но драйвер или приложение могут загружать в ОЗУ позиции, которые свободно меняются от кадра к кадру или даже в рамках одного кадра. Именно с помощью этой технологии разработан метод многокадрового сглаживания (MFAA).

Многокадровое сглаживание-
Благодаря чередованию позиций выборок, 4xMFAA оказывает такое же влияние на производительность, как и 2xMSAA, однако обеспечивает качество изображения на уровне 4xMSAA.

Полноценно в играх этот метод ещё не появился (только вроде в парочке, чтобы прямо в меню можно было выбрать). Но если воспользоваться надстройками драйвера видеокарты- то можно полноценно задействовать этот метод практически для любой вышедшей игры, даже которая выходила давно. Плюс там же можно задействовать DSR функцию- но только если у вас топовая видеокарта или игра относительно не нова, так как DSR фактически превращает картинку любой игры которая поддерживает разрешение full hd до 4к, а потом плавно ее ужимает обратно под ваше разрешение экрана (разрешения выбранного для игры) существенно улучшая картинку. Как бы 4к в разрешении full hd) В общем картинка становиться гораздо лучше и чётче при использовании только лишь одного сглаживания.
3 марта 2017 в 07:11
#
+1764
Пользователь удален jonnyvoice
Спасибо, да, действительно есть такое сглаживание, начиная с Maxwell. Но работает оно не в каждой игре — вот список: www.geforce.com/hardware/technology/mfaa/games , и включается только в настройках драйвера Nvidia (в управлении параметрами 3D) — в меню игры его не может быть, потому что видеокарты от AMD его не поддерживают.
3 марта 2017 в 09:39
#