Методов сглаживания придумано множество. На протяжении длительного времени они видоизменялись и улучшались. И по прошествии многих лет, их накопилось так много, что не всегда понятно пользователю и вводит его в ступор при выборе настроек в играх и приложениях. В этой статье попробуем дать описание наиболее известным, которые условно делятся на два типа:
- когда применяются в момент формирования и построения сцены.
- когда используется фильтр к уже готовому изображению (постобработка).
При чем, одновременно можно использовать оба метода сразу. Какой выбрать исходя из эстетических соображений и ресурсов видеокарты, решать конечно индивидуально.
Начнем с того, что AA (Anti-Aliasing, Сглаживание) — способ устранения "ступенчатости" на краях объектов, линий, которые находятся под наклоном и не являются ни строго вертикальными и ни строго горизонтальными. Особенно "лесенка" заметна на стыках полигонов с разными цветами.
В играх может использоваться, когда видеокарте не хватает мощности для вывода изображения в высоком разрешении, где все детали плавные и приятны глазу. Если AntiAliasing отрабатывает хорошо и качественно, то из-за этого страдает производительность, падает фпс в играх. Если сглаживает плохо, то страдает графика, появляется замыливание картинки, артефакты. Поэтому, если есть возможность играть при высоком разрешении и фпс при этом падает не на много, не включайте AA, играйте на высоком. Так же из особенностей, сглаживание "лесенки" может быть включено на уровне настроек видеокарты и при этом еще и на уровне приложений. Эффект при этом "усиливается", если используется первый и второй тип сглаживания. Поэтому если собрались испытывать антиальясинг, убедитесь чтобы оно было включено где то в одном месте, дабы не получить замыленность.
Первый тип
Влияние на фпс прямое, в зависимости от метода и пропускной способности видеопамяти.
SSAA (SuperSample Anti-Aliasing, Избыточная выборка сглаживания) — Самое тяжелое, но и самое качественное и жутко нагружающее видеокарту. В ускорителях применяется регулярная маска размером от 2x1 до 4x4. От этого и появляется нагрузка, при разрешении 1920x1440 и маске 2х2 строится кадр с разрешением 3840х2880 (что требует памяти в 4 раза больше), после этого, усредняются цвета всех суб-пикселей в маске и уже после кадр сжимается и подается на вывод на экран в исходном разрешении.
Существовала технология в основном до DirectX 8, пока не появился MSAA. Из-за большого влияния на фпс от него отказались. Но так как мощность видеокарт перманентно росла, NVIDIA его вернули в строй и используется для игр с поддержкой DX9, DX10, DX11.
Хотите 60 фпс? Тогда сами сможете прикинуть под какой нагрузкой будет работать видеоадаптер. Однако, от картинки вы получите наслаждение. Данный метод рекомендуется обладателям производительных видюх для современных игр.
MSAA (MultiSample Anti-Aliasing, Множественная выборка сглаживания) — пришел на смену SSAA, потребляя меньше ресурсов, но и результат дает немного другой. Изображение по-прежнему рендерится в большем разрешении, но производительность достигнута за счет AA только краев объекта, а не всей картинки как в SSAA. Из минусов, на прозрачных полигонах (стекла, вода..) данный метод не работает, поэтому лесенку иногда можно лицезреть. И так как сглаживается только часть изображения, то можно наблюдать еще и артефакты. Плюс несовместимость с методом отложенного освещения. Нужно помнить, что MSAA выгоднее юзать на низких разрешениях. Чем оно выше, тем накладнее по ресурсам. Так же рекомендуется обладателям топовых видеокарт, с большим количеством видеопамяти.
CSAA (Coverage Sampling Anti-Aliasing, Выборка сглаживания с перекрытием) — это продолжение эволюции SSAA->MSAA->CSAA, который сохранил совместимость с алгоритмами используемых в железе. Улучшение достигнуто за счет того, что в буфер кадра передается еще информация о субсэмпле с соседнего пикселя. Что в итоге помогает рассчитать более качественное сглаживание.
При равных уровнях (4,8..) CSAA и MSAA, качество кадра всегда будет у CSAA выше, а по производительности они друг другу не будут уступать.
Другими словами:
SSAA - сглаживает всю сцену
MSAA - сглаживание происходит только по краям объектов
CSAA - за счет добавления сэмплов перекрытия, сглаживание краев объектов происходит с учетом соседних пикселей. Т.е. тут сделан упор на качество кадра, практически при том же уровне уровне нагрузки на видеокарту, что и у MSAA.
FSAA (Full Scene Anti-Aliasing, Полноэкранное сглаживание) — То же что и SSAA, но от AMD и с небольшими отличиями.
QCSAA (Quality Coverage Sampling Anti-Aliasing, Выборка сглаживания с перекрытием) — не трудно догадаться, что это улучшенная версия CSAA, только использует вдвое больше сэмплов для анализа
EQAA (Enhanced Quality Anti-Aliasing, Сглаживание повышенного качества) — У NVidia - CSAA, у AMD - EQAA. Отличаются положениями сэмплов и в зависимости от режима их количеством.
AAA (Adaptive Anti-Aliasing, Адаптивное сглаживание) — Как известно у MSAA есть проблема при сглаживании краев на прозрачных объектах. Данный способ призван устранить такую проблему. Является синергией мультисемплинга (MSAA) и суперсемплинга (SSAA). Как можно догадаться, данный вид ресурсоемок и рекомендуется обладателям топ карт. Используется у AMD.
TrAA (Transparency Anti-Aliasing, Прозрачное сглаживание) — тоже что и AAA, только от NVIDIA.
TrAAA (Transparency Adaptive Anti-Aliasing, Адаптивное Прозрачное сглаживание) — см. TrAA
TrMSAA (Transparency Multi-Sampling Anti-Aliasing, Прозрачная множественная выборка сглаживания) — использует краевой метод (MSAA) для прозрачных объектов. Разновидность TAAA. Может обозначаться как TMAA
TrSSAA (Transparency Super-Sampling Anti-Aliasing, Прозрачная полноэкранная выборка сглаживания) — использует полноэкранное сглаживание (SSAA) для прозрачных объектов. Разновидность TAAA. Может обозначаться как TSAA
OGSSAA (Ordered Grid SuperSampling Anti-Aliasing, Избыточная выборка сглаживания с упорядоченной решеткой) — Классический SSAA в котором используется решетка с упорядоченной выборкой, выровненная по вертикали и горизонтали.
RGSSAA (Rotated Grid SuperSampling Anti-Aliasing, Избыточная выборка сглаживания с повернутой решеткой) — Все тот же SSAA, с уточнением расположения решетки наклоненной под определенным углом. Данный метод показывает качество немного лучше, чем OGSSAA, при почти горизонтальных или вертикальных краях объектов (слегка наклоненных).
SGSSAA (Sparse Grid SuperSampling Anti-Aliasing, Избыточная выборка сглаживания с разряженной решеткой) — выборки располагаются на регулярной сетке, как в OGSSAA. Но выборка производится лишь на некоторых узлах сетки. Здесь заложен компромиссный подход между производительностью и качеством изображения. Метод используется у NVidia
JGSSAA (Jittered Grid Super-sampling Anti-aliasing, Избыточная выборка с искаженной решеткой) - каждый пиксель так же разбивается на субпиксели, но выборка сэмплов располагается случайно (Стохастическая) или со смещением внутри субпикселя.
HRAA (High-Resolution Anti-Aliasing, Полноэкранное сглаживание для высоких разрешений) — метод полноэкранного сглаживания в NVIDIA с 5-ю сэмплами. Качество как 4xSSAA, по нагрузке как 2xSSAA.
HRAA (Hybrid Reconstruction Anti-Aliasing, Гибридное сглаживание) — решение использующее лучшие практики, на основе краевого метода (MSAA, CSAA), постобработки с аналитикой и временного антиалиасинга.
EDAA (Edge Detect Anti-Aliasing, Краевое сглаживание) — так же краевой метод + обсчитываются контрастные переходы еще и на объектах и текстурах. Что в итоге сильнее садит fps. Условно можно назвать это аналогом CSAA, только от AMD. Это разновидность CFAA, описанного ниже.
CFAA (Custom Filter Anti-Aliasing, Специализированные фильтры сглаживания) — Детище AMD. Включает в себя 4 фильтра: box, narrow-tent, wide-tent, edge-detect. Каждый фильтр, это разный подход к реализации того же MSAA.
box - стандартный подход к MSAA
narrow-tent - аналог CSAA
wide-tent - так же аналог CSAA, только количество субпикселей больше в два раза
edge-detect - при проходе фильтра edge detection по отрендеренному изображению, для определенных им пикселей, которые определяются как границы полигонов или резкие цветовые переходы, используется более качественный метод антиалиасинга с большим количеством сэмплов, а для остальных пикселей с меньшим.
QAA (Quincunx Anti-Aliasing, Шахматное сглаживание ) — метод от NVidia, в основе которого лежит учет не только своих субпикселей, но и данные берутся от соседних. При этом, при расчете финального цвета, свой сэмпл имеет вес больше, чем данные с соседних. В расчет берется 5 точек. По качеству 2xQSAA, приблизительно так же выглядит как 4xMSAA.
FAA (Fragment Anti-Aliasing, Частичное Сглаживание) — разработана компанией Matrox. Сглаживание применяемое к краям объектов. Отличие от SSAA и MSAA, в том, что края и сами объекты не увеличиваются в несколько раз по маске. Каждый пиксель делится на 16 частей и если покрытие полное, то пиксель отправляется в кадровый буфер, если неполное, то уходит в отдельный буфер. Такой пиксель считается фрагментированным, при чем в дальнейшем над ним проводится анализ и он видоизменяется. Такая реализация очень сильно экономит ресурсы видеокарты. Но есть и проблема, алгоритм определения краев не всегда корректно обнаруживает те самые края. Проблема с прозрачными объектами во всей красе.
TXAA (Temporal approXimate Anti-Aliasing, Временное приблизительное сглаживание) — технология от Nvidia, которая использует основу MSAA. В формуле расчета используется время, данные по пикселям из предыдущих кадров и данные из обрабатываемой сцены. После чего происходит усреднение по цвету. Это позволяет избавиться от мерцания и дерганья объектов в игре. Вдали дает качественную картинку, однако немного мылит близкие объекты и требования к ресурсам почти как для MSAA, хотя качество при тех же значениях лучше.
Со слов производителя, TXAA 2x сравнимо по качеству с 8xMSAA, но при по затратам производительности сопоставимо как с 2xMSAA, а TXAA 4x выше по качеству чем 8xMSAA, но по затратам производительности сопоставимо как с 4xMSAA. Отлично подходит для сглаживания в динамике.
TSSAA (Temporal Super Sampling Anti-Aliasing, Временная избыточная выборка сглаживания) — Этот метод, что и TXAA, только не привязан к видеокартам NVIDIA и завязана на суперсэмплинг.
Второй тип
Влияние на фпс слабое. Так называемые методы пост-обработки, когда сглаживание происходит в момент вывода изображения на экран.
FXAA (Fast approXimate Anti-Aliasing, Быстрое приблизительное сглаживание) — разработка NVidia. Из названия видно, что это более производительное сглаживание по-сравнению с традиционным MSAA. Алгоритм использует простой способ обнаружения разрыва цветов фигур. В момент вывода изображения на экран усредняются по цвету все соседние пиксели. Это не нагружает видеокарту, но жутко мылит кадр. Далекие и затуманенные объекты в игре будут почти не узнаваемы. Такое сглаживание имеет смысл включать на слабых машинах, ноутбуках, нетбуках и прочих эконом вариантах.
MLAA (MorphoLogical Anti-Aliasing, Морфологическое сглаживание) — условный аналог FXAA. Методика придумана компанией Intel. Алгоритм, ищет пиксельные границы на каждом кадре, похожие на Z, L и U буквы и смешивает цвета соседних пикселей, входящих в каждую такую часть. Алгоритм переведен на использование процессора, а не GPU. Отсюда можно рекомендовать его обладателям слабых видеокарт и с более менее производительным процессором. Из-за более сложного алгоритма изображение получается более качественным, чем с FXAA. Имеется реализация у AMD, но технически может использовать и NVidia. Есть проблема: сглаживание не отрабатывает на прозрачных текстурах. Поэтому в довесок этой постобработки нужно подключать еще и TrAA для улучшения изображения. Время обработки занимает 0,9 мс. Так же есть методики MLAA реализованные на GPU.
SRAA (Subpixel Reconstruction Anti-Aliasing, Субпиксельное восстанавливаемое сглаживание) - новый двухпроходный алгоритм от NVidia. SRAA очень схожа с MLAA , но работает с буферами глубины и картами нормалей, из-за чего лучше определяет границы для сглаживания и затененные края. Время выполнения в целом очень низкое, основное время в алгоритме уходит на обработку затенения. На выходе могут появляться артефакты. Для сравнения на сглаживание изображения с разрешением 1280×720 методом SSAA уходит около 5-10 мс, а у SRAA примерно 1,8 мс.
SMAA (Enhanced Subpixel Morphological Anti-Aliasing, Субпиксельное морфологическое сглаживание) — комбо из MSAA/SSAA и MLAA. По сути несколько улучшенный MLAA с добавлением локального контраста и поиском паттернов. Иногда может добавляться еще и временная избыточная выборка. Ресурсов потребляет больше чем MLAA, но задействует при этом видеокарту, а не процессор.
Можно встретить разновидности:
- SMAA 1x: классический алгоритм SMAA, включающий точный поиск расстояний, работа с локальным контрастом для определения краев, геометрических объектов и поиск диагональных линий. Время обработки занимает 1,02 мс.
- SMAA T2x : SMAA 1x +техники из TSAA. Время обработки занимает 1,32 мс.
- SMAA S2x : SMAA 1x +техники из MSAA. Время обработки занимает 2,04 мс.
- SMAA 4x : SMAA 1x +техники из SSAA/MSAA и TSAA/TMSAA. Время обработки занимает 2,34 мс.
CMAA (Conservative Morphological Anti-Aliasing, Консервативное морфологическое сглаживание) — среднее между FXAA и SMAA 1x. Идеально подходит для слабых и средних графических процессоров. Отличие от FXAA происходит за счет обработки линий краев длиной до 64 пикселей. Используется алгоритм, с обрабатыванием только симметричных разрывов цветов, чтобы избежать ненужного размытия. Отличие от SMAA 1x происходит за счет менее полного сглаживания объектов, т.к. обрабатывается меньше типов фигур и обладает повышенной временной стабильностью, т.е меньше мерцаний объектов.
MFAA (Multi-Frame Sampled Anti-Aliasing, Мультикадровое сглаживание) — производится выборка двух сэмплов для каждого пикселя из текущего кадра и двух сэмплов из предыдущих, после чего применяетя фильтр. MFAA, по сути, соответствует 2xMSAA по нагрузке на видеокарту, но даёт качество картинки на уровне 4xMSAA. При этом этот метод работает примерно на 30 процентов быстрее. Падение производительности из-за фильтра минимальное. Для MFAA необходим определенный уровень частоты кадров, чтобы сглаживание можно было рассчитывать на основе двух кадров. NVIDIA утверждает, что частоты кадров 30-40 fps должно быть достаточно.
GPAA (Geometric Post-process Anti-Aliasing, Сглаживание с геометрической постобработкой) — в работе техники заложено копирование буфера с отрендеренными данными и повторной обработки ребер.
GBAA (Geometry Buffer Anti-Aliasing, Сглаживание с буфером геометрии) — усовершенствованный GPAA, в котором границы обрабатываются несколько иначе. За счет чего улучшена производительность.
Остальные методы
За бортом остались менее известные способы, относящиеся и к первому и второму типу. Ссылки на них приводятся в ознакомительных целях.
- DAEAA (Directionally Adaptive Edge Anti-Aliasing)
- DEAA (Distance-to-edge Anti-Aliasing)
- DLAA (Directionally Localized Anti-Aliasing)
- AAA (Amortized Supersampling Anti-Aliasing)
- TRAA (Temporal Reprojection Anti-Aliasing)
- HQTSSAA (High Quality Temporal Supersampling Anti-Aliasing)
- DCAA (Decoupled Coverage Anti-Aliasing)
- TGAA (Triangle-based Geometry Anti-Aliasing)
- SBAA (Surface Based Anti-Aliasing)
- NFAA (Normal Filter Anti-Aliasing)
- SDAA (Second Depth Anti-Aliasing)
- PWAA (Phone-Wire Anti-Aliasing)
- SSSAA (Selective Supersampling Anti-Aliasing)
Как видите, техник сглаживаний в играх и их разновидностей очень много. Каждая из них, это поиск баланса между производительностью и качеством графики. За все время так и не было создано одного волшебного и универсального метода, удовлетворяющего обоим условиям сразу. И вероятно, в не таком далеком будущем, все они останутся в прошлом, по мере наращивания мощностей видеокарт и поддержки более высокого разрешения.
Но этого еще нужно дождаться.
- Информация о материале
- Опубликовано: 02.02.2018 г.