Что такое сглаживание и зачем оно нужно в играх

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

Что такое сглаживание

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

Все картинки к этой статье нарисовала нейросетка Kandinsky 2.1 в стиле пиксель-арт
Все картинки к этой статье нарисовала нейросетка Kandinsky 2.1 в стиле пиксель-арт

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

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

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

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

Алгоритмы сглаживания для разных ситуаций

По-английски сглаживание называется antialiasing, так что большинство алгоритмов содержат это слово в названии:

  • Когда нужно построить неподвижную наклонную линию или кривую, применяется геометрический антиалиасинг;
  • При удалении от узкого объекта типа висящего провода мы в какой-то момент попросту перестаём его видеть. Чтобы такой провод в игре воспринимался нами так же, как в реальности, применяется подпиксельный антиалиасинг;
  • Если мы удаляемся от решётки, состоящей из тонких прутьев, они начнут сливаться. Чтобы предотвратить превращение такого игрового объекта в «кашу», нужен субпиксельный антиалиасинг;
  • По мере удаления от поверхности, которая обладает детальной текстурой, она будет размываться, особенно если смотреть под углом. Чтобы при этом поверхность сохраняла детали, применяется антиалиасинг текстур;
  • В реальности мы видим хвоинки и листья деревьев чётко и одновременно как единое целое. В игровой ситуации мелкие объекты такого рода начинают мерцать. Избежать этого позволяет антиалиасинг прозрачности;
  • Наконец, артефакты в виде ступенек могут появляться при просчёте эффектов освещения. Квадраты, возникающие в контровом или контрастном свете, устраняет антиалиасинг шейдеров.

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

У Соника что-то с глазом, потому что алгоритмировали, алгоритмировали, да не выалгортимировали пока
У Соника что-то с глазом, потому что алгоритмировали, алгоритмировали, да не выалгортимировали пока

Технологии сглаживания в играх

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

Разобраться, какая технология сглаживания используется в конкретной игре, бывает довольно сложно. Часто в настройках игры пункт «сглаживание» выражен в простых, но достаточно туманных понятиях «низкое — среднее — высокое». Если там всё же есть указания на конкретные алгоритмы, например, «MSAAx8», возникает другая проблема: эти названия большинству игроков ничего не говорят.

Рассмотрим основные применяемые на сегодняшний день технологии сглаживания со всеми их достоинствами и недостатками.

Super Sampling Anti-Aliasing (SSAA)

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

Границы объекта очерчиваются воображаемым многоугольником. Сэмплами называются виртуальные точки внутри него. В первых реализациях такой точкой был центр пикселя, сейчас чаще всего на пиксель приходится 4 точки. Если все четыре точки находятся внутри многоугольника, то пиксель имеет максимальную яркость, если три — яркость устанавливается на 75% от исходной и так далее.

Именно число сэмплов на один пиксель зашифровано в формуле «SSAAx4». Чем больше сэмплов на один пиксель используется, тем больше информации приходится хранить и тем более гладким будет изображение, но при этом могут потеряться детали и резкость.

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

Тот случай, когда так плохо, что даже хорошо
Тот случай, когда так плохо, что даже хорошо

MultiSample Anti-Aliasing (MSAA)

В стремлении устранить недостаток предыдущей технологии разработчики справедливо заметили, что проблемные места возникают на границах зон — там, где, собственно, больше всего заметны «ступеньки». Так появился прямой потомок SSAA — MultiSample Anti-Aliasing (MSAA), иначе называемый мультисэмплинг.

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

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

Coverage Sampling Anti-Aliasing

Следующей итерацией SSAA стала технология Coverage Sampling Anti-Aliasing (CSAA). Здесь добавились дополнительные сэмплы на границы объектов. Это позволило более точно определять, какой цвет должен иметь каждый пиксель на границе объекта.

Чтобы сделать процесс более быстрым и эффективным, и они стали искать решение без использования сэмплов.

Fast approXimate Anti-Aliasing (FXAA)

Первой «ласточкой» на пути отказа от супер- и мультисэмплов стал изобретённый NVIDIA алгоритм аппроксимации граничных пикселей. Его идея заключалась в сравнении яркости и контрастности пикселей соседних областей, например, неба, земли или здания.

Алгоритм работал достаточно быстро и не сильно нагружал графическую систему. Проблема в том, что он хорошо работал с большими областями, а когда дело доходила до рендеринга детализированных объектов, результаты его работы оставляли желать лучшего — мелкие элементы терялись или размывались. Работники телевидения называют такую картинку «мыльной», и этот термин закрепился и в разработке игр.

Temporal Anti-Aliasing (TAA)

Прорывное решение, придуманное снова NVIDIA, оказалось довольно очевидным. В некотором роде процесс антиалиасинга по этой технологии похож на то, как рисуется последовательность картинок в блокноте: линии каждого последующего рисунка чуть-чуть сдвигаются, и при перелистывании страниц картинка «оживает», оставаясь плавной.

Темпоральное сглаживание также строит последовательность кадров, кадры сравниваются, пиксели интерполируются. Это очень эффективный алгоритм, который реализуется не в графическом движке, а силами центрального процессора. Определяющая его характеристика — частота FPS (frames per second): чем больше кадров показывается в секунду, тем лучше сглаживание.

Казалось бы, проблема решена? Не совсем: у этого метода сглаживания есть свои недостатки, вытекающие из принципа его работы.

Первый — если движущиеся объекты перемещаются слишком быстро или слишком близко к краям изображения, за ними будет «шлейф» размытости и в целом изображение может выглядеть менее резким и детализированным из-за смешивания движущихся объектов вместе со статическими объектами. Это явление называется «гостинг» (ghosting, от английского слова «привидение»).

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

«Это задача для Ведьмака» — как бы говорит нам Kandinsky 2.1
«Это задача для Ведьмака» — как бы говорит нам Kandinsky 2.1

Гибридные морфологические технологии

Одни технологии выигрывают в качестве, другие — в скорости. Вполне логично, что дальнейшим развитием технологии антиалиасинга стала попытка запрячь в одну телегу коня и трепетную лань: совместить аппроксимацию пикселей в пространстве и их интерполяцию во времени. Результатом стало семейство схожих морфологических технологий.

Morphological Antialiasing (MLAA)

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

Enhanced Subpixel Morphological Antialiasing (SMAA)

Алгоритм — улучшенная версия MLAA, где анализ и интерполяция осуществляется не по цвету, а по яркости. В некотором роде здесь тоже происходит сэмплирование, но сэмплом в данном случае выступает сам же анализируемый пиксель. Для различения технологий стали использовать термин subpixel. Достоинство этого метода — он довольно точно сохраняет геометрию.

Conservative Morphological Anti-Aliasing (CMAA)

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

Технологии, применяющие масштабирование и машинное обучение

Развитие нейросетей направило разработчиков по принципиально иному пути: считать кадр в сравнительно низком разрешении, а затем увеличивать его до нужного размера. Представители этого направления — технологии DSSL и FSR.

Кто догадался, что мы пытались заставить сделать нейросеть? 😁
Кто догадался, что мы пытались заставить сделать нейросеть? 😁

Deep Learning Super Sampling (DLSS)

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

Звучит очень круто, согласитесь? Это чуть ли не единственная технология, который в результате своей работы не снижает FPS, а увеличивает. Но работать она будет только на тех видеокартах от NVIDIA, у которых есть специализированные ядра.

У DLSS есть ветка — Deep Learning Anti-Aliasing (DLAA). Она не меняет разрешение картинки, а лишь улучшает его, достраивая пиксели на основе машинного обучения. Это значительно улучшает качество изображения для старых игр, но в случае современных игр она довольно сильно нагружает графическую систему.

Fidelity FX Super Resolution (FSR)

Если NVIDIA в погоне за красотой изображения фактически безальтернативно пересаживает геймеров на свои самые новые устройства, то AMD идёт по другому пути. Их технология Fidelity FX Super Resolution работает на всех видеокартах этого производителя. Более того, в первую очередь её применение ориентируется именно на старые устройства.

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

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

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

Это, если что, распределяющая шляпа.
Это, если что, распределяющая шляпа.

По мнению экспертов, лучшие результаты сегодня показывает DLSS. Если у вас свежая карта от NVIDIA, например, серии RTX, которая устанавливается в игровые компьютеры HYPERPC, то вы король мира :)

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

  • увеличить разрешение картинки, например, с исходного масштаба 100% до 130%;
  • увеличить резкость картинки в настройках графики игры;
  • использовать морфологическое сглаживание SMAA.
2.3K2.3K показов
1.2K1.2K открытий
11 комментариев

Круто!

Ответить

Очередной рекламный вброс от людей которые продают хлам за оверпрайс

Ответить

Комментарий недоступен

Ответить

Комментарий недоступен

Ответить

Комментарий недоступен

Ответить

Что такое сглаживание?
Да.

Ответить

Лонг, который мы не заслуживаем

Ответить