8 августа 2018 8.08.18 39 69K

Графика в играх: окклюзия, сглаживание, фильтрация — Как и с чем её едят

+75

Приветствую всех Стопгеймеров! Давайте начистоту, вы ведь тоже заходите в только купленную игру, но сперва кликаете на графические настройки? Кто ради чего, кому-то ради самоутверждения надо глянуть на ультра-автонастройку благодаря своему мощному «железу», а кто-то просто лезет туда ради интереса.Однако, задумывались ли вы, чем отличаются FXAA и TXAA, или 8х и 16х анизотропная фильтрация? Как-раз в этом блоге, группа Abuse Reviews сейчас вам расскажет и покажет, что же это за фильтрации такие, как они работают и с чем их едят. Поехали!

 

P.S. прошлом блоге количество материала в ролике было урезано, здесь эта ошибка была учтена, очень старался для вас.Приятного просмотра)

Давайте начнём с самого-самого простого

Разрешение экрана

Мало кто не знает, что разрешение — это количество отображаемых пикселей по горизонтали и вертикали. От этой настройки также зависит качество картинки и то, как сильно будут выражены «лесенки» в переходах между разными плоскостями\поверхностями. Но почему же возникает этот графический артефакт? Дело в том, что все графические элементы в играх состоят из пикселей, но таких проблем с прямыми линиями не происходит, но стоит только чуть её наклонить, как появляются «лесенки». Возникает это из-за отсутствия плавного перехода между цветами, которое обеспечивает сглаживание, вот о нём мы сейчас и поговорим.

Сглаживание

Самое главное его предназначение — борьба с теми самыми «ступеньками», которые все так не любят. Сглаживание обеспечивает нам плавный переход между цветами, за счёт чего изображение получается куда комфортнее, устраняя «ступеньки». Да, картинка однозначно становится красивой, но всегда приходится чем-то жертвовать, а именно производительностью. За счёт появления новой задачи, процессору и видеокарте приходится рендерить(обрабатывать) все эти дополнительные оттенки, которое даёт нам сглаживание. Но, к счастью, существует много видов сглаживания, которые предоставляют нам разработчики в настройках. Их то мы сейчас и рассмотрим:

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

Это самый быстрый и менее затратный в плане ресурсов метод сглаживания. Отличие от прошлого метода сглаживания заключается в нескольких аспектах. В первую очередь, FXAA применяется к изображению в том разрешении, в котором вы играете, также размывает картинку сильнее, что выглядит совсем не лучше, чем MSAA, зато расходует на порядок меньше ресурсов, из-за чего этот вид сглаживания почти не вредит вашему FPS

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

Да, это не вид сглаживания, но избавляется от лесенок этот способ довольно неплохо, но при одном условии, которое свойственно не каждому пк. Ведь не у всех есть 2\4К мониторы, которые позволяют увеличить разрешение больше 1920х1080. За счёт уменьшения пикселей «лесенки» остаются, но становятся куда меньше, однако это влияет на производительность больше всего из перечисленных способов. Так что этот метод подойдёт только обладателям мониторов с очень высоким разрешением и мощным железом. Забавно слушать легенды о том, что если поставить 2к или 4к разрешение в игре на FullHD мониторе, то картинка станет лучше. Решил я это проверить на примере GTA V и что-то не увидел разницы до и после, ни в фреймрейте, ни качестве.

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

Вертикальная синхронизация

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

На этом о проблемах картинки и артефактах — всё

Тесселяция

Тут стоит обратить внимание на контур головы 47-го

А вот она создана не для того чтобы исправлять косяки в картинке, а улучшать её и делать более насыщенной и реалистичной. Многие из нас знают, что 3д-объекты в играх состоят из полигонов (мелких частиц). Тесселяция подразумевает разбиение полигонов на более мелкие части, чтобы генерировать больше деталей у объекта. Это особенно удобно для выделения высоты и глубины объектов. Также она способствует созданию более закругленных объектов без острых форм и углов.

Окклюзия окружения (Ambient Occlusion)

Лично я занимаюсь созданием 3д-моделей в Cinema 4D и довольно хорошо знаком с этой фичей.

Она позволяет создавать искусственные тени, таким образом, в идеале, геймдизайнеры и создатели 3д-анимаций предпочитают использовать движки, поддерживающие функцию глобального освещения, которое позволяет создавать освещение идентичное реальному, а всё благодаря вычислениям точных оттенков каждого из пикселей, в зависимости от общего количества света, попадаемого на него. Знаю, что звучит это сложновато, но как же это преобразовывает картинку… словами не описать. Такое освещение очень подходит для различных кинематографичных сцен в мультфильмах или кат-сцен в играх, но это оказывает очень сильную нагрузку на железо, но на то у нас и есть окклюзия окружения, которая создаёт искусственные тени там, где они должны располагаться.
Для начала стоит разобраться с освещением в играх. В них источником света является естественное освещение, которое является упрощённой версией глобального освещения, где расположение теней зависит от того, есть ли перед источником естественного освещения какое-либо препятствие, но это даёт нам более плоские тени в меньшем количестве, чем хотелось бы. Тут и наступает триумф окклюзии окружения, ведь она определяет расположение дополнительных теней с поммощью трассировки лучшей, а именно вычисляет, сколько солнечных лучшей блокируется рядом со стоящими объектами. То есть, если один объект загораживает другой, то поверхность второго объекта, разумеется, будет находиться в тени. Впадины, углубления и тому подобное начинает больше выделяться с помощью окклюзии.В огромном большинстве случаев этот параметр уже «вшит» в графические настройки, что не позволяет включать и выключать его. Но это всё окклюзия окружения в общем. Наверняка вы все сталкивались с такими параметрами освещения как SSAO,HBAO и HDAO?

Она взяла своё начало со времён первого Crysis, благодаря компании Crytek, по-сути оно заключается в вычислении глубины каждого пикселя и пытается вычислить количество преград от каждой из выбранных точек. Алгоритм SSAO призван упростить вычислительную сложность алгоритма Ambient occlusion и сделать его подходящим для работы на графических процессорах в режиме реального времени. Вместе с тем качество результирующего изображения у SSAO является худшим, чем в первоначальном Ambient occlusion, так как SSAO использует упрощённые методики рендеринга(обработки изображения).

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

Одно основывается на другом. Таким же образом как SSAO отличается от HBAO, HDAO от HBAO отличается точно тем же, ну и ещё эта окклюзия была представлена нам компанией AMD.

Ну а что по кинематографичности?

Глубина резкости

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

Ну и последнее о чём хотелось бы рассказать

Анизотропная фильтрация

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

Ну а на этом всё. Если вам понравился этот блог и вы узнали что-то новое, обязательно жмите на плюс, а также интересно узнать, нравится ли вам качество видеоформата, если вы его глянули? Большое спасибо вам за внимание, всем удачных каток и стабильного FPS!


Лучшие комментарии

Дратути.
Приятно видеть блог, просвещающий читателей насчёт технических нюансов графона.
Вот только есть ряд факапов, местами — весьма существенных.

MSAA. Этот вид сглаживания не слишком сильно нагружает процессор

Эм… ну начнём с того, что, я надеюсь, речь шла про видеочип, а не про CPU, правда же?
И — нет, это один из самых тормозных алгоритмов сглаживания. Медленнее него — только SSAA. Который, по сути, ваще брутфорс aka DSR aka «большее разрешение».

Пожалуй, это лучший вид сглаживания

Этот алгоритм действительно сглаживает не только внутри кадра, но и по времени. Однако это насколько фича, настолько же и баг. Из всех алгоритмов — лишь TXAA создаёт характерные «шлейфы» на движущихся объектах.
Так что вот прям лучшим всё-таки будет скорее SMAA (не путать с MSAA).

Screen tearing… но по какой-то причине эти парни не могут этого сделать, причиной является частота кадров и частота обновления монитора.

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

Но и для этой беды есть решение, которое называется — горизонтальная синхронизация.

Простите, но вот тут — вы вообще мимо. Такого понятия вообще не существует. Речь явно идёт об адаптивной (aka динамической) частоте кадров. И — в частности — о технологиях FreeSync (от православной AMD) и G-sync (от зелёного тролля), которые сабж реализуют.
Я уж молчу, что разрывы экрана вообще никак не связаны с «количеством объектов». Это скорее даёт performance hit на стороне проца, но не видеокарты. Для неё роль играет количество вертексов, сложность шейдеров и fill-rate.

В остальной части тоже есть мелкие огрехи, но разбирать из было бы скорее придиркой.

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

А кто-то просто опускает все настройки в нулину и молится, чтобы минимальные системные требования соответствовали реальному положению дел :)
Спасибо за блог, хоть я и не могу полноценно оценить справедливость написанного, но думаю для многих он будет полезен в качестве эдакой «шпаргалки».
Предлагаю к ознаКомлению!
Отличный блог, благодарю!
Видео пока не смотрел, но для сравнения гляну позже. Мне удобнее такую информацию в текстовом формате с картинками воспринимать. За это отдельное спасибо.
С картинками же есть 2 легких способа:
1 — подобных статей в нэте хватает и можно законно стырить картинки
2 — есть оверклокер(кажется) как один из ресурсов на которых сравнивали графические настройки и картинок хватало
3 — можно включить игру и самому заскринить

Доступно это хорошо, но одно дело сказать «это чуть лучше этого, нопрожорлевей», а другое дело показать. Если человек вынужден понижать настройки, ему куда проще будет понять что понижать увидев это. Например SSAO и HBAO. Что лучше? На сколько лучше? Знать термин это хорошо и откуда взялось тоже, но мы всё же в настройки лезем для выбора
Большое спасибо, очень старался!
Многие из нас знают, что 3д-объекты в играх состоят из полигонов (мелких частиц). Тесселяция подразумевает разбиение полигонов на более мелкие части, чтобы генерировать больше деталей у объекта.

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

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

В играх сейчас применяется именно HBAO+ (а не HBAO). Разница заключается в том, что HBAO при из-за особенностей рендера может вызывать мерцание картинки. Это было исправлено в HBAO+.

И у нас вроде как 2018 год на дворе, DirectX 12 и ни слова о VXAO (Voxel Accelerated Ambient Occlusion).


Уже от компании nVidia, да и подход несколько другой (работа идет не с пикселями, а вокселями. Фактически, воксел — это пиксель в 3D. Хотя фактически просто очередной улучшенный тип AO.

Как по мне — блог слишком поверхностный и местами слегка путается в деталях. Да, работа каждой технологии объяснена практически на пальцах… но толку никакого. Хотя бы чуть-чуть о работе каждого алгоритма стоило сказать, как по мне.
Многие из нас знают, что 3д-объекты в играх состоят из полигонов (мелких частиц).

Извини, покритикую.
Полигоны это не мелкие частицы
Поли = много; гон = угол. То есть, трёхмерные объекты строятся пространственными многоугольниками. Либо у тебя опечатка, либо ты с вокселями (Volumе Pi
xel
— объёмными пикселями) перепутал.

И ещё, ты не совсем прав про разрешение. Существует (покрайней мере на nVidia) технология DSR — Dynamic Super Resolution. Суть вкратце — изображение рассчитывается в изображении большем, чем у монитора до четырёх крат (выставляется в настройках в панели nVidia), а затем даунсэмплится до разрешения монитора перед выводом на экран с настраиваемой же плавностью краёв.


Я специально выбрал GTA IV, т.к у неё в настройках отсутствует сглаживание как вид. Обрати внимание на столик справа по кадру, разница очевидна. В интернете пишут, что подобного эффекта можно добиться кустарно, но я не знаю, мне пока без надобности.
А про окклюзии было интересно почитать, всё остальное примерно знал.
А вообще, двоякое впечатление от поста. В целом главной претензией я считаю «мало пруфов». На словах то всё может быть понятно, но вот в чём дело… графика штука визуальная. Надо показывать разницу в сглаживании. Надо показывать разницу в оклюзии.

А ещё не понял почему резкость нагружает систему. Она почти всегда жрёт по минимуму. Меньше чем Блюр, о котором так же нет указания.

Вот правда, пост был бы вдвое лучше, если бы:
1 — показывал на картинках разницу в каждой настройке
2 — прошёлся бы по всем возможным графическим нюансах, включая новомодный HDR, качеству текстур (при желании и тут можно что-то рассказать и показать)
3 — прикладывать статистику(!) что сколько жрёт. Есть же ресурсы где прям по каждой настройке сверяют фпс.

Что это такое знать полезно, но не менее полезно понимать чем можно жертвовать и что будет реально жрать ресурсы. До сих пор в недоумении от резкости… Это же в каких играх она реально жрёт ресурсы… за всю свою жизнь пик её прожорливости у меня был лишь в кадра 3 при среднем и не стабильном 40 фпс…
MSAA
Этот вид сглаживания не слишком сильно нагружает процессор

Может графический процессор? Насколько я помню на ЦП работает только SMAA (ибо Intel'овская разработка).

Ну а касательно статьи (я пробежался по ней), ты прошелся по всему очень по касательной. Адский матан с разбором алгоритмов тебя никто не заставляет в людей вдалбливать, но и так как есть лучше не делать. Обрисуй технологию схематически на примере того же чайника (или еще как), а потом уже можешь приводить скриншоты из игр. Так взгляд читателя точно будет устремлен в нужное место.
Статья на мой взгляд очень средненькая. Ты бы мог взять какой-нибудь RenderDoc и разобрать рендер кадра в какой-то игре. Ну либо набросать что-то простенькое в той же Юньке. И да, показать всегда понятнее чем рассказать.
Большое спасибо за блог! Очень интересно, познавательно и доступно. Надеюсь будут еще блоги на подобную или схожую тематику.
Обрисуй технологию схематически на примере того же чайника

хе-хе :)
Вертикальная синхронизация

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

Но и для этой беды есть решение, которое называется — горизонтальная синхронизация.

И решение это присутствует только в дорогих мониторах (35к+).

Глубина резкости
Неплохо так нагружает вашу систему, но и так же неплохо придаёт картинке кинематографичности

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

Кстати, в копилку мусорных эффектов могу добавить зернистость. Как и глубина резкости, зернистость нужна для «кинематографичности», но на деле шакалит картинку, чтобы скрыть недочеты графики. Еще б джпегом пережать догадались, дебилы. В некоторых играх приходится выключать через конфиги.
Очень полезная статья, спасибо, буду пользоваться)
Fix *изображение… в разрешении
И да, с DSR скриншоты сохраняются в большем разрешении.
Одна из причин почему имею консоль и пк. Даже когда железо у меня было актуальным, при запуске могло не выставить корректно разрешение, поставить минималки или ещё чего. Вроде бы мелочь, но из-за этой мелочи и появляется привычка при запуске игры не, собственно, играть, а устраивать проверку на корректность автоматически-выставленных настроек и проверку на лаги. А ведь какие то игры сначала дают ролик и если разрешение отображено некоректно, это адуха…
А ещё вертикалка незначительно, но всё же увеличивает время отклика. Не важно для большинства, важно для киберспортсменов.
Спасибо за конструктивную критику.
По поводу картинок со сравнениями, я хотел приложить наглядные схемы, но когда я глянул и пытался в них разобраться, то лично мне было ничего не понятно. Я стремился создать более-менее краткое и понятное для неопытного ПК-юзера руководство, ну и просто для всей Аудитории. Больше наглядных примеров есть в видеоверсии, так как там все 9 минут идёт видео, что позволяет вместить больше визуальной информации.
Что могу сказать по поводу глубины резкости или как в настройках пишут иногда Depth of Field, либо у меня комп плохо этот параметр воспринимает, что в Беседковских игр типа Фоллаута и Скайрима при фокусировке на объект начинает неплохо скакать фпс, либо так и в самом деле есть, но этот факт брал из личного опыта, а не из источников, так что вполне вероятно, что я мог ошибиться.
Ещё раз спасибо за отзыв)
Читай также