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

для раздела Блоги
Вступление

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

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

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

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

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

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

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

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

ЗначениеКоличество текселей
2x16 текселей
4x32 текселя
8x64 текселя
16x128 текселей

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

Теория: Антиалиасинг.

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

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

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

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


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

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

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

ЗначениеКоличество sup-samplesКоличество coverage-samples
8x48
16x416
16xQ816



Тесты производительности:

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

Конфигурация компьютера:
Процессор: Intel Core 2 Quad Q6600 @ 3200MHz (400x8, 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 год), данная игра по-прежнему может неплохо нагрузить даже самую современную платформу. Вот такой богатый ассортимент настроек представлен пользователю:



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

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


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

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

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

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

Тесты картинки:

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

Billinear / MSAA 2xTrillinear / MSAA 2xAF 2x / MSAA 2x
AF 2x / CSAA 8xAF 2x / MSAA 8xAF 2x / CSAA 16x
AF 2x / CSAA 16xQAF 8x / MSAA x2AF 8x / CSAA 8x
AF 8x / MSAA 8xAF 8x / CSAA 16xAF 8x / CSAA 16xQ
AF 16x / MSAA 2xAF 16x / CSAA 8xAF 16x / MSAA 8x
AF 16x / CSAA 16xAF 16x / CSAA 16xQBillinear / CSAA 16xQ



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

Выводы:

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

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

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

By Stormcss

Злостно пинать ногами тут.
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают