Gamedev Артемий Леонов
6 821

Что такое антиалиасинг: Digital Foundry о технологиях «сглаживания»

«Лесенка» и другие проблемы.

В закладки

Digital Foundry, техническое подразделение Eurogamer, выпустило видео о технологиях «сглаживания» (anti-aliasing). Эксперты рассказали о преимуществах и недостатках различных видов антиалиасинга, а мы выбрали из видео главное.

Что такое антиалиасинг

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

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

Самый распространённый тип алиасинга — знакомая всем «лесенка», встречающаяся при работе с полигональной геометрией или с растровой графикой. Она возникает при резком переходе между пикселями.

Как борются с графическими несовершенствами

C этой проблемой призван бороться метод «сглаживания» под названием Ordered Grid Super Sampling — это увеличение плотности пикселей. Теперь мы имеем четыре пикселя вместо одного и плавное перетекание вместо резкого перехода. Главная проблема этого метода очевидна: если заменить каждый пиксель на набор из четырёх, это не может не сказаться на производительности.

Менее требователен к системе метод под названием MSAA (Multisample Anti-aliasing), увеличивающий плотность пикселей выборочно, на границах определённых полигональных объектов. Конечно же, такой метод гораздо менее требователен к производительности, чем SSAA, увеличивающий количество всех пикселей в четыре раза.

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

От ряби можно избавиться, просто снизив уровень детализации конкретного объекта — этот метод носит название Mip Map. Снижение количества пикселей в текстуре, находящейся на расстоянии, может не только повысить производительность, но и избавить её от ряби и прочих неприятных визуальных эффектов.

Ещё один вид алиасинга связан с переходом между кадрами. Предыдущий кадр может оставлять визуальный след в текущем — объекты будто бы оказываются в двух местах одновременно. Эта проблема не исчезает полностью ни при тридцати, ни при шестидесяти кадрах в секунду — чтобы избавиться от неё, необходима частота в несколько тысяч кадров в секунду и дисплей, способный работать на такой частоте.

Что популярно сейчас

На всё многообразие проявлений алиасинга у разработчиков неизменно находятся эффективные ответы — методы борьбы постоянно совершенствуются. Например, в последнее время MSAA встречается в играх всё реже, а популярность приобретает метод PPAA (Post Process Anti-Aliasing), в частности FXAA и SMAA. Его суть заключается в том, что «сглаживание» производится постфактум — уже после того, как изображение было создано. У этого метода есть и недостатки — например, нестабильность изображения, вызванная разницей между двумя следующими друг за другом кадрами после обработки. К тому же при использовании PPAA часть изображения может стать чересчур «сглаженной», или, наоборот, остаться «острой».

Эти проблемы можно решить, если предоставить алгоритму постобработки больше информации. Существуют методы «сглаживания», способные обрабатывать каждый новый кадр на основе предыдущего. Это позволяет добиться эффекта, не уступающего в «гладкости» требовательному SSAA, задействовав гораздо меньше ресурсов.

Здесь тоже есть свои проблемы — изображение, созданное на основе предыдущих кадров, может «сгладиться» слишком сильно. Сейчас с этим тоже научились бороться: теперь один алгоритм занимается сглаживанием, а другой, сразу же вслед за ним, «заострением».

Однако технология TAA (Temporal Anti-aliasing) обостряет проблему перехода между кадрами, о которой было сказано ранее. С ней разработчики борются при помощи старого доброго «размытия» (blur), столь нелюбимого многими игроками. По мнению эксперта Digital Foundry, от «блюра» нам никуда не деться — по крайней мере, пока мы не сможем позволить себе несколько тысяч кадров в секунду.

В финале видео эксперт составляет краткую памятку для тех, у кого возникают проблемы с выбором метода «сглаживания».

SSAA — отличное качество, но очень требователен.

MSAA — полезен лишь в отдельных случаях, сейчас встречается редко.

TAA — отличное качество, не так требователен, как SSAA, но знаменит «блюром» и проблемами при переходе между кадрами.

PPAA — нормальное качество, не требователен, рекомендуется использовать в сочетании с каким-либо другим методом.

#графика #игры #арт

Статьи по теме
Лабиринт отражений: история трассировки лучей в играх
Трассировка лучей на примере штурмовиков из «Звёздных войн» и цифровой Энди Сёркис: технодемо Epic Games с GDС 2018
Графика сегодняшнего дня: руководство ПК-геймера
{ "author_name": "Артемий Леонов", "author_type": "editor", "tags": ["\u0430\u0440\u0442","\u0433\u0440\u0430\u0444\u0438\u043a\u0430","\u0438\u0433\u0440\u044b"], "comments": 48, "likes": 149, "favorites": 91, "is_advertisement": false, "subsite_label": "gamedev", "id": 19473, "is_wide": true }
{ "id": 19473, "author_id": 3792, "diff_limit": 1000, "urls": {"diff":"\/comments\/19473\/get","add":"\/comments\/19473\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/19473"}, "attach_limit": 2, "max_comment_text_length": 5000 }

48 комментариев 48 комм.

Популярные

По порядку

Написать комментарий...

Дмитрий Мохов

22

интересная статья, но очень поверхностная.
хотелось бы увидеть далее более развернутый и технически углубленный материал :)

Ответить

Ваня Долгих

Дмитрий
20

Согласен, статья хреновенькая, все настолько вкратце, что вообще ни о чем... Все просто намешано в кучу. Текста с гулькин нос, да еще и вперемешку со скринами с пережатого видео или вообще растянутых с не-пойми-какого исходного разрешения. PPAA - это что? Понятно что пост-процессинг, но этих алгоритмов минимум штуки четыре можно насчитать. Чем FXAA отличается от SMAA? Что такое MLAA? Что такое *aa_type_here*? Ни слова про АА для альфа/масок. Блин, это даже в "блогах". Это не уровень DTF! АЛЯРМ!

Ответить

Flame

Дмитрий
6

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

Ответить

Andrey Lazarevich

Flame
2

Вот весьма неплохой обзор. Пусть название не обманывает, там разбираются и пост-процессинговые. Хватило, чтобы восполнить знания при подготовке к собеседованию :-)
https://mynameismjp.wordpress.com/2012/10/24/msaa-overview/

Ответить

Flame

Andrey
0

Годно, спасибо. :) 2012 канеш, но все равно норм.

Ответить

Сергей Пуговкин

Andrey
0

Большое спасибо. К собеседованию, увы, не готовлюсь, но для самообразования подойдёт.

Ответить

Valery Kirichenko

Дмитрий
3

https://stopgame.ru/blogs/topic/55929
У этого же автора есть еще несколько интересных статей про графику в играх

Ответить

Bugrim .

Valery
1

Два года обновлял периодически его блоги, что бы дождаться новых статей про графон, но чёт тишина.

Ответить

Ярослав Миллер

Дмитрий
1

Наиболее подробное изложение из тех, что я видел:
https://habr.com/post/343876/

Ответить

Андрей Котов

Ярослав
0

Вот только эта статья устаревшая, алгоритмы которые сейчас рулят там только упомянуты в разделе про будущее.

Ответить

Marui Infantry

Дмитрий
0

Это не поможет. Потомучто когда у тебя на экране тонны разной геометрии вдали и невдали, тонкие линии на одежде, а художники скулят, что их работа портится этими вашими АА, то тут уже интернеты не помогут.

Ответить

Andrey Lazarevich

5

Про MSAA допущена некоторая неточность, а вернее какая-то каша из morphological anti-aliasing и SSAA.
Multisample anti-aliasing не совсем про выборочное увеличение точек на границах. Увеличение выборки происходит в любом случае, но вот затенение(shading) происходит для ОДНОЙ точки в центре фрагмента, а конечное значение получается в зависимости от количества точек прошедших растеризацию, однако тест глубины и прочие выполнять приходится все равно. Отсюда и выигрыш, поскольку самую затратную часть - фрагментный шейдер - выполняем один раз на точку, как и без AA.

Ответить

YamiE

Andrey
1

В случае deferred рендеринга шейдерить придётся, читая информацию каждого СЭМПЛА геометрии, каждый раз для КАЖДОГО источника света, что выльется в огромные потери производительности (привет mankind divided)

Ответить

Andrey Lazarevich

YamiE
0

Проблемы deferred shading-а и "классических" методов сглаживания - тема отдельного обсуждения, но за дополнение спасибо.

Ответить

solawind

5

АА вообще не отомрет с развитием разрешения дисплеев? Когда пиксели не различимы, в 4К и выше. Подключал игровой ноут к 4К ТВ, в нативном разрешении лесенок не видно, с включением АА наоборот чуть менее приятной мыльной картинка становится. А вот в меньших разрешениях разница конечно разительная

