Войти
03.08.2020
84
79872

Да кто такой этот ваш MSAA и SSAA?!

Вы часто видели эти MSAA и SSAA в настройках — и выбирали опцию наугад. Знали примерно, что эти загадочные буквы связаны со сглаживанием картинки, и этого вам всегда хватало. Но червячок сомнений всё-таки точил ваш разум. Иначе бы вы, как и мы сейчас, не задались вопросом: «Кто же такие эти самые MSAA и SSAA на самом деле?». Ну что ж, давайте разберёмся со всем этим по порядку и без заумных словечек.

Что такое сглаживание?

Минутка очевидных вещей. Изображение на вашем мониторе состоит из пикселей — очень маленьких квадратиков. По законам геометрии, из них получаются отличные вертикальные и горизонтальные линии и идеальные прямоугольники. А вот если нарисовать в Paint наклонную линию или круг, то тут же на белый свет явятся пиксельные «лесенки».

Далеко не каждую 2D фигуру можно создать только при помощи квадратов и линий под прямым углом, а о трёхмерных объектах нечего и говорить. Так что проблема сглаживания существует в играх как сейчас, так и тридцать лет назад — вам не хуже меня видно, где стоило бы сгладить Лару Крофт.

Вот эти вот неровности ещё называют «алиасингом». На скриншоте это выглядит более-менее терпимо, но в игре, помимо эстетических неудобств, они создают ещё и лишнее мельтешение на экране — ломаные линии будут всё время перестраиваться и отвлекать, а задний план и вовсе превратится в разноцветную мешанину пикселей. Решить проблему «лесенок» можно двумя способами.

Первый — это увеличить разрешение. Тогда на один экранный дюйм будет приходиться больше пикселей, и вероятность увидеть резкие переходы снизится: не зря сейчас индустрия потихоньку переходит на 4к. За ним последует 8к, потом 16к, и в конце концов вы скорее разглядите пиксели на оконном стекле, чем на экране. К сожалению, подобная роскошь кусается как в плане цены, так и в плане производства, а сорок лет назад не было даже возможности создать экран с таким разрешением. Поэтому пришлось придумать второй способ.

И это — сглаживание, которое не позволяет рваным линиям и неровностям портить вам всю малину. Технологию создали в 1972 году в Массачусетском технологическом институте, а затем эту идею подхватили и переработали все кому не лень, так что теперь мы имеем кучу разных видов смягчения границ предметов. Однако, суть у всех общая: линию на изображении сглаживают с помощью градиента на крайних пикселях.

Как это работает?

Для сглаживания изображения к контурам предмета добавляются оттенки соседнего цвета — ближайшие к фону пиксели принимают среднее цветовое значение между моделькой и окружением, размывая границу и создавая градиент. В результате картинка выходит более плавной и приятной для глаз, хоть и становится немного мыльной.

Для некоторых графических элементов используются специальные алгоритмы сглаживания. Так, для смягчения контуров букв придумали ClearType, а для самых простых линий — Алгоритм Ву. Некоторые алгоритмы работают только с уже существующим изображением, а другие применяются прямо во время построения сцены. Одни из них жрут мощности вашей видеокарты, а другие сосредоточенно жуют ваш процессор и не влияют на FPS.

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

SSAA — тираннозавр

SSAA, или Supersample anti-aliasing, ещё обзывают FSAA — full scene anti-aliasing. В переводе эти страшные слова означают, что SSAA сглаживает изображение в игре ещё на этапе построения сцены.

Принцип его работы прост: сначала создаётся изображение с разрешением в 2, 4 или 8 раз больше исходного, а затем сжимается обратно до нужного размера. Кратность увеличения вы выбираете сами — множитель возле SSAA как раз и означает, во сколько раз вырастет предварительное изображение. Чем оно больше, тем сложнее справиться с этим вашей видеокарте, но и тем лучше выйдет итоговая картинка. Есть у этого способа и минус — самые простые линии из-за него становятся размытыми.

Это одна из самых старых технологий сглаживания, но не самая популярная — очень уж она голодна до ваших FPS и мощностей видеокарты. Тем не менее, SSAA продержалась на плаву аж до DirectX 7, а потом производители видеокарт отдали предпочтение менее требовательному MSAA. Если подытожить, то SSAA даёт на выходе более высокое качество изображения, хоть и жрёт больше ресурсов. Именно поэтому он до сих пор не забыт и трудится у AMD (в Radeon HD6xxx series) и в драйверах Fermi для Nvidia.

MSAA — бюджетный вариант

MSAA, или Multisample anti-aliasing — это одна из самых простых технологий сглаживания. Её используют чаще SSAA, потому что она немного умнее предшественницы и не трогает то, что находится внутри текстуры. Ведь смысл сглаживания — только избавиться от богомерзких «лесенок», а не вылизывать всё изображение.

Благодаря такой выборочной работе нагрузка на видеокарту ощутимо снижается. И даже 8х MSAA обрабатывается легче, чем 4х SSAA. И это при практически одинаковом качестве картинки на выходе!

FXAA — младший брат

FXAA, или Fast approXimate anti-aliasing — это метод сглаживания, придуманный Nvidia. Он обнаруживает резкую смену цветов и сглаживает именно эти проблемные места, а не всё изображение целиком. Увы, у этого вида сглаживания очень замыливаются далёкие объекты — из-за своих небольших размеров они становятся практически неразличимыми на общем фоне.

FXAA напряжёт ваше железо ещё меньше, чем MSAA, но это отразится на точности работы и качестве изображения. А потому включать этого «младшего брата» всех алгоритмов сглаживания имеет смысл, только если от лесенок у вас уже скоро случится эстетический приступ, а на крутую видеокарту нужно ещё долго откладывать с завтраков.

