Какое сглаживание лучше fxaa или taa
Перейти к содержимому

Какое сглаживание лучше fxaa или taa

  • автор:

Выбор типа сглаживания в игре

Выбор типа сглаживания в игреВыбор типа сглаживания в игреВыбор типа сглаживания в игреВыбор типа сглаживания в игреВыбор типа сглаживания в игре Выбор типа сглаживания в игре

Итак, методы можно разделить на 2 типа: для средних ПК подойдут MSAA, FXAA и TAA, а для производительных ПК — SSAA и DLSS. Однако, даже на далеко не мощном компьютере можно включить SSAA, если графика в игре невысокого качества. Если компьютер имеет среднюю конфигурацию и важны детали — выбирайте MSAA. Если в приоритете гладкость — попробуйте FXAA. В любом случае, есть вариант эмпирики.

Сглаживания, или как потерять в производительности не всегда получая лучшее качество

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

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

Для тестов я взял игры в которых возможно однозначно определить используемый параметр сглаживания, ибо под сглаживанием, где не указан точный метод, может использоваться всё что угодно, даже изменение исходного разрешения. К примеру, вот что специалисты из Digital Foundry написали про сглаживания в Assassin’s Creed Odyssey (перевод любительский):

При высоком параметре исходное разрешение сохраняется, так же данные из предыдущих кадров интегрируются в текущий кадр, обеспечивая более плавный и стабильный кадр благодаря временной реконструкции. Средний и низкий параметр (сглаживания — прим. авт.) фактически снижает исходное разрешение примерно до 90% и 80% соответственно, полагаясь на временный суперсэмплинг для добавления дополнительных деталей.

Digital Foundry

Получается, что при низком и среднем параметре сглаживания картинка начинает рендериться в более низком разрешении. И как в этом случае проводить параллели, если две игры будут использовать один и тот же метод сглаживания, но в перовом случае игра будет использовать более низкое исходное разрешение и технологии временной реконструкции до необходимого разрешения, а вторая игра будет рендерить картинку по честному? Разумеется, в первом случае fps будет выше, что можно проверить по тестам того же самого Ассасина, где при включении минимального сглаживания кадровая частота увеличивается.

