Вы часто видели эти 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, что-нибудь, да сработает.
Наконетс то прочитал эту статью и хотя бы разобрался во всех этих заклинаниях и буквенных сокращениях ;D
Теперь хотя б представление имеется в общем смысле и понимании, за что огромное спасибо. Было познавательно, теперь можно будет действительно задуматься, какую настройку сглаживания в игре все же лучше будет включить и для железа и для вида ))
Если правильно помню, то еще эту статью можно и послушать)
В таком случаи, похоже я слишком долго откладывал ее прочтение ;))))
Отличная статья! Теперь не буду тратить время на выбор этих буковок для большей производительности)
Статья, конечно, тяжелая информационно. Но очень познавательно, главное разобраться. Я раньше даже не задумывался об этом, ставил наугад сглаживание, как и написано в статье XD Теперь хоть знать буду, что выбрать и что эти страшные буквы за собой таят. Спасибо за статью и просветительскую деятельность! ))
Я тоже нечего не понял, но очень интересно! Было сложно, но узнал немного нового для себя. ;)
Ну теперь хоть буду понимать, что я делаю, выставляя сглаживание в игре.