Экранное каше
- 1 year ago
- 0
- 0
Сгла́живание ( англ. anti-aliasing ) — технология , используемая в обработке изображений с целью сделать границы кривых линий более гладкими, убирая возникающие на краях объектов . Впервые сглаживание было применено в 1972 году в Массачусетском технологическом институте в , которая позже стала основной частью MIT Media Lab .
Основной принцип сглаживания — использование возможностей устройства вывода для показа оттенков цвета , которым нарисована кривая. В этом случае пиксели , соседние с граничным пикселем изображения, принимают промежуточное значение между цветом изображения и цветом фона, создавая градиент и размывая границу.
Применяется два варианта сглаживания:
Следует заметить, что сглаживание зависит от гаммы монитора. В частности, среднее между 0,2 и 0,8 — это не обязательно 0,5, а . Особенно это заметно на тонких узорах и тексте . Поэтому сглаживание наилучшего качества получается только тогда, когда известна.
Примечание: сглаживание влияет на фреймрейт (кол-во кадров в секунду) в зависимости от ПСП (пропускной способности памяти) видеокарты.
S uper s ample A nti- A liasing — избыточная выборка сглаживания , также называемое полноценным или полноэкранным сглаживанием , используется для исправления алиасинга «зубцов» на полноэкранных изображениях . SSAA было доступно на ранних видеокартах, вплоть до DirectX 7 . В модельный ряд AMD HD6ХХХ он включён в качестве особенности (только для игр на DirectX 9 ), также он был включён в драйверы NVIDIA Fermi для всех игр, начиная с игр на DirectX 9 и заканчивая играми на DirectX 11 с использованием любых видеокарт NVIDIA с поддержкой DirectX 10 и выше.
В результате изображение с SSAA выглядит более мягко и реалистично. Однако у фотографических изображений с простым сглаживанием (например, суперсэмплинг, а затем усреднение) может ухудшиться внешний вид некоторых типов линейных рисунков или диаграмм (изображение будет выглядеть размыто), особенно там, где линии наиболее горизонтальны или вертикальны. В этих случаях может быть использован хинтинг .
Полноэкранное сглаживание позволяет устранить характерные «зубцы» на границах полигонов . Однако следует учитывать, что полноэкранное сглаживание сильно нагружает видеокарту, что приводит к падению частоты кадров .
Качество сглаживания ограничено пропускной способностью видеопамяти , поэтому видеокарта с быстрой памятью сможет просчитать полноэкранное сглаживание с меньшим ущербом для производительности, чем слабая видеокарта . Сглаживание можно включать в различных режимах. Например, сглаживание x4 даст более качественное изображение, чем сглаживание x2, но значительно снизит производительность. Сглаживание SSAAx2 удваивает разрешение , тогда как SSAAx4 его учетверяет .
M ulti s ample A nti- A liasing — алгоритм пришедший на смену SSAA, работающий только с геометрией , благодаря этому дающий схожий эффект сглаживания с SSAA, но при меньшей нагрузке.
C overage S ampling A nti- A liasing — продолжение "эволюции" SSAA➔MSAA➔CSAA. Улучшение достигнуто за счёт того, что в буфер кадра передается ещё информация о субсэмпле с соседнего пикселя. Что в итоге помогает рассчитать более точное сглаживание. При равных уровнях (x2, x4, x8...) CSAA и MSAA, качество всегда будет выше у CSAA, а по нагрузке они равны.
Q uality C overage S ampling A nti- A liasing — улучшенная версия CSAA, за счёт использования вдвое большего количества сэмплов для анализа.
A daptive A nti- A liasing — у MSAA есть проблема при сглаживании краёв на прозрачных объектах. Данный алгоритм призван устранить данную проблему. Является объединением MSAA и SSAA . Данный вид рекомендуется обладателям мощных видеокарт. Используется только у AMD .
Tr ansparency A nti- A liasing — аналог AAA, но от Nvidia .
C ustom F ilter A nti- A liasing — алгоритм, включающий в себя 4 фильтра: box, narrow-tent, wide-tent и edge-detect. Каждый фильтр, это разный подход к реализации MSAA. Используется только у AMD .
T emporal appro X imate A nti- A liasing — алгоритм от Nvidia , который использует основу MSAA. В формуле расчёта используется время, данные по пикселям из предыдущих кадров и данные из обрабатываемой сцены. После чего происходит усреднение по цвету. Это позволяет избавиться от мерцания и подёргивания объектов в игре. Вдали даёт качественную картинку, однако немного мылит близкие объекты и нагрузка почти как у MSAA, хотя качество при тех же значениях лучше. Со слов разработчика: TXAAx2 сравнимо по качеству с MSAAx8, но по нагрузке сравнимо с MSAAx2, а TXAAx4 выше по качеству чем MSAAx8, но по нагрузке сравнимо с MSAAx4. Отлично подходит для сглаживания в динамике.
T emporal A nti- A liasing — аналог TXAA, но не от Nvidia .
T emporal S uper S ampling A nti- A liasing — аналог TXAA, но не привязанный к видеокартам Nvidia и основывающийся на суперсэмплинге .
F ast appro X imate A nti- A liasing — алгоритм от Nvidia , представляющий собой однопроходный пиксельный шейдер , который обсчитывает результирующий кадр на этапе постобработки. Является более производительным решением, по сравнению с традиционным MSAA, что, однако, сказывается на точности работы и качестве изображения.
M orpho l ogical A nti- A liasing — аналог FXAA от компании Intel . Ищет «зубчатые» границы на каждом кадре, похожие на буквы Z, L или U, и смешивает цвета соседних пикселей, входящих в каждую такую часть. Алгоритм переведён на использование процессора , а не видеокарты. Отсюда его можно рекомендовать обладателям слабых видеокарт с более-менее производительным процессором. Из-за более сложного алгоритма изображение получается более качественным, чем у FXAA. Имеется реализация у AMD , но технически может использовать и Nvidia . Имеет проблему: сглаживание не работает на прозрачных текстурах. Поэтому в довесок этой постобработки нужно подключать ещё и TrAA или AAA для улучшения изображения. Время обработки занимает 0,9 мс . Так же есть алгоритмы MLAA реализованные на видеокартах .
M ulti f rame Sampled A nti- A liasing — алгоритм от Nvidia , эксклюзивный для видеокарт поколения Maxwell . Благодаря чередованию позиций выборок, MFAAx4 оказывает такое же влияние на производительность, как и MSAAx2, однако обеспечивает качество изображения на уровне MSAAx4.
S ubpixel R econstruction A nti- A liasing — двухпроходный алгоритм от Nvidia . Очень схож с MLAA, но работает с буферами глубины и , из-за чего лучше определяет границы для сглаживания и затененные края. Время выполнения в целом очень низкое, основное время в алгоритме уходит на обработку затенения. На выходе могут появляться артефакты. Для сравнения, на сглаживание изображения с разрешением 1280x720 (HDV 720p) методом SSAA уходит около ~5-10 мс , а SRAA 1,8 мс .
S ubpixel M orphological A nti- A liasing — комбинация из MSAA, SSAA и MLAA. По сути улучшенный MLAA с добавлением локального контраста, поиском паттернов и использованием большего числа сэмплов. Иногда может добавляться ещё и временная избыточная выборка. Ресурсов потребляет больше чем MLAA, но задействует при этом видеокарту , а не процессор .
Можно встретить разновидности:
C onservative M orphological A nti- A liasing — комбинация из FXAA и SMAAx1. Идеально подходит для слабых и средних видеокарт . Отличие от FXAA происходит за счёт обработки линий краёв длиной до 64 пикселей . Используется алгоритм, с обрабатыванием только симметричных разрывов цветов, чтобы избежать ненужного размытия. Отличие от SMAAx1 происходит за счёт менее полного сглаживания объектов, т. к. обрабатывается меньше типов фигур и обладает повышенной временной стабильностью, т. е. меньше мерцаний объектов.