Таким образом из списка своих игр я отобрал несколько проектов (в скобках указаны доступные сглаживания):

  • Assassin’s Creed Unity (FXAA; MSAA 2x, 4x, 8x; TXAA)
  • Assassins Creed Syndicate (FXAA; MSAA 2x, 4x + FXAA; TXAA 2x, 4x + FXAA)
  • Rise of the Tomb Raider 20 Year Celebration (FXAA; SMAA; SSAA 2x, 4x)
  • Shadow of the Tomb Raider Definitive Edition (SMAA _, 4x; SMAAT2x; TAA

Все игры в тестах лицензионные, сервис через который запускались игры будут указываться отдельно. Это делается из-за недавнего материала, где игра, запущенная через Steam и EGS, может выдавала различную кадровую частоту (материал по можно изучить тут — ссылка). В этой статье одна и та же игра была запущена через два лаунчера, на двух ПК, и при всех тестах EGS-версия стабильно выдавала на 1-3 кадра больше.

Разумеется, у меня есть ещё игры которые поддерживают выбор сглаживания, но если бы я решил использовать в тестах CS:GO или Portal 2 из начала 2010-ых, которые были созданы на основе морально устаревшего DX9, или GTA V, созданная для поколения Xbox360 и PS3, но которая использует на ПК более современный DX11. Данные игры уже морально устарели в техническом плане. AC Unity тоже игра не первой свежести, но создавались она уже под 8 поколение консолей, PS4 и XBox One.

Но есть ещё пара игр, и с ними уже интересней. Из наиболее современных у меня установлены Mafia Definitve Edition и Cyberpunk 2077. Если в случае с первой игрой настройки сглаживания выставляются пресетами, про что я писал выше, то в Cyberpunk 2077 вообще нет настроек сглаживания. И при первой же попытке прогуглить всё становиться на свои места: настройки сглаживания можно изменять либо копаясь в конфигурационных файлах, либо устанавливая специальные моды. Так же как игра хороша в сюжетном плане, так же она проваливается в техническом.

Assassin’s Creed Unity

Игра запускалась через Ubisoft Connect

Прорисовка местности — Очень высоко; Текстуры — Максимально высокое;Тени — Мягкие тени Nvidia; Ambient occlusion — HBAO+

Начнём с самой старой игры в данном списке, — Assassin’s Creed Unity. Игра поддерживает 5 сглаживаний, которые реализованы через три различные технологии. И технология, которая выделяется из списка, это TXAA. Технология сглаживания, разработанная компанией Nvidia, которое представляет из себя прокаченный TAA. И для меня это самое интересное, ведь опираясь на технологии временного сглаживания, по заявлениям Nvidia, оно может обеспечивать качество сопоставимое с более требовательным MSAA. Не будем затягивать и перейдём к скриншотам:

А в плане FPS ситуация следующая:

Сглаживание FPS Падение производительности (%)
Без AA 64 0
FXAA 61 4
MSAA 2x 49 23
MSAA 4x 31 51,5
MSAA 8x 20 68
TXAA 31 51,5

Падение производительности указывается от настройки "Без АА"

Для меня очень интересно было сравнить TXAA с MSAA 4x, которые показывают одинаковую производительность, но вот в плане качества картинки различия есть. Рассмотрим их подробнее отдельно.

  1. Ворота чётче при MSAA, так же ситуация с забором. На воротах при сильном увеличении можно даже разглядеть черты гербов. Этим же объектам TXAA добавляет размытия.
  2. При включении MSAA на окнах появляются пиксели, при том что при других сглаживаниях нет такой проблемы. TXAA просто убирает часть лесенок.
  3. TXAA cглаживает углы зданий, практически убирая лесенки. Трубы, которые немного выше, имеют чёткую ступень и немного пикселей по краям при MSAA, с TXAА они размываются, как и с воротами.
  4. Похожая ситуация и с Нотр-Дам-де-Пари, где при MSAA 4x лесенки и пиксельность внутри текстуры сохраняется, TXAA опять мылит текстуру, но лесенки и пиксели практически исчезают.

Тут уже каждый для себя может решить, что ему важнее, более чёткая картинка с пикселями или более мыльная картинка, но с меньшей пиксельностью. В целом, обратите внимание на то что при включении MSAA появляются пиксели, которых нет без AA, нет их и с FXAA или с TXAA. Скорее всего это проблема игры которую так и не поправили, ведь о техническом состоянии игры на старте говорили много, моё же мнение про игру в текущих реалиях можно посмотреть тут.

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

Assassin’s Creed Syndicate

Игра запускалась через EGS, но после запуска игра больше не требует его наличия в фоне, в следствии чего работал только Ubisoft Connect

Окружение — Cверхвысоке; Текстуры — Высокие; Тени — PCSS Ультра; Ambient occlusion — HBAO+ Ультра

Следом идёт Синдикат, который имеет уже не просто сглаживания, а комбинации методов. И самое главное, что объединяет все виды сглаживание между собой в данной игре, так это то что они задействуют FXAA. Так что различий между итоговыми изображениями будет меньше, ведь FXAA это постобработка. Да, я заикался что я не буду говорить про принципы работы сглаживаний, но с вашего позволения всё же пара слов об FXAA и почему тут разница может быть менее заметной. FXAA работает уже после построения кадра, на этапе постобработки. Данная технология ищет резкий переход между цветами и данное место размыливает. Таким образом постоянное использование FXAA будет размывать некоторые участки, где, в теории, могли быть различия в качестве.

Сглаживание FPS Падение производительности (%)
Без AA 48 0
FXAA 46 4
MSAA 2x + FXAA 34 29
MSAA 4x + FXAA 29 39,5
TXAA 2x + FXAA 40 17
TXAA 4x + FXAA 30 37,5

FXAA это «лёгкое» сглаживание, а MSAA тяжелее TXAA, поэтому MSAA показывает кадров немного меньше, хотя качество графики меняется не сильно. Всё дело, как я уже отмечал, в постобработке. В принципе, искать отличия можно, мне бросилось в глаза некоторые детали заднего плана, такие как тросы на кораблях, которые выглядят чётче с мульти семплингом, ведь комбинация FXAA + TXAA создаёт замыливание немного больше. Похожая ситуация и с забором, который MSAA делает более чётким и выраженным. Но в целом картинки максимально похожи.

Rise of the Tomb Raider

Игра запускалась через EGS

Текстуры — Очень высоко; Анизотропная фильтрация — 16х; Тени — Очень высоко; Детализация — Очень высоко; Динамическая листва — Высоко; Ambient occlusion — HBAO+;Отражения света — Очень высоко; Глубина резкости — Откл.

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

Сглаживание FPS Падение производительности (%)
Без AA 74 0
FXAA 73 1
SMAA 69 7
SSAA 2x 45 39
SSAA 4x 32 57

Очень хорошо следить за различиями между сглаживаниями можно по двум бочкам, железной слева и деревянной справа, а также по корпусам медеплавильного завода. Минимальное сглаживание уже позволяет избавиться от большинство лесенок. SMAA немного улучает восприятие, убирая часть мыла после FXAA. В целом, в данной игре сглаживания расположение по порядку, от менее требовательного, с наименьшей работой на кадром, к наиболее качественному и затратному.

SSAA привносит в кадр мелкие детали, что в частности можно заметить по деревянной стеночке у железной бочки, и за счёт виртуальных пикселей делает края текстур более качественными. Для этого используется, как уже я отметил, рендер в большем изначальном разрешении, которое для FHD составляет 2688×1512 пикселей при 2х (разрешение немного больше чем 2k, что даёт чуть больше 4 миллионов пикселей против ~2 миллиона у 1080р) и 3840×2160 с SSAA 4x (а это уже разрешение 4k на секундочку). Разумеется это всё влияет на общую детализацию, но и по кол-ву кадров в секунду можно заметить что это не проходит бесследно.

Shadow of the Tomb Raider

Игра запускалась через EGS

Текстуры — Ультра; Анизотропная фильтрация — 16х; Тени — Высоко; Детализация — Ультра; Ambient occlusion — HBAO+; Отражения света — Очень высоко; Screen Space Contact Shadows — Высоко; Глубина резкости — Откл.

Следующая тётя Лариса, в отличии от других игр, не предлагает нам простейшего FXAA, но зато появляется новое сглаживание — TAA. Посмотрим что будет в итоге:

Сглаживание FPS Падение производительности (%)
Без АА 61 0
SMAA 58 5
TAA 58 5
SMAAT2x 56 8
SMAA 4x 42 31

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

При этом основные отличия находятся в левой части кадра, вот места, к которым можно присмотреться:

Поручень на пирсе и нижняя доска, которая находится на уровне воды, при сглаживании теряет большую часть лесенок, хотя эти же самые сглаживания замыливают зазоры между досками. Так же при включении сглаживания пиксели и лесенки на крыше практически исчезают, хотя в разной степени всё же остаются. На лодке, под цифрой 3, при включении SMAA кол-во лесенок и неровностей минимизируется, использование других сглаживаний ещё сильнее уменьшает их количество. В случае с SMAA 4x это произошло из-за большей выборки пикселей, а SMAAT2x и TAA сделали это благодаря технологиям временного сглаживания.

Из менее интересного можно посмотреть на плакат справа сверху, который так же немного меняется. Без сглаживания его границы игра нам «строит» из лесенок, и даже минимальное сглаживание эти лесенки разбирает на запчасти, но вот с текстом интересней: при SMAA и без сглаживания надпись немного меньше. Обратите внимание на буквы "L", первая буква на плакате, и букву "D", первая буква третьего слова. Без AA или с SMAA данные буквы немного меньше, с другими сглаживаниями происходит «утолщение» этих букв, L-ка набирает немного с левой стороны, а D-шка практически закрывает дырку от бублика в середине и так же набирает в объёме.

Заместо итога

Сглаживание действительно влияет на восприятие картины и на производительность, как неожиданно. Если смотреть на сглаживание которое попалось в трёх играх, FXAA, то в среднем оно уменьшает производительность на 3%, что в большинстве даже не заметно. Но это если мы будем смотреть на кадровую частоту, картинку оно меняет, местами даже заметно. Лесенки и мелкие детали стараниями данной технологии заменяются на размытые текстуры. TAA, который правда попался только в одной из игр, так же размывает текстуры, но делает это более качественно, а если смотреть на его улучшенную версию, TXAA, то оно местами показывает себя ещё лучше. Временные сглаживания в принципе смотрятся достойно, ведь даже в DLSS 2.0 для построения кадров используются технологии временной реконструкции, так что не исключено что для этого специалисты из Nvidia подтянули какие-то наработки из TAA или TXAA.

Если же мы будем смотреть на самые требовательные сглаживания, то всё тоже более-менее логично: самое требовательное сглаживание из предложенных это SSAA 4x, на втором месте MSAA 8x, которые отбирают у пользователей 57 и 51,5% производительности. В первом случае это обусловлено рендером всего кадра в разрешении 3840×2160, а второй метод создаёт картинку уже в 8 раз больше исходной, но не на всей площади кадра, а только на границах объектов. И там и там такие требования к железу вполне объяснимы.

Качество картинки. Тут уже сложнее, ибо восприятие картинки для каждого своё, и помимо очевидного, убирания лесенок, некоторые изменения воспринимаются по разному. В частности, я знаю достаточно людей которые предпочитают играть без всякого сглаживания, нежили ставить FXAA, я же не против небольшого мыла и спокойно могу выставить FXAA или же, если есть, разновидности TAA. Вернёмся к перовой игре, где у нас есть выбор: пиксильность с MSAA или размытие с TXAA, в это ситуации я бы предпочёл TXAA и не переживал бы по поводу размытия гербов на воротах в дали. Единственная игра, где разница для меня была минимальной, это Assassins Creed Syndicate, где большинство различий между MSAA и TXAA, как в Единстве, съедает постобработка в лице FXAA. И в данной ситуации я бы выбирал сглаживание которое меньше сажает FPS.

Однако данный тест нельзя назвать полностью объективным. Дело в том что изначально я тестировал Shadow of the Tomb Raider в другой локации, но после небольшой технической накладки, о которой дальше, я начал делать перетест. И в результате перетеста в другой локации, в картинке появились отличия, которые можно заметить без лупы. До этого тесты, которые я делал в скрытой деревне, показывали различия в кадровой частоте, но не в картинке. Какой из этого можно сделать вывод? Вполне очевидный: в игре есть локации которые не сильно меняются при включении сглаживания. На это может влиять дальность на которой подгружаются текстуры высокого разрешения, от дальности отрисовки мелкий деталей. Часть параметров разработчики могут специально занижать, дабы их продукт запускался на большем количестве систем. Например на консолях разработчики очень часто снижают различные параметры, в частности буфер альфа канала, что позволяло на консолях прошлого отрисовывать в сцене меньше частиц и полупрозрачных элементов, а уже это положительно сказывается на стабильности работы.

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

Но этот тест я сделал не для того чтобы искать различия в графике, это больше побочный результат. Я могу поиграть в пиксельный рогалик, такой как «Loop Hero» или «Vampire Survivors», песочницу «Teardown», приключение «LumbearJack» или логическую игру «Papers, Please». Да мне кажется что во всех перечисленных играх полигонов меньше чем у модели какого-нибудь главного героя в современной ААА игре. Для меня на первое место выходит вопрос производительности, ведь с лесенками смириться можно, а вот с кисельностью управления и нестабильным ферйм таймом уже сложнее. Так же я хотел понять в какую сторону вообще дует ветер в данном вопросе.

И вот это вопрос поинтересней, ибо на примере 4 игр из двух франшиз я кое-что смог заметить. А вы заметили некую тенденцию? В первых частях были обыкновенные сглаживания, во второй части ассасинов пошли комбинации методов. Вторая же часть Лары пошла дальше, — появилась не только комбинация сглаживаний, но также отказались от FXAA в пользу ТАА. Syndicate вышел одновременно с Rise, Shadow вышла на три года позже. И к моменту выхода Shadow, в 2018 году, в ассасинах уже применялись технологии временной реконструкции, опять же вспоминаем отчёт DF в начале материала. Из этого можно сделать вывод что это тенденции индустрии в целом, сначала обыкновенные сглаживания, после чего последовал отказ от традиционных технологий в пользу комбинаций, за этим начался переход к “временным” технологиям (сглаживанию и реконструкции). Моя ставка что традиционные сглаживания и дальше будут заменяться на новые технологии, разве что некоторые разработчики будут писать что применяется в их игре. Как я отмечал комбинации методов применяются всё чаще, всё сильнее приживаются технологии апскейла и реконструкции кадров… Так что я не исключаю что через некоторое время такой старинный параметр, как сглаживание, может вовсе отойти на второй план.

Одним из фактов, который говорит в пользу данной теории, является вот такой немного странный пример. Думаю что большинство знают, ну или точно слышали, про DLSS (Deep Learning super sampling, суперсэмплирование на основе глубокого обучения), умное сглаживание и масштабирование разработанное компанией Nvidia, но кто-то ещё помнит про DLAA (Deep Learning anti-aliasing, сглаживание на основе глубокого обучения)? Это очень похожие технологии, но в отличии от DLSS, DLАА не прибегает к реконструкции кадров и работает с исходным разрешением. В скольких играх Вы видели данную настройку? Жива ли данная технология вообще? Возможно прирост от данной технологии оказывается не таким большим как от DLSS, может внедрять сложнее, или в раскрутку данной технологии Nvidia не вливает столько же средств как в DLSS… Как бы то не было игроделам гораздо интересней использовать DLSS, что, помимо всего прочего, позволит попасть в рекламные материалы Nvidia и дополнительно пропирится.

А теперь о технической накладке, которая натолкнула на размышления о том, во что действительно упирается система? В момент тестов Лары MSI Afterburner показывал упор в ГПУ, частоты которого не поднимались выше 1800 МГц, хотя карта может буститься до 2 ГГц. И после некоторых экспериментов выяснилось что предел потребления видеокартой (Power Limit) после какого-то обновления урезался до 70%, толи драйвер так захотел, толи обновление Afterburner пошалить решило. После того как значение было возвращено на 100% в тех же самых тестах карта стала брать доступные её 1995 МГц, а загрузка ГПУ осталось на уровне 100%. И после этого пришлось делать перетест с видеокартой работающей на максимум.

Так что иногда загрузка какого-то компонента на 100% не обозначает его реальную загрузку на эти 100%, возможно где-то есть другой ограничивающий фактор. В данном случае это предел потребления, может случиться что процессору не хватает данных и пока он их ждёт система не работает на максимум, а загрузка то 100%, ведь задача стоит. Может такое случиться что переполнен видеобуфер, а в системе медленная ОЗУ или забита шина PCI-e, а может процессор занят другими задачами, из-за чего он вовремя не может доставить данные из RAM в VRAM. И из-за всего этого видеокарта простаивает и сажает производительность, хотя загрузка так же будет в 100%.

Как работает рендеринг 3D-игр: сглаживание с помощью SSAA, MSAA, FXAA, TAA и других методик

image

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, поблагодарите про себя инженеров и программистов, придумавших всё это.

  • Работа с 3D-графикой
  • Разработка игр

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

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

Лучший Telegram-канал про технологии (возможно)

Что такое сглаживание и для чего нужно

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

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: каким должен быть объект, как он отрисовывается, какие детали теряются

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

Так вот, сглаживание, или же AA (Anti-Aliasing) — это способ устранения артефактов алиасинга, в том числе и тех самых «лесенок» на изображении. Оно позволяет сделать сцену в игре более реалистичной и приятной глазу, как в реальной жизни. Добиваются плавности как раз «смягчением» переходов между пикселями, заполняя соседние пиксели корректными оттенками.

Какие виды сглаживания в играх бывают

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

Сами методы можно разделить на 2 категории: те, которые применяются во время рендеринга и те, которые применяются к уже построенному изображению (постпроцессинговые).

SSAA (Super Sampling Anti-Aliasing)

Также его называют методом избыточной выборки. Основан на принципах получения образцов цвета (сэмплов) сразу в 4 участках пикселя с последующим усреднением. Важное уточнение: для этого вместо одного пикселя рендерятся четыре, и уже после расчётов цвета они сжимаются обратно до одного. Кстати, необязательно должно использоваться именно четырёхкратное увеличение, это лишь один из самых распространённых типов алгоритма. Существует множество вариаций паттернов выборки: среди них ordered grid, rotated grid, jitter. Все они отличаются только расположением точек получения сэмплов и точностью результата. Иногда в настройках игры можно увидеть несколько видов SSAA, которые как раз будут отличаться паттернами. Самый простой — ordered grid (OGSSAA), остальные методы, как правило, эффективнее.

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Квадрат — это пиксель, точки — это сэмплы. Слева направо: Ordered Grid, Rotated Grid, Jitter

Существенным недостатком SSAA является его высокое требование к ресурсам — неудивительно, ведь по сути это рендеринг всей сцены в разрешении, превышающем нативное в несколько раз. Зато этот метод сглаживания один из самых эффективных и точных, правда, в современных AAA-проектах встречается не так часто.

DSR (Dynamic Super Resolution)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

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

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: рендеринг в Full HD, 2K и 4K

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

MSAA (MultiSample Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

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

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: без сглаживания, с MSAA 8x

MSAA в играх встречается в нескольких типах: 2x, 4x, 8x, 16x. Число отражает количество выборок на пиксель. Чем оно выше, тем лучше результат, но сильнее нагрузка.

CSAA (Coverage Sampling Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: без сглаживания, 8x CSAA, 16x CSAA

CSAA — это доработанный MSAA от компании NVIDIA. Он выдаёт результат, близкий к MSAA 8x или 16x, потребляя ресурсы на уровне MSAA 4x. Не углубляясь в детали, улучшение сглаживания достигается за счёт использования информации ещё и о соседних пикселях. Похожая технология от AMD называется EQAA (Enhanced Quality Anti-Aliasing). Обе технологии почти не встречаются в современных играх из-за того, что сейчас разработчики предпочитают использовать универсальные методы.

TAA (Temporal Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Чтобы открыть картинку в исходном разрешении, кликните на неё и нажмите «Показать оригинал»

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

FXAA (Fast approXimate Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

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

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: без сглаживания, с FXAA

MLAA (MorphoLogical Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Принцип работы MLAA

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

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

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

SMAA (Subpixel Morphological Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

SMAA — это смесь FXAA и MLAA, работающая на видеокарте. В отличие от MLAA, ищёт различия не в цветах, а в яркости пикселей. Кроме того, использует не только L-, Z- и U-образные паттерны, но ещё и диагональные.

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: без сглаживания, SMAA, SMAA и рендер в увеличенном разрешении

Существуют разные типы SMAA:

  • SMAA 1x — стандартный алгоритм, определяет грани объектов при помощи локального контраста, вычисляемого поиском различий в яркости пикселей, ищет геометрические объекты и диагональные линии;
  • SMAA T2x — SMAA 1x + TAA;
  • SMAA S2x — SMAA 1x + MSAA;
  • SMAA T4x — SMAA 1x + MSAA + TAA.

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: сравнение, без сглаживания, SMAA 1x, SMAA T2x, SMAA T4x

Самый эффективный, как можно понять из описания, SMAA T4x, он же и самый прожорливый из этих вариантов. На скриншотах из Shadow of Tomb Raider заметно, как сильно меняется изображение при включении SMAA 1x, а вот разница между SMAA T2x и T4x есть, но она не такая существенная.

CMAA (Conservative Morphological Anti-Aliasing)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Как и предыдущие три, CMAA — это постпроцессинговый метод. Нагружает систему чуть больше, чем FXAA, но меньше, чем SMAA. В теории, CMAA обеспечивает куда более лучшую по качеству картинку, нежели примитивный FXAA, но это зависит от реализации: на примерах из DiRT Rally 2.0 отлично видно, что алгоритм не очень сильно влияет на сцену.

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: без сглаживания, с CMAA

На двух изображениях выше сложно увидеть разницу, но она есть: отдалённые предметы более чёткие и с меньшим количеством лесенок. Особенно видно это на мелкой траве вдалеке, а также на дальних конусах.

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

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

DLSS (Deep Learning Super Sampling)

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Сравнительно новая технология, на данный момент доступная только на видеокартах NVIDIA RTX. Очень эффективный метод, который при небольших требованиях к ресурсам выдаёт качественную картинку. Конечно, если речь идёт о DLSS 2.0 и 2.1 — первая итерация технологии была очень сырой и сильно «мылила» картинку.

Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA

Слева направо: DLSS, TAA

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

  • В тему:Какие игры поддерживают сглаживание DLSS и DLSS 2.0

Конечно, технология всё ещё сыровата даже во второй версии, и иногда встречаются небольшие артефакты, но даже сейчас результат получается лучше, чем при использовании TAA. На картинке выше сравнивается DLSS и TAA. Издалека разницы нет, но при детальном рассмотрении видно, что с DLSS дальние объекты чётче, а рюкзак выглядит чуть мыльнее, но на нём нет лесенок.

Итог: какое сглаживание лучше выбрать

Технологий сглаживания действительно много, но каждая из них имеет право на существование. Какая же из них самая лучшая?

  • SSAA — отличный выбор для мощного компьютера и идеального результата.
  • DSR — легко заменяет редко встречающийся в современных играх SSAA. Результат и нагрузка почти такие же.
  • DLSS — если в наличии есть видеокарта NVIDIA RTX, то смело включайте только этот вид сглаживания. За исключением мелких артефактов и редких замыливаний, технология обеспечивает превосходное сглаживание и не очень сильно «режет» FPS.
  • MSAA — так как зачастую предыдущие методы слишком ресурсозатратны, этого метода будет достаточно для неплохого сглаживания картинки в играх.
  • TAA — с его помощью можно при меньшей нагрузке на систему добиться того же качества, что и с MSAA, но есть недостатки в виде «мыла» и «шлейфов».
  • СSAA/EQAA — более редкий аналог MSAA, который выдаёт результат чуть лучше.
  • SMAA 1x, MLAA, CMAA, FXAA — подойдут слабым ПК (в порядке убывания влияния на частоту кадров).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *