Мультисэмпловое сглаживание что это

SMAA: улучшенное субпиксельное морфологическое сглаживание

Мультисэмпловое сглаживание что это

Данная статья основана на журнале Хорхе Хименеса, Хосе Эчеварриа, Тиаго Соуса и Диего Гутьерреса.

Их демо реализации SMAA можно посмотреть здесь (файл .exe). На моём GTX 960 2GB оно работает вполне нормально.

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

Долгие годы стандартами для реализации сглаживания были методы MSAA (Multisampling Antialiasing) и SSAA (Supersampling Antialiasing). На самом деле, они и по-прежнему обеспечивают наивысшее качество среди всех современных методов сглаживания.

Как мы знаем, алиасинг возникает из-за нехватки сэмплов, как на пространственном (ломаные линии), так и на временном уровне (мерцание), обычно рядом с гранями и областями изображения с высоким/низким контрастом.

Для борьбы с ним у нас имеются два способа, которые когда-то были единственными решениями: Supersampling и Multisampling. При суперсэмплинге мы увеличиваем изображение, а затем снижаем его дискретизацию до нужного разрешения.

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

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

Современные способы сглаживания

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

FXAA, DEAA, GPAA, GBAA, CSAA, EQAA, DLAA… В этой статье мы поговорим о SMAA, и о его предшественнике — MLAA.

Эти современные основанные на фильтрации методы имеют собственные проблемы:

  • Большинство алгоритмов распознавания краёв, которые лежат в основе этих методов, учитывают только численные различия между пикселями и игнорируют то, как они отображаются зрителю.
  • Исходная форма объекта не всегда сохраняется, общее скругление углов почти всегда чётко заметно на текстах, резких углах и субпиксельных элементах.
  • Большинство решений рассчитано на обработку только горизонтальных или вертикальных паттернов, и игнорирует диагонали.
  • Реальные субпиксельные элементы и субпиксельное движение обрабатывается неверно. Алиасинг отражений (specular) и затенения (shading) устраняются не полностью.

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

Морфологическое сглаживание (Morphological Antialiasing, MLAA)

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

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

Поскольку фон после растеризации узнать нельзя, MLAA затем смешивает его с соседом, предполагая, что его значение близко к значению исходного фона.

Другими словами, алгоритм распознаёт границы (с помощью информации о цвете или глубине), а затем обнаруживает в них конкретные паттерны. Сглаживание обеспечивается интеллектуальным смешиванием пикселей в границах.

MLAA имеет реализации на DirectX 10 и Mono Game (XNA). Он честно реализован в таких играх, как Fable II. Создатели MLAA позже создали SMAA, или Enhanced Subpixel Morphological Antialiasing (усовершенствованное субпиксельное морфологическое сглаживание), которое является основной темой данной статьи.
MLAA в действии

Enhanced Subpixel Morphological Antialiasing (SMAA)

Сравнение SMAA и других методов в Crysis 2 SMAA обеспечивает надёжное распознавание краёв, а также простой и эффективный способ обработки острых геометрических элементов и диагональных линий.

Кроме того, SMAA не изменяет форму геометрии, как это делают многие другие методы.
Вверху — AA нет; в середине — MLAA; внизу — SMAA SMAA построен на конвейере MLAA, и улучшает или переосмысливает каждый его этап.

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

Наконец, он показывает, как морфологическое сглаживание можно точно скомбинировать с мультисемплингом или суперсемплингом и временной репроекцией.

Распознавание краёв

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

Для распознавания края может использоваться различная информация: цветность, яркость, глубина, нормаль поверхности и их сочетание. SMAA по четырём причинам использует яркость (luma):

  1. Меньше артефактов.
  2. Яркость всегда видима.

  3. Она может справляться с искажениями затенения.
  4. И, наконец, она быстрее, чем цветность (chroma).

Читайте также  Что значит очистить кэш браузера

Слева и в центре: другие методы распознавания краёв, приводящие к появлению красных пересечений и артефактов; справа: совершенно чёткие края SMAA

Запомните это изображение.

Вот как работает распознавание краёв: окончательное вычисленное значение — это булево значение, называемое граница левого края. Аналогичным образом вычисляются булевы значения для верхнего края. Формула:

Все значения c называются дельтами контраста.

Обработка паттернов

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

Острые геометрические элементы: ревекторизация силуэтов в MLAA склонна к скруглению углов.

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

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

Диагональные паттерны: мы добавили совершенно новый способ распознавания диагональных паттернов. Он состоит из двух следующих этапов:

  1. Поиск диагонального расстояния и слева и справа от диагональных линий.
  2. Получение пересекающихся краёв и .
  3. Пользуясь этой входной информацией, мы определяем конкретный диагональный паттерн для доступа к заранее вычисленной текстуре области, получая области и .

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

Точный поиск расстояний: ключом к распознаванию и классификации паттернов является получение точного расстояния края (длины до обоих концов линии). Для ускорения этого процесса MLAA активно применяет аппаратную интерполяцию.

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

Эта линейная интерполяция двух двоичных значений (то есть билинейная), создающая одно значение с плавающей запятой, описываемое следующей формулой:

Где и — это два двоичных значения (0 или 1), а — значение интерполяции.

Результаты

MLAA работает с одним сэмплом на пиксель. Что приводится к субсемплированию, из-за которого реальные субпиксельные элементы воссоздать невозможно.

Сравнение MLAA с SMAA и отсутствием AA Однако SMAA работает на субпиксельном уровне.

Это приводит к следующему:

  • Локальный контраст
  • Распознавание диагональных паттернов
  • Резкие геометрические элементы
  • Точный поиск

Всё это можно увидеть на изображении ниже, где эти аспекты сравниваются с результатами других методов. На самом деле, SMAA может создавать результаты, близкие к SSAA 16x.
Излишние затраты, создаваемые каждым из этих решений, незначительны. В частности, адаптация локального контраста занимает всего 0,08 мс, распознавание резких геометрических элементов и точные расстояния занимают 0,01 мс, а обработка диагоналей добавляет лишних 0,12 мс. Проще говоря, SMAA довольно быстр, медленнее, чем SSAA и MSAA, но более плодотворен и менее ресурсоёмок.

Источник: https://habr.com/ru/post/440428/

Анализ системы сглаживания от Nvidia: улучшит ли MFAA качество изображения без ущерба частоте кадров

» Новости » Анализ системы сглаживания от Nvidia: улучшит ли MFAA качество изображения без ущерба частоте кадров

27.11.2014 15:22

Новости Nvidia видеокартыигровой

Nvidia представила новый графический драйвер 334.75 WHQL серии Game Ready.

В нем оптимизирована поддержка World of Warcraft’s: Warlords of Draenor, Far Cry 4, Dragon Age Inquisition и The Crew.

Кроме этого, в драйвере присутствует расхваленная представителями Nvidia функция MFAA (Multi-Frame Anti-Aliasing).

Что такое MFAA?

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

Есть несколько способов избежать подобных эффектов – от суперсемплинга (увеличивает число дискретных выборок на пиксель), мультисемплинга (сглаживает линии, но обходит текстуры) до FXAA, в котором не нужны дополнительные пиксели для сглаживания.

Каждая из этих технологий искала компромисс в производительности. AMD и Nvidia экспериментировали с разнообразными фильтрами и временными сглаживаниями. В результате у Nvidia появилось TXAA.

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

Этот метод придумали, чтобы разработчики могли делать изображение «киношным» без ущерба производительности. 

MFAA похоже на TXAA тем, что оно тоже использует временный сэмплинг в своем алгоритме, но не использует фильтры-шейдеры и не требует такой вовлеченности движка.

Nvidia все еще работает над добавлением поддержки MFAA в большее количество игр (уже доступен для двадцати игр, вкючая Assassin’s Creed Unity, Battlefield 4, Civilization 5, Civilization: Beyond Earth, Crysis 3 и Titanfall).

Целью MFAA является достижение равноценного сглаживания при более высокой частоте кадров. В идеале 4 x MFAA по производительности должен соответствовать 2 x MSAA, но обеспечить качество как у 4 x MSAA или выше.

Одна из особенностей видеокарт серии Maxwell — их MFAA-система поддерживает гораздо больший набор семплинговых шаблонов, про сравнению с любым графическим процессором Nvidia предидущих поколений.

Некоторые еще помнят, как для некоторых игр 5-6 лет назад можно было заставить определенные карты GeForce использовать суперсемплинг с упорядоченной сеткой (OGSSAA).

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

Как правило, графический процессор имеет заранее запрограммированный набор методов, хранящихся в ПЗУ, и пользователь ничего не мог в них поменять – если чип использовал OGSSAA с квадратным узором, то никто ничего не мог с этим поделать.

Читайте также  Hardware monitor при загрузке что делать

Карты класса Maxwell (GTX 980, GTX 970  и GTX 980M) хранят шаблоны в оперативной памяти и могут варьировать их в зависимости от активности на экране. В результате должно получиться более кчественное сглаживание. 

Тестирование качества изображений с MSAA, TXAA, и MFAA

Тестировалась игра Assassin’s Creed Unity на системе Core i7-4970K с 16ГБ оперативной памяти DDR3-2133 и видеокартой Nvidia GeForce GTX 980. 

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

По порядку идут 4 x MSAA, TXAA и 8 x MFAA.

Чтобы создать такое изображение с MFAA, использовался Shadowplay. Видите разницу между MSAA и MFAA? Можно заметить серые зоны в промежутках между железными решетками. Сглаживание MFAA не такое мягкое, как TXAA. Оно использует другой алгоритм шейдеров, но MFAA обрабатывает некоторые переходы искуснее.

На этих скриншотах (MFAA) присутствуют некоторые визуальные странности, которые не заметны в игре. Это искажение вызвано тем, что скриншоты делает FRAPS, а не движок игры.
4xMSAA, TXAA, 8x MFAA:

Разница сглаживания линии MFAA и MSAA:

MSAA слева, а MFAA справа. Эта картинка показывает одно из главных преимуществ системы MFAA: в отличие от MSAA, она лучшее смешивае оттенков. Неровные линии появляются из-за разницы в цвете и линиях. MFAA сгладит контраст, используя тени. 

Между 8 x MFAA и 4 x MSAA ощущается значительная разница. Nvidia утверждает, что 4 x MFAA должена работать быстрее 4 x MSAA.

Влияние MSAA, MFAA и TXAA на частоту кадров

TXAA является наиболее приемлемым вариантом, но каково влияние каждой системы на частоту кадров?

Мультисемплинг в Assassin’s Creed Unity очень сильно бьет по графическому процессору. Сможет ли MFAA отыграть несколько очков в производительности?

Сравниваем производительности MFAA

Для GTX 980 ответ оказался утвердительным, однако не стоит слишком обнадеживаться.

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

Визуальная разница между 4x MFAA и 4x MSAA незначительная, и Nvidia утверждает, что выбор в пользу 4 x MFAA может улучшить производительность по сравнению с MSAA на 30%. 

Достойное начало

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

Разрешение 4К снизило потребность в сглаживании, но не исключило его полностью.

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

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

Прошло только 5 лет с тех пор, как FXAA MLAA представлены для Intel.

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

VIA: Extremetech

Источник: https://vido.com.ua/article/10267/analiz-sistiemy-sghlazhivaniia-ot-nvidia-uluchshit-li-mfaa-kachiestvo-izobrazhieniia-biez-ushchierba-chastotie-kadrov/

Что такое сглаживание в играх: FXAA

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

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

Откуда берутся «ступеньки»?

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

Она менее шершавая. А значит на ее поверхности меньше элементов, выходящих за пределы какой-то условной линии.

Как все это соотносится к компьютерному изображению?

Да очень просто.

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

Максимум, что у вас поучится – это фигура, напоминающая ступеньки. То же самое происходит и с любыми (прямыми и кривыми) линиями на экране монитора (попробуйте в Paint). Причем это заметно даже на экранах с высоким разрешением и реально раздражает наше зрение.

Графическое «шлифование» линий

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

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

Такая технология «antialiasing», создана еще в 1972 году в Массачусетском технологическом институте. Изначально разработка Architecture Machine Group предназначалась для более комфортного (для пользователя) отображения текста.

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

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

