Что значит фильтрация текстур 16х

Различные насторойки фильтрации и сглаживания текстур на примере Counter-Strike:Source

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

С каждым годом выходит все больше и больше игр, заманивающих своей уникальной графикой. Но помимо самих игр, развиваются и технологии, позволяющие применять столь реалистичные эффекты. Как правило, первое что делает человек, только что установивший новую игру, — заходит в пункт «Настройки», для того, чтобы подобрать все необходимые для его конкретной системы параметры. Но порой, тут его ожидают некоторые трудности и неясности. В частности, в разделе «Видео», где пользователю представляется возможность выбрать разрешение экрана, детальность картинки, а также сглаживание и метод фильтрации текстур. Неопытные пользователи могут быть введены в заблуждение непонятными им сокращениями и терминами, вроде «MSAA x8», «SSAA x16», «AF x4», и пр.

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

Читайте также:  Хей хоу что значит

Теория: Фильтрация текстур.

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

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

Более совершенным методом фильтрации является Билинейная фильтрация. Здесь, в отличии от point sampling, происходит усреднение значений цветов четырех текселей текстуры, расположенных ближе всего к центру пикселя. Данный метод совсем не требователен к ресурсам ПК, но побочным эффектом является значительная размытость, особенно заметная на наклоненных плоскостях.

Принцип работы Трилинейной фильтрации устроен несколько сложнее. Изначально берется 4 текселя одной MIP-текстуры (уменьшенная текстура-шаблон, которая может повторяться многие десятки и сотни раз, разгружая карту, чем если бы она работала с полноразмерной текстурой), расположенных ближе всего к центру нужного пикселя, и 4 соседних текселя другой MIP-текстуры. Затем происходит усреднение цветов, сначала отдельно на каждом из двух MIP-уровней (по значению цветов выбранных текселей), а после суммируются получившиеся два значения. Метод чуть-более ресурсоемкий, да и некая размытость остается, хотя и не столь вездесущая, как у билинейной фильтрации.

Технология Анизотропной фильтрации помогла мигом решить все проблемы, но произошло это в ущерб производительности. Принцип работы данного метода очень сложен, и описывать подробно я его не стану. Если вкратце — берется MIP-текстура, установленная поперёк направления обзора, после чего происходит усреднение значений ее цветов с цветом некого количества текселей вдоль направления обзора. Это самое «некое количество» может меняться, поэтому сколько текселей применяется для сглаживания, можно узнать из наименования. Ниже представлена соответствующая таблица.

Значение Количество текселей
2x 16 текселей
4x 32 текселя
8x 64 текселя
16x 128 текселей

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

Наверняка, каждому доводилось видеть неприятную глазу «угловатость» картинки, где все границы полигонов усеяны маленькими квадратиками. Это явление в народе прозвалось «лесенкой». Даже в самой современной навороченной игре, с самой совершенной графикой, эта пресловутая лесенка может свести на нет все усилия разработчиков, направленные на создание реалистичного мира. Поэтому появилась необходимость соответствующей технологии, которая будет сглаживать угловатые края. Таковой является FSAA — Full Screen AntiAliasing. Это общее название для каждого из методов антиальянинга, речь о которых пойдет далее.

Первыми, кто совершил попытку создания технологии сглаживания, были инженеры из 3dfx, с их SSAA (Super Sampling AntiAliasing). Принцип работы предельно прост: видеокарта рендерит кадр в более высоком разрешении, а затем уменьшает его до разрешения экрана, усредняя при этом значения пикселей. Все бы ничего, но при этом происходит колоссальное падение производительности. Ведь, например, используя 4х supersampling, видеокарте, для создания изображения размером 1280×1024, приходится рендерить кадр в разрешении 2560х2048! А это — четырехкратное падение производительности.

Было понятно, что такой метод сглаживания совершенно не рационален, поэтому вскоре появился новый — MSAA (MultiSampling AntiAliasing). Несмотря на то, что мильтисэмплинг по-прежнему генерирует картинку в более высоком разрешении, операции сглаживания проводятся исключительно на пограничных пикселях. Важным нововведением оказались дополнительные точки (sub-samples), которые строятся внутри каждого пограничного пикселя. Каждая из этих точек передает информацию о цвете в данном месте текселя, в котором она оказывается. Как и в случае с анизотропной фильтрацией, информацию о количестве дополнительных точек можно подчеркнуть из аббревиатуры.

Значение Количество sup-samples
2x 2
4x 4
8x 8

И все же, такой метод крайне ресурсоемкий, поскольку, как уже упоминалось, видеокарте приходится генерировать кадр в 2, 4 или 8 раз больше, в зависимости от установленного уровня сглаживания.

Значительно более легкий для видеокарты алгоритм сглаживания был впервые представлен инженерами Nvidia, в их новой линейке 8800, получивший название CSAA (Coverage Sampling AntiAliasing). Суть работы отражена в названии — помимо sup-samples, передающих информацию о цвете, внутри пикселя располагаются также и coverage-samples (значения перекрытия). Задача точек перекрытия сводится к тому, чтобы передавать информацию о перекрывающем ее объекте.

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

Значение Количество sup-samples Количество coverage-samples
8x 4 8
16x 4 16
16xQ 8 16

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

