Для чего нужна анизотропная фильтрация в играх
Анизотропная фильтрация
Фильтрация текстур: основная идея
Чтобы понять разницу между различными алгоритмами фильтрации нужно сначала понять, что пытается сделать фильтрация. Ваш экран имеет определенное разрешение и состоит из того, что называется пикселями. Разрешение определяется количеством пикселей. Ваша 3D плата должна определить цвет каждого из этих пикселей. Основой для определения цвета пикселей служат текстурные изображения, которые накладываются на полигоны, расположенные в трехмерном пространстве. Текстурные изображения состоят из пикселей, называемых текселями. По сути, эти тексели являются пикселями 2D изображения, которые наложены на 3D поверхность. Главный вопрос таков: какой тексель (или какие тексели) определяет цвет пикселя на экране?
Представьте себе следующую проблему: предположим, что ваш экран это плита с большим количеством отверстий (давайте исходить из предположения, что пиксели имеют круглую форму). Каждое отверстие это пиксель. Если вы посмотрите через отверстие, вы увидите какой цвет оно имеет, соотносительно трехмерной сцены, раполагающейся за плитой. Теперь представьте себе световой луч, проходящий через одно из этих отверстий и попадающий на текстурированный полигон, расположенный за ним. Если полигон расположен параллельно экрану (т.е. нашей воображаемой плите с отверстиями), тогда световой луч попав на него образует круглое световой пятно (см. рис. 1). Теперь, вновь подключив воображение, заставим полигон вращаться вокруг своей оси и самые простые познания подскажут вам, что форма светового пятна изменится, и вместо круглой станет эллиптической (см. рис. 2 и 3). Вы, вероятно, желаете знать, какое отношение имеет это пятно света к проблеме определения цвета пикселя. Элементарно, все полигоны, расположенные в этом пятне света определяют цвет пикселя. Все, что мы тут обсудили и есть основные знания, которые необходимо знать для того, что бы понять различные алгоритмы фильтрации.
Посмотреть на различные формы светового пятна можно на следующих примерах:
1. Point Sampling
Point Sampling — поточечная выборка. Это самый простой способ определения цвета пикселя на основе текстурного изображения. Вам нужно всего лишь выбрать тексель, ближе всех расположенный к центру светового пятна. Разумеется, вы совершаете ошибку, так как цвет пикселя определяют несколько текселей, а вы выбрали только один. Вы так же не принимаете во внимание тот факт, что форма светового пятна может измениться.
Главный преимущество такого метода фильтрации — это низкие требования к ширине полосы пропускания памяти, т.к. для определения цвета пикселя вам нужно выбрать всего лишь один тексель из текстурной памяти.
Главный недостаток — это тот факт, что когда полигон расположен ближе к экрану (или точке наблюдения) количество пикселей будет больше, чем количество текселей, следствием чего станет блочность и общее ухудшение качества изображений.
Однако, главная цель применения фильтрации это не улучшение качества при сокращении расстояния от точки наблюдения до полигона, а избавление от эффекта неправильного расчета глубины сцены (depth aliasing).
2. Bi-Linear Filtering
Bi-Linear Filtering — билинейная фильтрация. Состоит в использовании интерполяционной техники. Иными словами, применительно к нашему примеру, для определения текселей, которые должны быть задействованы для интерполяции, используется основная форма светового пятна — круг. По существу, круг аппроксимируется 4 текселями. Этот способ фильтрации представляет собой существенно лучше поточечной выборки (point sampling), так как отчасти принимается во внимание форма светового пятна и используется интерполяция. Это означает, что если полигон приближается слишком близко к экрану или точке наблюдения, то для интерполяции потребуется больше текселей, чем в действительности доступно. В результате получается прекрасно выглядящее расплывчатое изображение, впрочем это лишь побочный эффект.
Главный недостаток билинейной фильтрации в том, что аппроксимация выполняется корректно только для полигонов, которые расположены параллельно экрану или точке наблюдения. Если полигон развернут под углом (а это в 99% случаев), значит вы используете неправильную аппроксимацию. Неправильность заключается в том, что вы используете аппроксимацию круга, в то время, как должны аппроксимировать эллипс. Главная проблема в том, что при билинейной фильтрации требуется считывать по 4 текселя из текстурной памяти для определения цвета каждого выводимого на экран пикселя, а значит требования к ширине полосы пропускания памяти увеличиваются в четыре раза, по сравнению с поточечной фильтрацией.
3. Tri-Linear filtering
Tri-Linear filtering — трилинейная фильтрация, представляет собой симбиоз mip-текстурирования и билинейной фильтрации. Фактически, вы производите билинейную фильтрацию на двух mip уровнях, что в результате дает вам 2 текселя, по одному для каждого mip уровня. Цвет пикселя, который должен быть выведен на экран, определяется в результате интерполяции по цветам двух mip-текстур. По сути, mip уровни представляют собой заранее рассчитанные более маленькие версии исходной текстуры, а это означает, что мы получаем более хорошую аппроксимацию текселей, расположенных в пятне света.
Эта техника обеспечивает лучшую фильтрацию, но имеет лишь небольшие преимущества перед билинейной фильтрацией. Требования к ширине полосы пропускания памяти удваиваются, по сравнению с билинейной фильтрацией, так как вам необходимо считать 8 текселей из текстурной памяти. Использование мипмеппинга обеспечивает лучшую аппроксимацию (используется большее число текселей, расположенных в световом пятне) по всем текселям в световом пятне, благодаря использованию заранее рассчитанных mip-текстур.
4. Anisotropic filtering
Anisotropic filtering — анизотропная фильтрация. Итак, чтобы получить действительно хорошие результаты, вы должны помнить, что все тексели в световом пятне определяют цвет пикселя. Вы так же должны помнить, что форма светового пятна изменяется вместе с изменением положения полигона относительно точки наблюдения. До этого момента мы использовали лишь 4 текселя вместо всех текселей, покрываемых световым пятном. Это означает, что все эти техники фильтрации дают искаженный результат, когда полигон расположен дальше от экрана или от точки наблюдения, т.к. вы не используете достаточный объем информации. На самом деле вы осуществляете сверх меры фильтрацию в одном направлении, и совершенно недостаточно фильтруете во всех остальных. Единственным преимуществом у всех описанных выше фильтраций является тот факт, что при приближении к точке наблюдения, изображение выглядит менее блочным (хотя это всего лишь побочный эффект). Таким образом, чтобы добиться наилучшего качества, мы должны использовать все тексели, покрываемые световым пятном и усреднять их значение. Однако, это серьезно ударяет по пропускной способности памяти — ее попросту может не хватить, и выполнить такую выборку с усреднением нетривиальная задача.
Вы можете использовать разнообразные фильтры для аппроксимации формы светового пятна в виде эллипса для нескольких возможных углов положения полигона относительно точки зрения. Существуют техники фильтрации, которые используют от 16 до 32 текселей из текстуры для определения цвета пикселя. Правда использование подобной техники фильтрации требует существенно большей ширины полосы пропускания памяти, а это почти всегда невозможно в существующих системах визуализации без применения дорогостоящих архитектур памяти. В системах визуализации, использующих тайлы 1 существенно экономятся ресурсы полосы пропускания памяти, что позволяет использовать анизотропную фильтрацию. Визуализация с применением анизотропной фильтрации обеспечивает лучшее качество изображения, за счет лучшей глубины детализации и более точного представления текстур, наложенных на полигоны, которые расположены не параллельно экрану или точке наблюдения.
1 Tile (тайл) — плитка или фрагмент изображения. Фактически тайл представляет собой участок изображения, обычно с размером 32 на 32 пикселя; по этим участкам осуществляется сортировка с целью определения, какие полигоны, попадающий в этот тайл являются видимыми. Тайловая техника реализована в чипсетах VideoLogic/NEC.
Дополнительную информацию по данной теме можно прочитать здесь и здесь.
Что такое анизотропная фильтрация и зачем ее включать
Почти во всех современных играх есть пункт в настройках графики “анизотропная фильтрация”, коротко АФ, но зачем ее включать и на что она влияет? Давай те разберемся вместе.
Как понятно из названия опции, АФ предназначена для “фильтрации текстур”. Данный параметр крайне рекомендуется выставлять в максимальное значение. Для ясности взгляните на изображение ниже.
Первый кадр не демонстрируется с полностью отключенным АФ, в то время как значение на втором кадре равно X16. Обратите внимание, что чем дальше дорого уходит от камеры игрока, тем больше уменьшается прорисовка текстур.
Если выбирать, какое значение выбрать, то знайте, разница в производительности между 8х и 16х ничтожна, поэтому мы рекомендуем выбрать все-таки x16.
Но эффект от фильтрации текстур лучше всего заметем в движении. Без АФ заметны “лесенки” в стыках текстур поверхностей. Как правило, анизотропная фильтрация может заметно повлиять на частоту кадров и съесть память вашей видеокарты, хотя это не всегда так и данный эффект разница от одного компьютера к другому.
Подводя итог, анизотропная фильтрация придает четкости текстурам на отдалении от игрока. Испытать вы можете эффективности АФ в своей любимой игре, лучше всего каком-нибудь шутере от первого лица.
Графика в играх: окклюзия, сглаживание, фильтрация — Как и с чем её едят
Приветствую всех Стопгеймеров! Давайте начистоту, вы ведь тоже заходите в только купленную игру, но сперва кликаете на графические настройки? Кто ради чего, кому-то ради самоутверждения надо глянуть на ультра-автонастройку благодаря своему мощному «железу», а кто-то просто лезет туда ради интереса.Однако, задумывались ли вы, чем отличаются 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!
Анизотропная фильтрация: что это такое, на что влияет, нужно ли включать
Современные компьютерные игры немыслимы без использования изощрённых технологий, на базе которых разрабатываются эффекты, позволяющие улучшить качество картинки. Этот процесс можно назвать бесконечным – совершенствование технической базы сопровождается адекватным ростом разрешения монитора, поэтому борьбе за пиксели и ресурсы ПК не видно конца. С другой стороны, «в обороте» имеется значительное количество устаревшей техники, обладателям которой приходится решать очень серьёзные задачи по нахождению компромисса между качеством картинки и скоростью прорисовки. Анизотропная фильтрация – эффект, направленный на улучшение качества. Но какой ценой это достигается?
Что такое анизотропная фильтрация применительно к играм
Под термином анизотропная фильтрация (АФ) понимают метод, применяемый в трехмерных графических вычислениях, который способствует улучшению качества отрисовки текстур на поверхностях, расположенных под углом относительно игрока/зрителя.
Давайте попробуем разобраться, что значит использование анизотропной фильтрации с точки зрения используемой технологии.
Принцип работы АФ заключается в попиксельном анализе области отрисовываемой текстуры и построении шаблона по итогам произведённых вычислений с его выводом на монитор. Под очень большими углами каждый пиксель может охватывать область, которая задействована в большом количестве смежных участков текстуры, и именно поэтому анизотропная фильтрация достаточно требовательная к объёмам вычислений. И даже использование таких прогрессивных технологий, как кэширование данных по текстурам, не в состоянии существенно снизить потребление видеопамяти при использовании АФ.
Отдельные производители видеокарт разрабатывают собственные алгоритмы фильтрации, оптимизированные под прорисовку общих геометрических контуров, характерных для игр (стены, протолок, небо, пол).
Что даёт анизотропная фильтрация в современных играх? Прежде всего устраняет алиасинг, который характерен для наклонных текстур. Имеется в виду пикселизация изображения на подобных участках. Дополнительным эффектом АФ является сглаживание размытости таких текстур, что особенно заметно в сравнении с другими типами фильтраций, например, трилинейной и билинейной. Отметим ещё одну важную особенность анизотропной фильтрации: она касается только просчёта текстур на форме, но сама форма остаётся неизменной.
Из вышесказанного можно понять, для чего нужна в играх технология анизотропной фильтрации: она позволяет добиться большей детализации картинки. Из-за потребности в больших объёмах вычислений АФ стала доступной в массовой категории видеокарт примерно с 2004 года, хотя передовые модели графических адаптеров умели использовать эту технологию ещё с середины 90-х.
Её можно активировать либо в настройках видеоакселератора, и мы расскажем, как это сделать, либо непосредственно в используемом приложении, большинство игр имеют такую опцию в настройках.
Единственный параметр, который можно менять при использовании АФ – коэффициент фильтрации, принимающий одно из четырёх возможных значений (2x/4x/8x/16x). Что подразумевается под этими коэффициентами? Это количество обрабатываемых рядом стоящих текселей (число пикселей, приходящихся на определённый размер сцены), для которых производится усреднение цвета. Понятно, что чем ниже показатель, тем хуже будет проявляться эффект, но поскольку анизотропная фильтрация создаёт немалую нагрузку на оборудование, к выбору оптимального значения параметра следует подходить взвешенно, учитывая мощность видеокарты. Единственный момент, который бы хотелось уточнить, – между режимом 8х и 16х разница в производительности будет небольшая, так что последний можно рекомендовать как предпочтительный, если вы хотите получить идеальную картинку, особо не рискуя скоростью прорисовки.
Итак, мы выяснили, на что влияет анизотропная фильтрация: на производительность (fps) просчёта кадра и его качество, а поскольку NVidia и AMD используют одинаковый алгоритм АФ, то не имеет значения, какой бренд видеокарты установлен на вашем компьютере. Главное – насколько она мощная.
Если на слабом компьютере вы играете в требовательную к вычислительной мощности игру, режим сглаживания цвета вам принесёт больше неудобств и разочарований, чем практической пользы.
С практической точки зрения использование коэффициентов 8х и 16х при анизотропной фильтрации позволит получить менее заметные переходы в цвете при приближении к объекту, чем при более низких значениях параметра. С другой стороны, при резком ускорении объекта или повороте камеры пикселизации на стыках текстур не избежать.
Как включить режим анизотропной фильтрации
Если у вас установлен видеоадаптер Radeon, щелкните ПКМ по пустой области рабочего стола и в появившемся контекстном меню выберите «Настройки Radeon».
Если у вас установлена фирменная утилита AMD Radeon Software, просто запустите её. Затем перейдите во вкладку «Настройки» и выберите пункт «Видеокарта».
В списке доступных эффектов будет «Анизотропная фильтрация». Чтобы её включить, нужно передвинуть ползунок в соответствующее положение, и тогда станет доступным выбор параметра АФ, от 2х до 16х.
Тем, у кого имеется видеоадаптер NVIDIA, нужно открыть «Панель управления NVIDIA», выбрать вкладку «Параметры 3D» пункт меню «Управление параметрами 3D».
Откроется окно с перечнем глобальных параметров, в котором нужно найти Анизотропную фильтрацию и включить её. Имеется также возможность активировать АФ для отдельных приложений, тоже присутствующих в списке, и именно этот режим используется по умолчанию.
Выключить анизотропную оптимизацию текстур можно аналогичным способом.
Заключение
При достаточно мощном железе использование АФ однозначно показано, особенно в играх с большим количеством наклонных текстур и объёктов. В этом случае вытянутый образ пикселя без анизотропной фильтрации будет выглядеть с заметной лесенкой, особенно при приближении объекта. Если вместо билинейной выбрать АФ, за счёт сглаживания цветов получится картинка лучшего качества.
Какой уровень анизотропной фильтрации лучше? Зависит от нескольких факторов, прежде всего – производительности оборудования и сложности приложения, насколько высоки его системные требования. Вы можете экспериментальным путём установить в какой игре лучше задействовать АФ, в какой – би- или трилинейную. По мере приобретения опыта вы сможете «на автомате» определять оптимальный для конкретной игры режим.
И в заключение приводим практические советы по типам игр, в которых использование анизотропной фильтрации будет нелишним. Это шутеры, особенно от первого лица, гонки или различные симуляторы. Для них характерны динамичные пейзажи с вытянутой перспективой на растянутой местности.
Не включать АФ можно в спортивных симуляторах или стратегиях, где всё действо развивается на статическом фоне, занимающем большую часть монитора.