что такое fxaa в настройках игры
Сглаживание FXAA и SSAA: что это в играх и за что оно отвечает?
Что это такое — FXAA и SSAA в играх
Как вы уже смогли догадаться, FXAA и SSAA — это сглаживание в компьютерных играх. Подробнее мы с этими терминами разберемся чуть ниже. А пока на минутку остановимся на простой теории. Все мы знаем, что изображение на экране компьютера состоит из пикселей. Пиксель — это очень маленький квадратик. Если углубиться в школьные знания по геометрии, то мы вспомним, что из квадратиков легко построить прямоугольные фигуры, располагая их как вертикально, так и горизонтально. Но если попытаться построить из квадратиков круг или наклонную линию, то мы увидим, что поверхность таких фигур будет в виде «ступенек». То же самое происходит и с пикселями на изображении.
Проблема «ступенчатых» изображений на экранах решается 2-мя проверенными подходами:
Сглаживание. Это более «старый» и проверенный подход, который появился еще в 70-х годах. В то время создать экран с разрешением 4К не представлялось возможным, поэтому проблему решали как могли. Суть сглаживания сводится к тому, что на соседних от «ступенчатых» пикселях добавляют цвета и градиенты, что визуально смягчает «ступенчатые» объекты.
Как работает сглаживание SSAA и FXAA
У него достаточно простой принцип работы:
Потом это изображение «сжимается» до размера вашего экрана.
Это одна из самых первых технологий для сглаживания, но ее все реже используют в современных играх, так как она ну очень сильно «любит» FPS и видеокарты. А пользователям компьютеров эта «любовь» не по вкусу. Поэтому ей на замену подготовили менее прожорливую технологию — MSAA.
У этого подхода есть один недостаток — очень сильно замыливаются мелкие и отдаленные объекты, вплоть до того, что становится невозможным различить их на общей сцене.
Заключение
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Сглаживание в играх: как разработчики делают картинку приятнее и какой тип сглаживания выбрать?
Авторизуйтесь
Сглаживание в играх: как разработчики делают картинку приятнее и какой тип сглаживания выбрать?
Если вы когда-нибудь заглядывали в настройки графики в играх, то, вероятнее всего, замечали параметр сглаживания. И если другие настройки, такие как дальность прорисовки или качество теней, достаточно интуитивны, то с пониманием сглаживания могут возникнуть проблемы.
Зачем нужно сглаживание в играх?
Строение экрана монитора представляет из себя матрицу квадратных пикселей. Несложно догадаться, что в таком случае идеально правильными будут отрисовываться только горизонтальные и вертикальные линии. Как только компьютер попытается отрисовать наклонную линию — появляется зубчатость пикселей.
Лесенка пикселей при отрисовке наклонных линий
Эту проблему можно решить приобретением монитора с бОльшим разрешением. Скорее всего, если у вас не современная видеокарта, то придётся обновить и её. Но такой вариант устроит далеко не каждого.
По этой причине разработчики добавляют в свои игры технологию сглаживания. Она была придумана ещё в 1972 году, но популярность в игровой индустрии начала набирать только спустя несколько десятков лет. Суть сглаживания заключается в том, чтобы закрасить соседние от зазубренности пиксели в промежуточный цвет (или градиент цветов). В таком случае переход будет казаться не таким резким, тем самым сглаживая границу.
Пример сглаживания наклонной линии
Примечание Сглаживание применяется не только в играх, но и в интерфейсах программ и даже просто в операционных системах. Помимо изображений, алгоритм обрабатывает и текст, делая маленький шрифт более читаемым.
Добиться сглаживания можно разными способами. Ниже перечислены 8 основных и популярных алгоритмов сглаживания, однако в играх могут попасться и другие типы.
SSAA (SuperSample Anti-Aliasing)
Самый простой, но в то же время самый эффективный тип сглаживания, который в играх даёт самую приятную картинку. К сожалению, он сильно снижает производительность. Видеокарта виртуально увеличивает разрешение экрана в несколько раз. После отрисовки кадра изображение сжимается обратно до оригинальных размеров, усредняя цвета виртуальных пикселей в соответствующие им реальные пиксели. Если разрешение экрана Full HD (1920×1080), а сглаживание работает в четырёхкратном режиме, то кадр будет отрисовываться в разрешении 4K (3840×2160).
Примечание Усреднение пикселей — это просто нахождение среднего цвета от нескольких виртуальных пикселей. Например, в SSAA x 4 разрешение увеличивается в два раза. Тогда каждому реальному пикселю будут соответствовать 4 виртуальных. Вот примеры того, как будет происходить усреднение:
Примеры усреднения цветов
Такой тип сглаживания убирает лесенку, делает мелкие объекты вдали более различимыми, а саму картинку просто более приятной для глаз.
Сглаживание в играх
Всем привет! Я решил немного разбавить свои блоги, небольшими статьями про графические и технические особенности игр. Эти статьи не будут частым гостем, я думаю раз в пару месяцев.
Первой технологией, которую мы с вами разберём станет – сглаживание. Почему именно она? Да потому, что данная тема тесно связанна с тем, как найти идеальный компромисс между вашими аппаратными ограничениями и отображаемой картинкой на экране.
Как всегда две версии: видео и текстовая.
Зачем оно нужно?
В Blender я создал простой куб, и пока камера направленна параллельно к одной из его плоскостей то, кажется, словно всё отлично. Но стоит немного повернуть, как мы тут же увидим, как на его гранях появились лесенки. Которые будут постоянно перестраиваться при движении. А теперь представьте, что происходит в играх, которые наполнены огромным количеством постоянно двигающихся объектов, правильно всё будет создавать эффект эдакого «мельтешения».
Похожий принцип будет и со шрифтами. Ведь изначально в Windows используется алгоритм сглаживания – ClearType. И вот если его отключить, то мы можем наглядно наблюдать за тем, как наши гладкие шрифты покрываются рубцами.
Причина этого проста – наши мониторы выводят изображение дискретно, то есть пиксель либо залит закрашен, либо нет. Ну а как мы все знаем, пиксели квадратные, и из этого следует то, что идеальными линиями могут быть только вертикальные и горизонтальные. А все другие объекты, которые находятся под углом будут отображаться с помощью пикселей, которые находятся по диагонали. На отдаление это может и вправду показаться что линия ровная, но стоит приблизить, как эта иллюзия тут же рушится.
Поэтому при сглаживании мы и используем соседние пиксели, которые могли бы сгладить всё это подходящим оттенком. Но мало просто иметь возможность задать полутона, нужно каким-то образом машине объяснить, какие для этого цвета вообще нужно объединить и где их применять.
Сглаживание в играх
Перед тем как я начну рассказывать про каждый из часто встречаемых алгоритмов сглаживания, стоит кратко упомянуть как вообще происходит подготовка кадра:
Это важно понимать ведь в зависимости от алгоритма, сглаживание может применяться как к готовому 2D кадру, так и на этапе создания 3D сцены что по итогу влияет на качество изображение, а также на нагрузку системы.
SSAA (SuperSample Anti-Aliasing)
Самое простое, самое качественное и самое прожорливое, всё это про сглаживание SSAA, или как его ещё называют метод избыточной выборки.
Данный алгоритм отрисовывает нашу сцену в более высоком разрешение для того, чтобы собрать данные о границах объектов. После этого уменьшает сцену в родное разрешение и применяет полученные данные для создания полутонов. Для того что бы подбор цветов был наиболее правильным, вместе с объектами сразу отрисовываются все тени, источники освещения, текстуры и т.д. Что как не трудно догадаться увеличивает ресурсозатратность. Однако это даёт лучший результат из всех.
Если упростить все вышесказанное, то: при SSAA x4, наше изображение увеличивается в 4 раза. То есть наш один физический пиксель делится на 4 виртуальных. И уже с помощью слияния цветов виртуальных пикселей получается нужный полутон для нашего объекта.
Но главная проблема данного алгоритма заключена в том, что он применяется ко всему кадру! То есть, те объекты, которые находятся за гипотетической стеной и скрыты от глаз игрока, всё ровно будут подвергаться сглаживанию. И именно по этой причине данный алгоритм является самым требовательным.
MSAA (MultiSample Anti-Aliasing)
Метод множественной выборки, пришёл на смену прошлому. Данный алгоритм работает по похожему принципу что и метод избыточной выборки, вот только с некоторыми отличиями.
Больше не отрисовываются объекты, которые не видит игрок. Так же было решено изменить то, к чему применять сглаживание. Ведь SSAA применял сглаживание ко всему в кадре, в то время как MSAA применяет его только к границам объектов. Что по итогу сделало сглаживание чуть хуже, но за то довольно ощутимо снизило нагрузку на видеокарту.
Из основных недостатков данного метода, это то, что он не работает на прозрачных и зеркальных поверхностях: стекла, вода, отражения и прочие. И то, что он крайне сильно нагружает систему в тех местах, где есть много мелких объектов, шерсть, трава и т.д.
Следующие алгоритмы, про которые пойдёт речь, применяются к готовому 2D кадру, что в разы снижает требование к системе, но также и качество сглаживание. Данные методы убирают лесенки, но дают «любимое» многими мыло.
FXAA (Fast approXimate Anti-Aliasing)
Быстрое приблизительное сглаживание разработанное Nvidia, как я уже говорил ранее работает с готовым 2D кадром, так что определить границы с помощью моделей уже не получится. Поэтому в данном алгоритме используется метод нахождения границ по контрасту. И уже с помощью этого пиксели будут окрашиваться в градиенты что бы сделать эффект сглаживания.
Если по-простому, то наш условный персонаж в тёмной одежде, находится на ярком фоне. Наш алгоритм благодаря резкой смене яркости определяет границы объекта. И красит пограничные пиксели в градиент от яркого цвета фона, в тёмный цвет персонажа за счёт чего и получается сглаживание.
Ну а почему с данным методом картинка становится такой мыльной что её спокойно можно взять с собой в душ? Ну причина этого заключена в том, что данный метод применяет сглаживание абсолютно ко всему контрастному.
SMAA (Subpixel Morphological Anti-Aliasing)
Субпиксельное морфологическое сглаживание, использует способ поиска участков, которые нужно сгладить похожий на тот, что используется в FXAA, то есть по контрасту цветов, яркости. Но в добавок к этому в нём заложен принцип MLAA обычного морфологического сглаживания, а то есть поиск границ осуществляется не только контрастностью, но и с помощью паттернов.
В наследство от MLAA достались паттерны – Z, U, L. Но этого было недостаточно, и были добавлены разные диагональные паттерны, с помощью которых делается более точное определение границы объекта и плюс к этом производится отсечение тех участков изображения, где сглаживание необходимо от тех, где оно ненужно ведь там должен быть острый угол.
Нагрузка на систему при использовании данного алгоритма чуть выше, чем у FXAA, но и качество лучше. Мыло хоть и не исчезло окончательно, но его явно стало меньше.
TXAA\TAA (Temporal Anti-Aliasing)
Временное приблизительное сглаживание, так же, как и FXAA разработано компанией Nvidia. Информации по тому, как работает этот алгоритм немного. Из того, что есть можно понять, что данный метод имеет в себе MSAA, но он применяется не каждому кадру, а условно через каждые 3. А те кадры, которые не подверглись алгоритму MSAA, используют данные из предыдущих.
По заверениям людей из Nvidia, качество TXAA x2 будет сопоставимо MSAA x8, но при этом потреблять ресурсов он будет как MSAA x2. И в целом — это так, но с двумя оговорками. Первая иногда можно заметить шлейфы у объектов, это как раз те самые участки предыдущих кадров, которые ещё не успели выгрузиться из памяти видеокарты. И вторая, изображение с данным алгоритмом мылится, особенно те объекты, которые находятся близко к игроку.
Данные проблемы должен решить новый алгоритм сглаживания, которым сейчас занимается Nvidia. ATAA адаптивное временное сглаживание. Это будет похоже по принципу на TXAA, но при создании маски, по которой будет применяться сглаживание будет так же использоваться технология трассировки лучей. Вот только что-то мне подсказывает что уже вряд ли мы получим ATAA, ведь всё это перекачивало в DLSS.
И кстати раз я про него заикнулся то скажу сразу, я не буду в сегодняшнем блоге разбирать данную технологию, ведь я просто на просто не владею видеокартой с RT ядрами.
Под конец хотелось бы сказать про ещё один способ убирать лесенки и мерцание в играх, для этого не требуются никакие алгоритмы. Ведь это более высокое разрешение экрана.
Объясню вкратце – у нас есть два 27` монитора, один из них обладает разрешением экрана 1920х1080 а второй 3840×2160, и думаю тут и так понятно, что плотность пикселей у 4К монитора в разы выше, чем у FullHD. За счёт чего и произойдёт сглаживание сцены. Вот только для это потребуется и надлежащая мощность вашего железа и конечно же 4К монитор.
Заключение
Сегодня мы с вами поговорили далеко не про все виды сглаживаний, но просто все другие либо мало чем отличаются от этих, или и вовсе, просто включают в себя сразу несколько разных методов. А те, про которые сегодня шла речь, были самые популярные которые вы чаще других встретите в играх.
Так же в заключение я хотел бы сказать какой из вышесказанных методов выбрать. Но всё это индивидуально, и зависит от игры и начинки вашего ПК. Но всё же попытаюсь кратко помочь вам с выбором:
А на этом у меня всё, если я где-то допустил ошибк_(и, у), то буду рад тому, что бы меня исправили. Всем большое за прочтение и до встречи в следующих блогах!
FXAA — новый алгоритм сглаживания от NVIDIA
Прошло время, когда видеоигры приносили ураган эмоций просто потому, что мы в них играем; игрок давно стал требовательным, и не в последнюю очередь — к качеству картинки на экране. Об одной из составляющих этого качества — сглаживании — я и хочу рассказать.
Подавляющее большинство игроков знают о «лесенках» на краях объектов и возможном решении этой проблемы — «anti-aliasing», или «сглаживание». Очень подробно этот вопрос описан в статье Дона Волигроски (Don Woligroski) Anti-Aliasing Analysis, Part 1: Settings And Surprises (русский перевод). Также неплохое сравнение с примерами игр текущего поколения игровых консолей есть у Digital Foundry — The Anti-Aliasing Effect (англ.). Вкратце, всё сводится к одному: сглаживание — это здорово, восприятие картинки сильно вырастает в цене, в современных реалиях игропрома продукты с малым сглаживанием или даже без оного находятся в категории освистанных (в первую очередь — фанатами платформ-конкурентов, но тем не менее), но вот реализация качественного сглаживания оставляет желать лучшего, главным образом — из-за недостаточной вычислительной мощности целевого оборудования. В данном случае в гораздо более выгодных условиях оказываются, конечно же, апологеты игры на ПК, т.к. на мощность их железа оказывает влияние только материальный фактор, зато консольщики не упускают случая позубоскалить над ПКшниками на предмет «PC HAZ NO GAEMZ!», мол, игр у вас нет, играете в графику. Я специально не буду затрагивать этот вопрос, потому что рационально-объективных доводов в пользу субъективного ощущения «тёплого лампового гейминга» быть не может в принципе, это вопрос личного выбора со всеми вытекающими. Уже существующие и использующиеся алгоритмы описаны по вышеуказанным ссылкам, поэтому перейду непосредственно к теме: что такое FXAA, с чем его едят и насколько это вкусно.
Начнём с теории. Если быть предельно точным, то FXAA — не такой уж новый алгоритм: впервые он был использован в MMORPG Age of Conan и уже отметился в шутере F.3.A.R., но я буду рассматривать его, как новый, благодаря интересному решению, которое попалось мне на глаза на часто посещаемом форуме (спасибо h0w1er). FXAA — Fast approXimate Anti-Aliasing, это более производительное решение по-сравнению с традиционным MSAA (Multi-Sampling Anti-Aliasing). Это однопроходный пиксельный шейдер, который обсчитывает результирующий кадр на этапе постобработки. Он создан быть более быстрым и менее требовательным к памяти по-сравнению с MSAA, «оплачивая» свои «плюсы» точностью работы и качеством, хотя на самом деле всё не так страшно, как это звучит. FXAA также имеет ряд преимуществ, включая улучшенное сглаживания спекуляров и субпикселей (речь о поверхностях размером меньше одного пикселя, «лесенки» заставляют такие объекты мерцать). В официальном документе (PDF) создатель FXAA Тимоти Лоттс (Timothy Lottes) заявляет, что для алгоритма FXAA с настройками среднего качества («золотая середина» между качеством и производительностью) постобработка кадра разрешением 1920×1200 на GTX 480 занимает меньше миллисекунды. Основные преимущества FXAA, со слов Тимоти, заключаются в алгоритме сглаживания субпикселей FXAA, работающем лучше оного в MLAA, достаточность для работы железа уровня DX9, постообработке кадра за один проход и, по-моему, самое интересное — независимость от используемого GPU Compute API. Но есть и одна неприятность — необходимость для разработчиков встраивать эту технологию сглаживания в свои игры, когда как традиционные методы сглаживания работают (или не работают) на уровне драйверов. Другими словами, пока программисты не используют в своих движках код FXAA для сглаживания, нужного эффекта мы не получим, влючить FXAA извне официально было нельзя. До недавних пор.
31 июля в ветке Alles rund um FXAA (Treibereinstellungen, Shader-replacements) форума 3DCenter Forum, появился «some dude», который произвёл инъекцию кода FXAA в библиотеку d3d.dll и дал возможность гибко настраивать результат через конфигурационные файлы, а также включать и выключать FXAA по кнопке Insert и делать скриншоты нажатием Delete [Pause], а [Print Screen] делает скриншот начиная с версии beta 9. Этот набор файлов копируется в директорию с исполняемым файлом DX9-приложения (игры, демки — не важно), а это приложение при запуске «подхватывает» библиотеку с нужной инъекцией. И пошло-поехало: так как Gast (автор инъекции) изначально озаботился сохранением результатов работы в лог, народ стал ему присылать баги, которые Gast, в свою очередь, начал править. Позже в его наборе появилась инъекция для DX10 (dxgi.dll), сейчас рассматривается вариант добавить FXAA в DX11, но у автора нет DX11 железа, поэтому вопрос немного подвис в воздухе, а с версии beta 10 — и DX11 (но не забывайте, что это всё-таки бета инъекции).
UPDATE 19.08.2011
На 19 августа 2011г актуальная версия — beta 10, зеркала: rapidshare.com, letitbit.net, depositfiles.com, rghost.net. К сожалению (или к счастью, кому как) набор фильтров от pedace с виньетированием, сепией и т.п. для beta 10 пока не объявлен, но наткнулся на пользовательские фильтры к этой версии, зеркала: [1], [2], [3], [4], [5].
А теперь — танцы практика. Практиковаться будет на World of Tank, версия 0.6.6.
Вариант без сглаживания (No AA) показывает явные «эскалаторы», и хоть модели танков достаточно большие и детализированные, артефакты видно совершенно явно, особенно на тонких объектах, о которых дополнительно ниже.
Вариант встроенного сглаживания (Edge AA) пытается смазывать края объектов, но у него это получается довольно посредственно, не говоря уже об уходе картинки в небольшое мыло.
Следующий вариант — FXAA, результат налицо: артефактов по краям нет, однако и мыльности по-сравнению с noAA тоже немного добавилось, хотя с EdgeAA разница почти незаметна.
Ну и вариант FXAA Sharpen. Gast в версии beta 6 добавил фильтр резкости, взятый из MPC-HC, и результат очень достойный: мыло исчезло, текстуры стали выглядеть даже резче, чем в оригинале, а «лесенок», несмотря на этот фильтр, практически не добавилось. Из-за незапланированной авторами резкости текстуры башни чуть-чуть «выбило» (синяя зона), но в игре, могу вас уверить, это абсолютно незаметно.
А что же с производительностью? Да практически ничего плохого. К сожалению, движок WoT живёт в своём мире и всплески/падения производительности могут выскакивать на самом ровном месте. У меня получилось следующее:
Картинка «In battle no AA» — то, о чём я говорил выше: тонкие деревца трещат от артефактов, тогда как на вариант «In battle FXAA Sharpen» картинки гораздо приятнее глазу, за исключением проблем фильтра резкости, который уж слишком тонкие линии сужает в толщину волоса, как, например, навесной прицел артиллерии. А количество кадров в секунду в варианте FXAA даже выше, несмотря на то, что эти два скриншота сделаны с разницей в 1 секунду и танк был неподвижен.
На самом деле при длительном тесте была получена цифра
10-12% — на столько падает производительность при использовании FXAA, тогда как MSAA 4x, с качеством сглаживания которого и конкурирует FXAA, в довольно часто даёт падение вдвое больше. Если будет интересны сравнения — больше цифр и картинок можно найти в статье NVIDIA’s New FXAA Antialiasing Technology сайта [H]ard|OCP, где я почерпнул часть информации, а в завершении своего небольшого обзора соглашусь с Марком Уорнером @ HardOCP: при должной реализации у FXAA большое будущее, особенно на консолях, где ресурсы жёстко ограничены, а имея возможность настроить конфигурацию инъекции по своему вкусу, многие уже сейчас без помощи разработчиков, смогут насладиться красивой картинкой в любимой игре.
UPD. На 10 августа уже появилась более настраиваемая инъекция, так сказать, «сборная солянка» от участников обсуждения: INJ_FXAA_DX9_pedace_v1.rar, зеркала: rapidshare.com, letitbit.net, depositfiles.com, rghost.net, hotfile.com. В сборку включены разные фильтры: насыщение цветом, виньетирование, размытие, сепия и другие. Всё это настраивается через единый файл настроек и самое полезное — настройки меняются «на лету»: Alt+Tab из приложения для редактирования настроек, Alt+Tab обратно — новые настройки работают, перезапуск не требуется. С этим вариантом инъекции я избавился от блеклости при включении фильтра резкости, в настройках полностью отключил USE_TECHNICOLOR, USE_TONEMAP и USE_VIGNETTE. Результат выглядит так:
Налицо более чёткая картинка без «лесенок» и мыла, даже текстуры выглядят веселее.
Добавил BMP PNG из Fraps’а. Где-то мой косяк, согласен: предполагал, что получить скриншот с результатами FXAA непосредственно из игры нельзя, как это нельзя сделать в случае с MLAA, но, как выяснилось, можно, т.к. это не постобработка фреймов драйвером после вывода на экран, а прямая картинка через инъекцию.
Какое сглаживание в играх лучше: DLSS, MSAA, TAA, FXAA или DMAA
В любой современной игре в настройках графики легко найти пункт «Сглаживание». Как работает эта функция, насколько она полезна и какой вариант сглаживания выбрать, если доступно несколько — разберём подробнее.
Содержание
Что такое сглаживание и для чего нужно
Для начала стоит немного рассказать о том, что такое алиасинг, чтобы понять, для чего нужно сглаживание. Дело в том, что графика дискретна — очевидно, пиксель либо закрашен полностью, либо нет. При построении сцены цвет каждого пикселя определяется тем, лежит ли в его центре часть какого-нибудь объекта или нет. Именно поэтому некоторые детали могут не отрисовываться, если они покрывают лишь четверть пикселя. А другие примитивы, наоборот, имеют слишком резкие переходы между парой пикселей, даже если сам предмет должен обладать плавными формами.
Иначе говоря, алиасинг — резкий переход между двумя или несколькими пикселями. Самые очевидные примеры алиасинга в играх — мерцание тонких объектов или текстур с мелкими деталями в движении и эффект ступенчатости на краях объектов.
Так вот, сглаживание, или же AA (Anti-Aliasing) — это способ устранения артефактов алиасинга, в том числе и тех самых «лесенок» на изображении. Оно позволяет сделать сцену в игре более реалистичной и приятной глазу, как в реальной жизни. Добиваются плавности как раз «смягчением» переходов между пикселями, заполняя соседние пиксели корректными оттенками.
Какие виды сглаживания в играх бывают
Количество методов сглаживания не так мало, как кажется на первый взгляд. Так как их очень много, обо всех рассказать сложно, поэтому я затрону наиболее распространённые и интересные из них.
Сами методы можно разделить на 2 категории: те, которые применяются во время рендеринга и те, которые применяются к уже построенному изображению (постпроцессинговые).
SSAA (Super Sampling Anti-Aliasing)
Также его называют методом избыточной выборки. Основан на принципах получения образцов цвета (сэмплов) сразу в 4 участках пикселя с последующим усреднением. Важное уточнение: для этого вместо одного пикселя рендерятся четыре, и уже после расчётов цвета они сжимаются обратно до одного. Кстати, необязательно должно использоваться именно четырёхкратное увеличение, это лишь один из самых распространённых типов алгоритма. Существует множество вариаций паттернов выборки: среди них ordered grid, rotated grid, jitter. Все они отличаются только расположением точек получения сэмплов и точностью результата. Иногда в настройках игры можно увидеть несколько видов SSAA, которые как раз будут отличаться паттернами. Самый простой — ordered grid (OGSSAA), остальные методы, как правило, эффективнее.
Существенным недостатком SSAA является его высокое требование к ресурсам — неудивительно, ведь по сути это рендеринг всей сцены в разрешении, превышающем нативное в несколько раз. Зато этот метод сглаживания один из самых эффективных и точных, правда, в современных AAA-проектах встречается не так часто.
DSR (Dynamic Super Resolution)
Владельцы видеокарт NVIDIA имеют возможность включить в «Панели управления NVIDIA» функцию под названием DSR. С этой технологией изображение в игре рендерится в большем разрешении, а затем масштабируется до нативного разрешения монитора. Результат оказывается близок к SSAA, за исключением того, что в DSR ещё накладывается фильтр размытия.
Как и метод избыточной выборки, DSR потребляет много ресурсов. Главный плюс использования этой функции — она поддерживается в большем количестве игр (хотя в некоторых могут возникать проблемы) и не требует внедрения разработчиком.
MSAA (MultiSample Anti-Aliasing)
Как и SSAA, MSAA делает выборку нескольких участков пикселя и усредняет цвет, но только на крайних пикселях объектов, а не на всей сцене, а значит, и ресурсов потребляет значительно меньше. Весьма распространён и даёт хороший результат. Из-за такой выборки проявляются и недочёты технологии — на стыках между двумя объектами изображение по-прежнему «острое», то же самое видно и на высокодетализированных, а также прозрачных текстурах. Ну и хоть оно менее ресурсозатратное, нежели SSAA, это всё ещё «тяжёлый» метод, сильно нагружающий видеокарту.
MSAA в играх встречается в нескольких типах: 2x, 4x, 8x, 16x. Число отражает количество выборок на пиксель. Чем оно выше, тем лучше результат, но сильнее нагрузка.
CSAA (Coverage Sampling Anti-Aliasing)
CSAA — это доработанный MSAA от компании NVIDIA. Он выдаёт результат, близкий к MSAA 8x или 16x, потребляя ресурсы на уровне MSAA 4x. Не углубляясь в детали, улучшение сглаживания достигается за счёт использования информации ещё и о соседних пикселях. Похожая технология от AMD называется EQAA (Enhanced Quality Anti-Aliasing). Обе технологии почти не встречаются в современных играх из-за того, что сейчас разработчики предпочитают использовать универсальные методы.
TAA (Temporal Anti-Aliasing)
TAA — популярный метод сглаживания, который часто используется во многих современных играх. Он берёт информацию о пикселях не только с текущего кадра, но и с предыдущего. За счёт этого TAA позволяет избавиться от эффекта мерцания, например, на тонких объектах. В целом, это довольно качественный метод, не уступающий MSAA, при этом потребляющий в разы меньше ресурсов. Недостатки тоже есть: изображение может быть слишком мыльным — разработчики пытаются исправлять это повышением резкости, но не всегда помогает. Кроме того, из-за того, что информация берётся с предыдущего кадра, возникает эффект гостинга (остаточного изображения) — вокруг движущихся объектов возникают «шлейфы».
FXAA (Fast approXimate Anti-Aliasing)
FXAA относится к постпроцессинговому типу сглаживания. Весьма дешёвый способ убрать алиасинг с небольшими потерями производительности. FXAA смешивает соседние пиксели на готовом изображении, заранее определяя контрастные переходы. Недостатком можно назвать излишнее сглаживание, из-за чего некоторые текстуры и далёкие предметы будут мыльными, но FXAA станет отличным выбором на слабых компьютерах, так как оказывает очень маленькое влияние на FPS.
MLAA (MorphoLogical Anti-Aliasing)
Постпроцессинговый метод, работает не на видеокарте, а на процессоре, в отличие от всех остальных методов. MLAA ищет резкие отличия в цветах, затем идентифицирует L-, Z- и U-образные паттерны в построенном изображении, после чего смешивает цвета пикселей в таких фигурах.
На движущихся объектах могут возникать артефакты, связанные с появлением и исчезновением отдельных пикселей. Это характерно почти для всех типов геометрического сглаживания, в том числе и для MLAA. На тонких объектах данный артефакт проявляется в виде мерцания.
MLAA даёт более точный результат, чем у FXAA, но и сам процесс более требователен к ресурсам. Впрочем, если имеется мощный процессор, то влияние на FPS в играх будет минимальное.
SMAA (Subpixel Morphological Anti-Aliasing)
SMAA — это смесь FXAA и MLAA, работающая на видеокарте. В отличие от MLAA, ищёт различия не в цветах, а в яркости пикселей. Кроме того, использует не только L-, Z- и U-образные паттерны, но ещё и диагональные.
Существуют разные типы SMAA:
Самый эффективный, как можно понять из описания, SMAA T4x, он же и самый прожорливый из этих вариантов. На скриншотах из Shadow of Tomb Raider заметно, как сильно меняется изображение при включении SMAA 1x, а вот разница между SMAA T2x и T4x есть, но она не такая существенная.
CMAA (Conservative Morphological Anti-Aliasing)
Как и предыдущие три, CMAA — это постпроцессинговый метод. Нагружает систему чуть больше, чем FXAA, но меньше, чем SMAA. В теории, CMAA обеспечивает куда более лучшую по качеству картинку, нежели примитивный FXAA, но это зависит от реализации: на примерах из DiRT Rally 2.0 отлично видно, что алгоритм не очень сильно влияет на сцену.
На двух изображениях выше сложно увидеть разницу, но она есть: отдалённые предметы более чёткие и с меньшим количеством лесенок. Особенно видно это на мелкой траве вдалеке, а также на дальних конусах.
CMAA исследует изображение на разрывы цветов, уточняет края фигур в конкретных участках, затем обрабатывает простые фигуры, причём только симметричные. Метод имеет повышенную временную стабильность в сравнении с SMAA и MLAA — за счёт этого в сцене меньше мерцаний.
DLSS (Deep Learning Super Sampling)
Сравнительно новая технология, на данный момент доступная только на видеокартах NVIDIA RTX. Очень эффективный метод, который при небольших требованиях к ресурсам выдаёт качественную картинку. Конечно, если речь идёт о DLSS 2.0 и 2.1 — первая итерация технологии была очень сырой и сильно «мылила» картинку.
Используя тензорные ядра, DLSS апскейлит отрендеренное в низком разрешении изображение за счёт использования глубокого машинного обучения. Такой подход позволяет добиться качества, сравнимого с рендером сцены в полноценном разрешении.
Конечно, технология всё ещё сыровата даже во второй версии, и иногда встречаются небольшие артефакты, но даже сейчас результат получается лучше, чем при использовании TAA. На картинке выше сравнивается DLSS и TAA. Издалека разницы нет, но при детальном рассмотрении видно, что с DLSS дальние объекты чётче, а рюкзак выглядит чуть мыльнее, но на нём нет лесенок.
Итог: какое сглаживание лучше выбрать
Технологий сглаживания действительно много, но каждая из них имеет право на существование. Какая же из них самая лучшая?