Ответить

Flame

solawind
0

По логике — как раз должно. На мобилах в первую очередь, потому что там разрешение (дпи) еще круче. Но в железо уже вложились, так что какое-то время будет и то и другое. :)

Ответить

Andrey Lazarevich

solawind
0

Думаю, что нет, не отомрет, как минимум по той причине, что алиасинг возникает не только из-за низкого разрешения. Временное сглаживание, mip-уровни, вот это все не просто так изобреталось.

Ответить

Patrick

solawind
0

Ещё здорово бы помог переход с прямоугольной растровой сетки дисплеев на гексагональную. Автоматическое уменьшение алиасинга и увеличение ДПИ. Но это слишком радикальное технологическое и производственное решение.

Ответить

Рамиль Рашидов

solawind
0

Если железо будет не напрягаясь тянуть 4K, она и FullHD с честным SSAA потянет. Так что будущее главным образом за производительностью.

Ответить

Doctor Net

5

Всегда всё упирается в подход самих разработчиков. Где-то в 1080 без сглаживания картинка смотрится чистой и без лесенок, а где-то ей можно пилить моих бывших. За последние лет 5, убедился что лучше Даунсемплинга нет ничего, на резкость не влияет и картинка становится гладкой как попка младенца.

Ответить

Vladimir Melnikov

3

SSAA, увеличивающий количество всех пикселей в четыре раза.

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

Ответить

Магнитный Паша

–2

<removed>

Ответить

Vladimir Melnikov

Milfy
10

Если бы. Для некоторых (в особенности приходящих с консолей, где таких широких возможностей нет вообще) это до сих пор загадка, даже про vsync далеко не все знают. А про различные технология затенения вроде HBAO+ и речи не идет. Поэтому подобные ликбезы это даже хорошо, если конечно не вводят пользователей в заблуждение (а так может быть, когда пытаешься упростить сложные вещи для обычного юзера).

Ответить

Ярослав Монахов

Vladimir
4

Vsync - далеко не такая простая тема, как кажется с первого взгляда, поэтому не увидительно, что не знают. Даже якобы продвинутые пользователи в 9 из 10 случаев до конца не понимают специфику работы вертикальной синхронизации: как конкретно она работает; чем отличается от обычного лимитирования кадров; в каких случаях увеличивает задержку ввода, а в каких - нет; в каких случаях вызывает "неровную" частоту кадров... А уж если копнуть тройную буферизацию, то там вообще темный лес.

Встречал статьи в относительно авторитетных источниках, в которых писалось, что vsync нужен только если частота кадров ниже, чем частота развертки, например. Что вообще не соответствует действительности.

Ответить

Dmitry

Vladimir
3

До сих пор не понимаю разницы между разными вариантами затенения. Где-то тени потемнее, где-то поярче. Вычитал что HBAO это для нвидии, ставлю это.

Ответить

Arthur Fischer

2

Посмотрел на скрины и снова убедился, что при высоком разрешении в сглаживании нет нужды в принципе. А на низком - SweetFx Lumasharpen + Nvidia Fxaa в помощь.

Ответить

YamiE

2

Олсо, для более наглядного представления о видах сглаживания можно скачать и потыкать вот эту демку http://blog.metaclassofnil.com/?p=851

Ответить

skamaz

1

Я вижу только больше мыла, когда оно включено.

Ответить

Kliment Matveev

skamaz
1

Есть блюр, а есть мыло - небо и земля.

Ответить

skamaz

Kliment
0

Так а блюр это не мыло что ле?

Ответить

Ян Андрущук

skamaz
7

Мыло - низкое разрешение. Блюр - размытие изображения.

Ответить

skamaz

Ян
0

Мыло это мыло. Низкое разрешение это четкость? Хотя ладно. Я просто не люблю сглаживание, глубину резкости, размытие и прочие мокрописьки. Всегда отключаю, глаза слезятся от всего этого.

Ответить

YamiE

skamaz
1

Кому как, я правильное taa с небольшим мылом больше предпочитаю, чем отвратительную рябь тебе текстур без него. Впрочем в ряби виноваты опять те же разрабы, что которые делают запредельную texel density, но, думаю, на это есть причины.

Ответить

Alex

YamiE
0

