Обложка статьи «Сглаживание в играх: как разработчики делают картинку приятнее и какой тип сглаживания выбрать?»

Сглаживание в играх: как разработчики делают картинку приятнее и какой тип сглаживания выбрать?

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

Зачем нужно сглаживание в играх?

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

pixel notches

Лесенка пикселей при отрисовке наклонных линий

Эту проблему можно решить приобретением монитора с бОльшим разрешением. Скорее всего, если у вас не современная видеокарта, то придётся обновить и её. Но такой вариант устроит далеко не каждого.

По этой причине разработчики добавляют в свои игры технологию сглаживания. Она была придумана ещё в 1972 году, но популярность в игровой индустрии начала набирать только спустя несколько десятков лет. Суть сглаживания заключается в том, чтобы закрасить соседние от зазубренности пиксели в промежуточный цвет (или градиент цветов). В таком случае переход будет казаться не таким резким, тем самым сглаживая границу.

pixel lines

Пример сглаживания наклонной линии

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

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

SSAA (SuperSample Anti-Aliasing)

Самый простой, но в то же время самый эффективный тип сглаживания, который в играх даёт самую приятную картинку. К сожалению, он сильно снижает производительность. Видеокарта виртуально увеличивает разрешение экрана в несколько раз. После отрисовки кадра изображение сжимается обратно до оригинальных размеров, усредняя цвета виртуальных пикселей в соответствующие им реальные пиксели. Если разрешение экрана Full HD (1920×1080), а сглаживание работает в четырёхкратном режиме, то кадр будет отрисовываться в разрешении 4K (3840×2160).

Примечание Усреднение пикселей — это просто нахождение среднего цвета от нескольких виртуальных пикселей. Например, в SSAA x 4 разрешение увеличивается в два раза. Тогда каждому реальному пикселю будут соответствовать 4 виртуальных. Вот примеры того, как будет происходить усреднение:

averaging colors

Примеры усреднения цветов

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

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

Однако иногда в настройках может попасться сглаживание SSAA x 0,5. При его использовании разрешение изображения виртуально уменьшается в два раза, а при отрисовке на экран обратно растягивается. Качество картинки в таком случае ухудшается, а вот производительность игры наоборот увеличивается.

MSAA (MultiSample Anti-Aliasing)

На практике, сглаживание не нужно применять абсолютно ко всему кадру. Оно уместно там, где есть наклонные линии, контрастные границы полигонов или мелкие объекты на дальнем расстоянии. Поэтому на замену ресурсоёмкому SSAA пришёл более лёгкий MSAA.

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

Сглаживание в играх: MSAA

Результат четырёхкратного сглаживания MSAA

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

FXAA (Fast approXimate Anti-Aliasing)

Суть этого алгоритма заключается в усреднении цветов соседних реальных (не виртуальных) пикселей.

Сглаживание в играх: FXAA

Результат сглаживания FXAA

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

MLAA (MorphoLogical Anti-Aliasing)

Этот тип сглаживания является аналогом FXAA от Intel. Алгоритм работает после финальной отрисовки кадра, поэтому может выполняться уже не на видеокарте, а на центральном процессоре. Это позволяет существенно снизить нагрузку на видеокарту.

mlaa

Принцип разбиения изображения на структуры. Источник

MLAA определяет места с резким переходом цветов по 3 разным паттернам: Z, U и L. Потом участок градуируется по цветам по заранее заданным алгоритмам, свойственным каждому из паттернов.

SMAA (Subpixel Morphological Anti-Aliasing)

Это сглаживание, созданное на основе FXAA и MLAA. Является улучшенной версией MLAA, но работает уже не на ЦП, а на видеокарте, а значит, тратит её ресурсы.

Теперь для определения контуров алгоритм использует не только разность цветов, но и яркость пикселей. Паттерны Z, U и L остаются, а вдобавок к ним появляются диагональные паттерны. Это помогает точнее отрисовывать острые грани объектов.

smaa

Результат сглаживания SMAA. Обратите внимание на дерево и листья у здания

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

TXAA/TAA (Temporal Anti-Aliasing)

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

Первая проблема решается соединением и оптимизацией двух типов сглаживаний: MSAA и SMAA. С дрожанием алгоритм борется с помощью анализа нескольких предыдущих кадров. Поэтому этот тип ещё называют временным сглаживанием (так как он анализируют кадры, которые были некоторое время назад).

taa

Результат работы сглаживания TAA

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

DSR (Dynamic Super Resolution)

Сглаживание тоже прямиком от Nvidia. Алгоритм похож на SSAA. Разница в том, что DSR просто запускает игру в бОльшем разрешении экрана. После этого, как и SSAA, он отрисовывает кадр, а затем уменьшает картинку до оригинального разрешения.

Из вытекающих преимуществ: вы сможете делать 4К скриншоты на Full HD мониторе, например. Однако, если игра не до конца оптимизирована под этот тип сглаживания, то интерфейс игры и чувствительность мыши могут уменьшиться, так как по сути вы играете на разрешении большем, чем у вашего монитора.

CSAA/CFAA (Coverage Sampling Anti-Aliasing/Custom-Filter Anti-Aliasing)

Улучшенная версия MSAA. Даёт качество картинки на уровне MSAA x 8, но при этом потребляет ресурсов, как MSAA x 4. Замыливания почти нет.

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

csaa

Результат восьмикратного сглаживания CSAA

Примечание Многие алгоритмы сглаживания во время обработки изображения учитывают не только соседние пиксели, но и отдельно их субпиксели (да-да, те самые R, G и B каналы) — всё зависит от строения и особенностей матрицы вашего монитора.

На изображении ниже видно, что при сглаживании текста участвуют не полноценные пиксели, а только некоторые их каналы: красный, синий и жёлтый (смесь красного и зелёного).

tproger-ct

Технология субпиксельного рендеринга Clear Type

Какое сглаживание выбрать в игре?

Если вы — владелец мощного игрового компьютера, а в настройках графики видите SSAA-сглаживание — без раздумий выбирайте его. Но если вы переоценили силы вашего ПК, и такое решение сильно ударило по частоте кадров, то попробуйте найти SMAA или TXAA (TAA).

Если ваш компьютер более бюджетный, всегда есть варианты использования FXAA, MLAA или MSAA.

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

***

Итак, из этой статьи вы узнали много разных наборов букв. Проверьте, получилось ли у вас что-то запомнить. 🙂


Хинт для программистов: если зарегистрируетесь на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации