Сглаживание в играх: история и реализация
Переходя в настройки графики видеоигр, многие параметры у нас не вызывают вопросов. Например, понятно, что качество объемного тумана, регулирует плотность и детализацию эффектов пара в воздухе. Однако существуют настройки, которые непонятны совсем.
Одной из подобных характеристик выступает сглаживание. Мы решили разобраться, зачем нужна эта технология, как она работает и какие виды сглаживания в играх считаются лучшими. В этих вопросах нам поможет разобраться компания HYPERPC, которая прямо сейчас проводит розыгрыш. Успевайте выполнить все условия и выиграйте мощный игровой ПК.
Как сглаживание связано с современными мониторами
Нельзя разобраться, для чего нужно сглаживание в играх, без знаний о современных LCD (жидкокристаллических) дисплеях. Так что сначала кратко разберемся с их конструкцией.
Современные мониторы создают изображение при помощи огромного количества пикселей. У Full HD дисплеев их более 2 млн штук. Пиксели настолько маленькие, что разглядеть их можно только если вплотную приблизить глаза к монитору.
Благодаря такой конструкции получается четкое и детализированное изображение. Однако есть и недостаток – возникают «лесенки».
Когда нам требуется построить прямую линию с помощью пикселей, то все получается идеально, но когда нам надо изобразить диагональ, на ее границах появляются «лесенки». Их также называют «ступеньками», но правильный термин – «алиасинг».
Сглаживание – это технология по устранению алиасинга. С ее помощью «ступеньки» на границах диагональных линий исчезают.
Проблемы алгоритмов сглаживания
На сегодня разработаны десятки самых разных технологий сглаживания и логично задать вопрос: «А почему нельзя использовать только один алгоритм»? Дело в том, что разработчики до сих пор не могут решить проблемы:
- эффективности;
- производительности;
- искажения картинки.
Проблема эффективности и виды алиасинга
Когда мы приводили пример с построением диагональной линией, это был всего лишь один из видов алиасинга – геометрический. В действительности их больше.
Главная проблема технологий сглаживания состоит в том, что алгоритмы не могут одинаково хорошо справляться со всеми типами алиасинга. Чтобы вы лучше понимали, о чем речь, кратко познакомимся с типами «лесенок» в современной компьютерной графике.
Алиасинг делится на следующие виды:
- Геометрический. Проявляется во время изображения наклонных линий. Подходя к краю постройки, мы видим на ее границе «лесенки».
- Субпиксельный. Проявляется во время изображения тонких линий. Телефонные кабели или шпили частично пропадают с увеличением расстояния.
- Текстурный. Проявляется, когда игровая камера располагается под углом к текстурам. При движении камеры ландшафт начинает мерцать.
- Шейдерный. Проявляется во время изображения эффектов освещения. Яркие световые отражения от луж или зеркал могут иметь «лесенки».
- Алиасинг прозрачности. Проявляется во время сближения частично прозрачных моделей. Отдаляясь от сетчатого забора, металлические прутья начинают смешиваться и терять детализацию.
Проблема производительности
Алгоритмы сглаживания дополнительно нагружают ПК для игр. Прежде всего это заметно по снижению частоты кадров. Например, если без сглаживания ваш компьютер выдает 100 FPS в Far Cry 6, то после включения SMAA количество кадров снизится примерно до 95.
Некоторые алгоритмы анти-алиасинга настолько требовательные, что могут снижать частоту кадров почти в 3 раза. Именно таким алгоритмом выступает самый первый вид сглаживания SSAA. Он хорошо устраняет «лесенки», но требует много вычислительной мощности.
Проблема искажения картинки
Проблему эффективности и производительности удалось решить с выходом «временного» сглаживания, известного по аббревиатуре «TAA». Этот алгоритм успешно борется с любыми «лесенками». При этом он снижает частоту кадров всего на 10%. Однако у TAA есть существенный недостаток – «замыливание» картинки.
Под «замыливанием» понимают искажение границ объектов, потерю их четкости и детализации. Края моделей как будто смазываются и становятся менее разборчивыми.
Не только TAA, но и другие алгоритмы анти-алиасинга страдают искажением картинки. Самые известные из них:
- FXAA;
- MLAA;
- DLSS.
Какие бывают виды сглаживания и какой алгоритм выбрать
В связи с вышеперечисленными проблемами поиск идеального анти-алиасинга продолжается до сих пор. Несмотря на десятки созданных алгоритмов, спросом у разработчиков пользуются около пяти.
Далее поговорим о самых популярных технологиях сглаживания, но сперва оговоримся. Чтобы упростить знакомство, мы опустим сложные термины. Обсудим только основные принципы работы разных видов сглаживания, а также плюсы и минусы каждого из них.
SSAA – первое в мире сглаживание
Чтобы избавиться от «лесенок» разработчики придумали помещать в квадратные пиксели виртуальные точки – семплы. Они располагалась по углам и в центре. Но за что они отвечали? Давайте разберемся на их принципе работы:
- если диагональ пересекала все семплы, то пиксель загорался полностью;
- если пересекалось только несколько семплов, то пиксель загорался наполовину;
- если ни один семпл не пересекался, то пиксель вообще не загорался.
Такой метод справлялся почти со всеми видами алиасинга, но в несколько раз снижал частоту кадров. Поэтому разработчики редко добавляли его в игры. Сегодня SSAA, который также называют «суперсэмплингом», не используется в современных проектах, но его можно увидеть в некоторых старых.
MSAA – самое популярное сглаживание прошлых поколений
Вместо того чтобы отказаться от SSAA, графические инженеры решили его доработать и снизить влияние на производительность. Так и получился «мультисэмплинг» он же MSAA. Это самое популярное сглаживание прошлых поколений. Оно даже сегодня встречается в некоторых играх.
Если в SSAA виртуальные точки помещались в каждый пиксель, то в MSAA – только в те, которые располагались на границах объектов. Это позволило значительно сэкономить ресурсы системы. Однако недостатки у MSAA все равно оставались.
Влияние на систему снизилось, но оно по-прежнему было высоким. Кроме этого, мультисэмплинг устранял только геометрический алиасинг, но со всеми остальными видами «лесенок» не справлялся. Поэтому, если увидите MSAA в настройках графики, не спешите его включать. Лучше отдайте предпочтение другим алгоритмам.
FXAA – самое нелюбимое сглаживание игроками
Этот алгоритм часто использовался разработчиками в эпоху PS3 и Xbox 360. Его принцип работы заключался в сравнении яркости соседних пикселей. Сглаживание распознавало световые переходы и сглаживало обнаруженные линии.
Популярность FXAA была обусловлена легкой интеграцией в игровые движки и низким потреблением производительности около 3%. Из недостатков:
- Очень низкая эффективность. Алгоритм плохо справлялся даже с примитивным геометрическим алиасингом.
- Сильное искажение картинки. Изображение сильно «мылилось» и теряло в детализации.
FXAA почти не встречается в современных играх, однако если увидите его в старых проектах, то лучше отдайте предпочтение другим алгоритмам.
TAA – самое популярное сглаживание современности
Temporal anti-aliasing – это одно из лучших сглаживаний в истории компьютерной графики. Оно не только устраняет все виды алиасинга, но и делает это ценой 5-10% производительности.
Если кратко, то принцип работы TAA следующий: алгоритм берет данные о пикселях из предыдущих кадров и использует их для реконструкции новых. Затем технология усредняет расположение пикселей, из-за чего происходит сглаживание картинки.
Этот принцип работы хоть и позволяет выиграть в производительности, но создает проблемы в виде гостинга и замыливания.
Гостингом называют текстурный шлейф, который тянется за движущимися объектами. Например, когда падает листва, то она будет оставлять смазанные шлейфы в воздухе. Справится с этим явлением нельзя, но уменьшить его можно, увеличив частоту кадров.
Несмотря на недостатки TAA, это сглаживание все равно остается одним из лучших алгоритмов по устранению алиасинга. Если вы хотите получить максимально качественную картинку, то включайте именно его.
DLSS – самое революционное сглаживание
Мы привыкли к тому, что сглаживание снижает частоту кадров. Однако существует всего один алгоритм, который ее повышает, да еще и в несколько раз. Речь идет о DLSS сглаживании. Эта технология снижает разрешения игры и при помощи нейросети дорисовывает его до разрешения вашего дисплея.
Например, если мониторе с разрешением 1080p выставить DLSS на параметр «качество», то игра будет рендериться не в 720p. Нагрузка на видеокарту снизится, и частота кадров увеличится. Далее нейронная сеть дорисует пиксели до 1080p, из-за чего картинка почти не изменится в сравнении с TAA, которое, кстати, лежит в основе DLSS.
Это сглаживание доступно только на видеокартах серии RTX, так как NVIDIA включила в конструкцию их графических процессоров специальные вычислительные блоки – тензорные ядра. Без них работа нейронной сети невозможна. Если вы являетесь обладателем карты RTX, то в первую очередь отдавайте предпочтение DLSS.
DLAA – новая версия DLSS
Единственное отличие DLAA от DLSS состоит в том, что оно не уменьшает разрешение рендера изображения. Из-за этого прибавка в FPS отсутствует. Нейронная сеть используется только для улучшения картинки, а не ее реконструкции из более низкого разрешения.
При включении DLAA изображение становится четче и детализированнее по сравнению с DLSS. Поэтому если вам не нужна прибавка в частоте кадров, то включайте DLAA.