Рябь текстур? Вы в каком разрешении и с каким скейлом играете? Я часто 2,5К выкручиваю до 5к через NVidia DSR 4х и всё равно не вижу никакой ряби.

Ответить

YamiE

Alex
0

у меня gtx1060, какие там 2.5к =/ на 1080p дай бог поиграть. А рябь/муар как раз появляется когда разрешение текстуры больше, чем разрешение выводимое на монитор. Как раз таки в вашем случае, а так же в случае суперсемплинга это и не должно быть/проявляется минимально. Ну и mip уровни текстур тоже немного спасают.

Ответить

Alex

YamiE
0

Так зачем тогда выкручиваете детализацию текстур более нужного? Ваша проблема только в этом. ;)

Ответить

YamiE

Alex
0

Потому что могу ¯\_(ツ)_/¯ Да и совсем вблизи не так мыльно. От игры зависит на самом деле, я люблю потратить часик на перебор разных комбинаций, посмотреть что делает та или друга настройка. Как правило taa+высокие текстуры всё равно выигрывают у других вариантов по отношению качество/производительность.

Ответить

Kliment Matveev

skamaz
0

Нет.

Ответить

Леха Нилохов

1

В 1080p включать taa вообще не вариант. Возврат в эру пс3. А вот в 4к уже можно выбирать - крайне четкая картинка без сглажки или cgiная картинка с taa, но с худшей детализацией. Причем не обязательно 4к честные, вполне сойдёт и 1080п + резолюшен скейлинг.

Ответить

Anton Pashinin

0

MSAA — полезен лишь в отдельных случаях, сейчас встречается редко

Разве на мобилках не его используют?

Ответить

YamiE

Anton
1

Большинство мобильных девайсов не поддерживают новомодный deferred рендеринг, и до сих пор остаются на forward рендеринге, и потому ничего не мешает продолжать использовать такой удобный и относительно дешёвый msaa

Ответить

faradeiG

–16

tl;dr: алиаляйзинг - это когда тебя в жопу ебут.

Ответить

Артур Фёдоров

faradeiG
0

сраливкулак в другой стороне

Ответить

creo318

0

Для себя проблему сглаживания решил просто -- 4k телек и FXAA принудительно. В итоге всё, что идет в 1080p выглядит лучше, чем в нативном разрешении, а для 4k в абсолютном большинстве случаев картинка более чем приятная и без сглаживания по дефолту.

Ответить

key

0

Сейчас бы об антиалиасинге рассказывать в 2к18.
Как будто что-то изменилось с 2к11 года или статьи тех времен устарели(нет).

Ответить

Alex

0

Алиасинг с переходом между кадрами описан автором неверно. Описанное двоение изображения в соседних кадрах, во-первых, не является резким и соответственно алиасингом. А во-вторых, у этого эффекта уже давно есть другой правильный официальный термин: ghosting. И бывает он из-за двух вещей. 1. инерционности зрения (а она у всех разная). 2. типа и качества матрицы монитора/ТВ. Например, все типы, кроме TN, в 95+% реализаций начинают рисовать новый кадр не дожидаясь, пока полностью нарисуется предыдущий. Т.е., пока не зажгутся абсолютно все пиксели. В смысле, что самых медленных - не ждут. Поэтому, смотрите в обзорах на разлёт показателей измеренной скорости зажигания и тушения пикселей от минимальных до максимальных и это (чем больше - тем хуже) вам подскажет, какие примерно двоения и шлейфы вам ждать от такого монитора.

Ответить

Yu

0

Лично мне для игры SMAA хватает. В отличии от FXAA, MLAA и TXAA, он не мылит картинку (хотя конечно зависит от рук разработчика).

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

Усугубляет положение вещей еще и мода на "закрытие" игровых движков, где даже тупо консоль вызвать нельзя.

Ответить

Илюхер XXIII

–1

Всю жизнь MSAAx4 было прекрасным выбором, зачем понапридумывали этой фигни, которую хрен запомнишь и хрен отличишь(

Ответить

Ярослав Монахов

Илюхер
0

MSAAx4 никогда не был "прекрасным выбором". Он был приемлемым выбором. Лесенки полностью не убирает, а по производительности бьет ощутимо. Не даром при низкой производительности всегда первейшая рекомендация была "выключить АА".

Ответить

Магнитный Паша

–3

<removed>

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]