Конфигурация компьютера:
Процессор: Intel Core 2 Quad Q6600 @ 3200MHz (400×8, 1.3125V)
Видеокарта: Palit Nvidia GeForce 8800GT
Материнская плата: Asus P5Q PRO TURBO
Память: 2x2048MB DDR2 Corsair XMS2 @ 1066MHz, 5-5-5-15
Блок питания: Corsair CMPSU-850HXEU 850W
Процессорный кулер: Zalman CNPS9700 LED
ОС: Windows 7 Ultimate x64
Версия видео драйвера: Nvidia 195.62 x64

Главным испытуемым в нашем сегодняшнем тестировании стала очень старая, но не менее знаменитая Counter-Strike:Source, поскольку эта одна из немногих по-настоящему распространенных игр, предоставляющих огромный набор различных настроек сглаживания и фильтрации. Несмотря на древность движка (2004 год), данная игра по-прежнему может неплохо нагрузить даже самую современную платформу. Вот такой богатый ассортимент настроек представлен пользователю:

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

И так, что же у нас получилось:

Результаты получились достаточно неожиданными. Технология coveragesampling (CSAA), которая по определению должна потреблять меньше ресурсов чем MSAA, здесь показывает совершенно обратную картину. Причин данного явления может быть великое множество. Прежде всего необходимо учитывать, что во многом производительность при включении сглаживания зависит от архитектуры GPU. Да и оптимизация различных технологий самой игры и версия драйвера играют не меньшую роль. Поэтому результаты при использовании других видеокарт, или, даже, другой версии драйвера, могут быть совершенно иными.

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

Кроме того, проглядывается явное соответствие показателей фпс, при использовании одинакового метода сглаживания, для AF 8x и AF 16x. При этом, разница колеблется в диапазоне от 1 до 4 фпс (за исключением MSAA 8x, где разница составляет 11 фпс). Это говорит о том, что использование фильтрации 16х может быть очень полезным, если необходимо повысить качество картинки, без существенного удара по производительности.

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

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

Billinear / MSAA 2x Trillinear / MSAA 2x AF 2x / MSAA 2x
AF 2x / CSAA 8x AF 2x / MSAA 8x AF 2x / CSAA 16x
AF 2x / CSAA 16xQ AF 8x / MSAA x2 AF 8x / CSAA 8x
AF 8x / MSAA 8x AF 8x / CSAA 16x AF 8x / CSAA 16xQ
AF 16x / MSAA 2x AF 16x / CSAA 8x AF 16x / MSAA 8x
AF 16x / CSAA 16x AF 16x / CSAA 16xQ Billinear / CSAA 16xQ

Как видно, особой разницы в комбинациях «выше» AF 8x / MSAA 8x (CSAA 8x), попросту нет. Но при этом получается ощутимый удар по производительности, особенно при использовании Coverage Sampling AntiAliasing.

Наверняка среди читающих данную статью найдутся игроки Cs:s, HL2 и других игр на основе движка Source. Им эта статья окажется более интересной и познавательной, чем остальным. Однако целью данной писанины было лишь рассказать о современных технологиях, помогающих улучшить зрительное восприятие игр. А тесты — как способ показать на практике изложенную теорию.

Разумеется, для достоверности показаний следовало проводить тесты производительности как на других видеочипах, так и на дополнительных играх.

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

Источник

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

Фильтрация текстур: основная идея

Чтобы понять разницу между различными алгоритмами фильтрации нужно сначала понять, что пытается сделать фильтрация. Ваш экран имеет определенное разрешение и состоит из того, что называется пикселями. Разрешение определяется количеством пикселей. Ваша 3D плата должна определить цвет каждого из этих пикселей. Основой для определения цвета пикселей служат текстурные изображения, которые накладываются на полигоны, расположенные в трехмерном пространстве. Текстурные изображения состоят из пикселей, называемых текселями. По сути, эти тексели являются пикселями 2D изображения, которые наложены на 3D поверхность. Главный вопрос таков: какой тексель (или какие тексели) определяет цвет пикселя на экране?

Представьте себе следующую проблему: предположим, что ваш экран это плита с большим количеством отверстий (давайте исходить из предположения, что пиксели имеют круглую форму). Каждое отверстие это пиксель. Если вы посмотрите через отверстие, вы увидите какой цвет оно имеет, соотносительно трехмерной сцены, раполагающейся за плитой. Теперь представьте себе световой луч, проходящий через одно из этих отверстий и попадающий на текстурированный полигон, расположенный за ним. Если полигон расположен параллельно экрану (т.е. нашей воображаемой плите с отверстиями), тогда световой луч попав на него образует круглое световой пятно (см. рис. 1). Теперь, вновь подключив воображение, заставим полигон вращаться вокруг своей оси и самые простые познания подскажут вам, что форма светового пятна изменится, и вместо круглой станет эллиптической (см. рис. 2 и 3). Вы, вероятно, желаете знать, какое отношение имеет это пятно света к проблеме определения цвета пикселя. Элементарно, все полигоны, расположенные в этом пятне света определяют цвет пикселя. Все, что мы тут обсудили и есть основные знания, которые необходимо знать для того, что бы понять различные алгоритмы фильтрации.

Посмотреть на различные формы светового пятна можно на следующих примерах:


Рис. 1

Рис. 2

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.

Дополнительную информацию по данной теме можно прочитать здесь и здесь.

Источник

Оцените статью