MLAA — разделяй и властвуй

MLAA, или MorphoLogical anti-aliasing в переводе — морфологическое сглаживание. Это технология Intel, поэтому она — единственная из всех — пожирает силы процессора, а не видеопамяти, так что на ваши FPS никто покушаться не будет.

Принцип работы этого вида сглаживания можно сравнить с FXAA. Отличие только одно — перед тем, как сглаживать участки с резкой сменой цветов, MLAA разбивает их на очень маленькие секторы L-, U-, Z-образной формы и смешивает цвета уже внутри них. Благодаря таким сложностям изображение получается более качественным, чем с FXAA, но всё ещё не дотягивает до 2x MSAA.

SMAA — всегда в форме

SMAA, или Subpixel Morphological anti-aliasing — это, по большому счёту, смесь FXAA и MLAA. Алгоритм работает по принципу MLAA, но нагружает обработкой видеокарту, а не процессор.

Преимущество этого метода в том, что он умеет находить края объектов и при сглаживании не нарушает их форму и геометрию. Это требует больших мощностей, но зато и результат получается достойным. SMAA чаще всего выдаёт изображение, сравнимое по качеству с MLAA или SSAA 16x.

TXAA — мыльное кинцо

TXAA, или Temporal approXimate anti-aliasing — ещё одна технология от Nvidia, в которой смешались MSAA и SMAA. Главная её фича в том, что при сглаживании картинки она использует уже отрисованные кадры, что значительно сокращает время обработки изображения. При этом она, как и SSAA, создаёт картинку в большем размере, а потом подгоняет её под разрешение вашего монитора.

Это сглаживание обещает нам «кинематографическое качество» картинки и много FPS… И с этим трудно поспорить — TXAA 2x создаёт картинку качества MSAA 4x с нагрузкой от MSAA 2x. Звучит, конечно, отлично (и немного непонятно, да), и итоговое изображение действительно выглядит очень качественно, но, увы, появляется заметное мыльцо.

Ничего не понял, но очень интересно

Получается, что любая технология сглаживания — это очень крутой костыль от разработчиков. Раз нельзя сделать невозможное (запихнуть квадратное в круглое), они просто обманывают наше зрение, «размыливая» картинку по краям до золотой середины, чтобы линия казалась плавной, но не была слишком размытой. И все эти MSAA и SMAA — это компромисс между мылом, сглаживанием и нагрузкой на железо. Если же вы хотите идеально чёткое изображение, то придётся либо смириться с «лесенками», либо ждать 256к мониторы.

Ну и чё врубать-то? Этот философский вопрос будет покруче всех этих ваших платформосрачей. Потому что мы и сами не знаем. И никто не знает.

Всё очень индивидуально — если вы гордый владелец мощного компа с 4к экраном, то можете спокойно использовать самые крутые и ресурсоёмкие SSAA и TXAA. Если ваш калькулятор уже на последнем издыхании, то лучше не нагружать старичка лишний раз и потерпеть лесенки или, на свой страх и риск, включить FXAA. А если ваше железо где-то посерединке между «Вау, вот это комп!» и «Мме, ну и комп...», то можете попробовать MLAA или SMAA, что-нибудь, да сработает.

Александра Solongoy
Да кто такой этот ваш Solongoy?!
почитать еще
комментарии 84

Наконетс то прочитал эту статью и хотя бы разобрался во всех этих заклинаниях и буквенных сокращениях ;D
Теперь хотя б представление имеется в общем смысле и понимании, за что огромное спасибо. Было познавательно, теперь можно будет действительно задуматься, какую настройку сглаживания в игре все же лучше будет включить и для железа и для вида ))

Свернуть  3
До 1000 символов
Комментарий удален.
До 1000 символов

Если правильно помню, то еще эту статью можно и послушать)

До 1000 символов
Комментарий удален.
До 1000 символов

В таком случаи, похоже я слишком долго откладывал ее прочтение ;))))

До 1000 символов
Комментарий удален.
До 1000 символов

Лучше поздно, чем никогда!

До 1000 символов
Комментарий удален.
До 1000 символов
13.Mar.2021 в 05:59
2
0

Отличная статья! Теперь не буду тратить время на выбор этих буковок для большей производительности)

Свернуть  1
До 1000 символов
Комментарий удален.
До 1000 символов
13.Mar.2021 в 06:01
Sayonara
0
1

Рады, что вам понравилось. :)

До 1000 символов
Комментарий удален.
До 1000 символов
12.Mar.2021 в 04:45
Napets
99
1
2

Статья, конечно, тяжелая информационно. Но очень познавательно, главное разобраться. Я раньше даже не задумывался об этом, ставил наугад сглаживание, как и написано в статье XD Теперь хоть знать буду, что выбрать и что эти страшные буквы за собой таят. Спасибо за статью и просветительскую деятельность! ))

 7
До 1000 символов
Комментарий удален.
До 1000 символов
05.Mar.2021 в 20:45
1
2

Я тоже нечего не понял, но очень интересно! Было сложно, но узнал немного нового для себя. ;)

Свернуть  1
До 1000 символов
Комментарий удален.
До 1000 символов
05.Mar.2021 в 21:45
Seta Sojiro
1
0

И это здорово ;)

До 1000 символов
Комментарий удален.
До 1000 символов
05.Mar.2021 в 00:08
2
1

Ну теперь хоть буду понимать, что я делаю, выставляя сглаживание в игре.

Свернуть  1
До 1000 символов
Комментарий удален.
До 1000 символов
05.Mar.2021 в 00:11
Muctep_kpabs
1
0

И разве это не круто? Приятной вам игры! :)

До 1000 символов
Комментарий удален.
До 1000 символов