Их комплексное использование дает действительно потрясающий эффект, однако для его достижения нужны соответствующие аппаратные ресурсы.

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

  • математическую трехмерную модель обрабатывает видеокарта (описывает и создает и размещает образы, задействованные в изображении);
  • на них накладываются текстуры, детали, тени, видеоэффекты;
  • готовая трехмерная модель подвергается рендеригну, вследствие чего формируется двумерное изображение для очередного кадра.
Читайте также  SolIDworks или inventor что лучше

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

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

Исходя из этого, различают следующие технологии сглаживания:

Обработка с масштабированием в процессе формирования 3D образов

Первый способ SSAA (SuperSample Anti-Aliasing) был задействован еще в DirectX 7.

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

Далее рассчитать параметры сглаживания и снова уменьшить образ с учетом прорисовки граничных пикселей. Что это дает и как работает сглаживание?

  • Например, у нас есть белое поле 10 х10 пикселей в котором нарисован черный круг (для этого рисуем его циркулем, и те квадраты, в которые он попадают, закрашиваем).
  • Теперь каждый наш исходный пиксель разобьем на 4-е части (то есть, образуем сетку 20 х 20) и выполним ту же операцию с рисованием круга.
  • Получим ситуацию, в которой внутри исходных граничных пикселей будет закрашено 1, 2, 3 или 4 субпикселя. В соответствие с этими значениями объединяющие их исходные пиксели заливаем соответственно различными оттенками серого, с насыщенностью в 25%, 50%, 75% или снова полностью черным.

После этой операции, взглянув на наше изображение круга в сетке 10 х 10 с некоего расстояния, увидим более ровную (без «лесенки» по краям) и приятную глазу фигуру.

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

Как это повлияет на железо?

Не трудно подсчитать, что для изображения 1280×1024 обработка с коэффициентом 8х потребует нагрузки на видеокарту, соответствующую модели разрешением 10240 х 8192 (не забывайте, что на данной стадии мы работаем с трехмерными изображениями). Поэтому неслучайно данный метод обработки называется Избыточная выборка сглаживания. И вы подумайте, стоит ли включать его, если у вас на ПК слабое железо

Данная технология не могла оставаться такой ресурсоемкой. И в качестве альтернативы была предложена ее версия MSAA (Multisample anti-aliasing). Ее основное отличие от предыдущей в том, что сглаживание применялось только к видимым линиям и поверхностям (что вполне логично).

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

Nvidia решила доработать MSAA и создала способ сглаживания с выборкой охвата – CSAA (Coverage Sampling anti-aliasing). Здесь активно используются программные алгоритмы обработки графики, предусмотренные в самом GPU чипе.

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

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

Это технология TXAA (Temporal approXimate Anti-Aliasing, Временное приблизительное сглаживание). В алгоритме, с учетом времени учитывается пиксели из предыдущих и обрабатываемых кадров с последующим цветовым усреднением.

Постобработка готовых кадров

Но совсем необязательно применять сглаживание к объемным 3D моделям. Ведь аналогичную обработку можно выполнить уже после рендеринга.

  • Для обладателей слабого компьютерного железа NVidia предложило довольно эффективное решение FXAA (Fast approXimate anti-aliasing). Если верить названию, работает оно достаточно быстро, что достигается обработкой уже готовых изображений. Для контурных линий применяются математические методы обработки цвета, которые позволяют получить ярко выраженное сглаживание. Иногда даже черезчур «гладкое», ведь недостатком данного способа является чрезмерное размыливание картинки. Но все-таки получаемый результат делает изображение более приятным, чем до обработки.
  • Тем, у кого вообще графическая карта не предназначена для современных игр, но имеется мощный CPU, компания Intel предлагает свой аналог вышеописанного способа MLAA . Обработка происходит медленнее, но зато разработчикам удалось избавиться от заметного размыливания.
  • Учитывая тенденцию с повышению fps видеопотока, специалисты из NVidia создали специально для этих условий технологию MFAA (Multiframe Sampled Anti-Aliasing). Чтобы ускорить обработку кадров здесь используется уникальный и простой алгоритм. Внутри пикселя, через которые проходит линия контура, создается две условные точки. И в зависимости от взаимного расположения линии и маркеров устанавливается цветовое значение.

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

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

Источник: http://profi-user.ru/chto-takoe-sglazhivanie-v-igrakh/

Понравилась статья? Поделить с друзьями: