Фильтрация анизотропная: для чего нужна, на что влияет, практическое использование. Анизотропная фильтрация

Сейчас покажу как настроить графическую часть в Counter-Strike: Global Offensive через пользовательский интерфейс игры и как таким образом повлиять на фпс. Это первая статья и для большинства игроков она будет вполне предсказуемой, за парочкой не больших и странных дополнений (Удивительно, но не все настройки надо опускать на минимальные значения). Настройка фпс в CS GO тема довольно большая и объемная, поэтому к его увеличению подойдем системно, ввиде серии статей. Сначала попробуем настроить его простыми, понятными средствами и уже после перейдем к консольным командам. И еще момент, т.к. вы попали на эту статью скорее всего из поисковика, то по умолчанию будем считать, что компьютер на котором все это настраивается - "не тянущий нормально игру" и при этом все драйвера у вас обновлены, дефрагментация сделана, ОС избавлена от лишних служб и красивостей, вирусов нет и подавно. Если это так, то поехали.

Команда для отображения фпс в CS: GO

В консоли набираете одну из команд:
  • cl_showfps 1
  • net_graph 1
  • или в Steam-е выбираете пункт меню Steam - Настройка - вкладка "В игре " - Отображение частоты кадров


Как повысить фпс

Перед тем, как начнете изменять параметры влияющие на графику, пропишите у себя в консоли еще одну команду:
fps_max 0 или fps_max "частота обновления монитора"
Первую, если хотите понять и увидеть насколько максимально возможным может быть фпс у вас в КС ГО.
И вторую, если хотите разумно использовать мощь своего железного друга. То есть, вы приведете в соответствие частоту обновления экрана и частоту генерирумых кадров видеокартой. Тогда это не позволит, генерировать фпс "вхолостую". Другими словами. вы все равно не увидете больше кадров созданных видеокартой, чем успевает показать ваш монитор. (Надеюсь понятно объяснил).
У второго параметра есть не который материальный и осязаемый плюс: если ваш фпс выше частосты монитора, то таким образом вы не будете по полной нагружать видеокарту, она будет меньше шуметь, меньше греться и у нее будет некий запас по производительности, в случае резкого и динамического изменения в игре и тогда возможно меньше будет не приятных просадок. Но есть и минус: не которым игрокам не нравится отзывчивость мыши в таком режиме. Так что выбор оставляю за вами.
Для себя же делал fps_max 0 , так как хотел понять насколько могу поднять фпс.

Настройки видео в CS: GO


Опишу только те параметры, которые действительно влияют на фпс.

  1. Разрешение - Думаю многим известно из вас, что профи играют на разрешении или 1024х768 или 800х600. И это на больших мониторах! Данный параметр очень сильно влияет на фпс. У меня разница между 1280х960 и 1024х768 составила 14 кадров, а между 1280х960 и 800х600 - 23 fps.
  2. Режим отображения - В нашем случае подходит На весь экран. Если выставить На весь экран в окне, то фпс просядет.
  3. Энергосберегающий режим - Выкл. Настройка в основном для ноутбуков. Но если выставите как Вкл, то фпс упадет.
  4. Общее качество теней - В общем и целом на фпс практически не влияет. Для средних и топовых видеокарт особой разницы точно не заметно между Очень низкое и Высокое. К тому же на низком разрешении визуально отличия малозаметно, есть ли смысл тогда в красивостях? Ставим Очень низкое.
  5. Детализация моделей и текстур - Эту настройку ощущает в основном только видеокарта. Поэтому, если у нее памяти достаточно, то ставьте на свое усмотрение. Со своими 256 Мб у меня разница была в 2 фпс между Низкое и Высокое.
  6. Детализация эффектов - влияет на дальность прорисовки и качество эффектов. Так вот эти эффекты обычно возникают когда сильный "замес", куча взрывов, искры, огонь и полно народу. Если у вас в такие моменты ну очень сильно проседает фпс, то попробуйте понизить данный параметр. Во всех остальных случаях - Высокое. У меня разница составила 1 fps.
  7. Детализация шейдеров - При выборе максимального значения, мой фпс упал на 3 пункта. Хотя эта настройка отвечает за качество теней и освещения, всё же вряд ли у всех такой эффект будет. Поэтому поиграйтесь с данным параметровв обе стороны, особенно у тех, у кого слабая видюха.
  8. Многоядерная обработка - в баталиях с большим количеством игроков заметен выигрыш в производительности. У меня он составил 6 фпс. Данный режим задействует несколько ядер процессора одновременно, что в идеале должно сказаться на уменьшении лагов и тормозов. Но это в теории. На практике бывают исключения. Обязательно поиграйтесь с этим значением. Оставляем Вкл.
  9. Режим сглаживания множественной выборки - Убирает эффект "зубчатости" на объектах в КС ГО. Вся нагрузка ложится на видеокарту. У меня разница между отключенным и 4xMSAA составила 7 фпс. Кому интересно, данный режим (MSAA) даёт несколько худшее качество графики, но обеспечивает огромную экономию вычислительной мощности, по сравнению со своим предшественником SSAA.
  10. Режим фильтрации текстур - Для обладателей слабых видеокарт рекомендуется билинейная. Для остальных подойдет - трилинейная. Так как в производительности разницы не заметно. При выборе анизотропной фильтрации будьте готовы потерять 1-2-3 fps-а.
  11. Сглаживание с помощью FXAA - Еще один режим сглаживания Fast appro X imate Anti-Aliasing, не понятно почему его вынесли в отдельный пункт,но оно считается более быстрое и производительное решение по сравнению с MSAA, но на моей видеокарте ATI фпс просел на 13 значений. (Не знаю с чем это связано, возможно с драйвером).
  12. Вертикальная синхронизация - в таком режиме максимальный фпс привязывается к частоте обновления монитора. На топовых и средних видеокартах позволяет экономить их ресурсы и создавать меньше шума, так как они меньше нагреваются.
  13. Размытие движения - сглаживает картинку при резком движении мыши. На фпс не много влияет.

Это был самый простой и доступный способ понизить фпс в Counter-Strike: Global Offensive. Ничего новаторского здесь нет, в отличии от того, что указано в видео ниже.

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

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

Какими бывают карты?

Делать какой-то сверхразвитый движок в наше время - это достаточно серьезная трата средств. И при этом весомый риск. Такими приемами пользуются только высокобюджетные проекты с масштабной рекламой, которые заранее, еще до выхода, уверены в том, что игру будут активно сметать с прилавков. Также следует отметить тот факт, что в последнее время особенное внимание уделяется «политике» касательно современных игровых движков, ведь в сфере игростроя давным-давно присутствует политика, которая предпочитает учитывать интересы двух передовых компаний в области графических процессоров - это NVIDIA и ATI.

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

А графика все растет и растет…

Сделать абсолютную революцию в сфере графических 3D-движков достаточно сложно, вследствие чего такие перевороты происходят относительно редко. Однако при этом, конечно же, качество изображения периодически улучшается с течением времени и, как ни странно, происходит это как раз под выход какой-то определенной «продающейся» игры наподобие Crysis.

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

Что такое анизотропная фильтрация?

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

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

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

Принцип действия

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

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

Как это работает?

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

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

Зачем она нужна?

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

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

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

Что лучше выбрать?

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

Насколько это помогает?

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

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

Point Sampling

Point Sampling на сегодняшний день представляет собой наиболее простой вариант того, как определяется цвет пикселя. Данный алгоритм основывается на текстурном изображении, когда выбирается какой-нибудь единственный тексель, расположенный максимально близко к центру светового пятна. Несложно догадаться, что такой вариант является далеко не самым оптимальным, так как цвет пикселя должен определяться одновременно несколькими текселями, а выбирается в данном случае только один, при этом световое пятно может изменять свою форму, что алгоритм не принимает во внимание.

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

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

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

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

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

Второй метод - билинейная фильтрация (Bi-Linear Filtering) состоит в использовании интерполяционной техники. Для определения текселей, которые должны быть задействованы для интерполяции, используется основная форма светового пятна -- круг. По существу, круг аппроксимируется 4 текселями. Билинейная фильтрация - это техника устранения искажений изображения (фильтрация), таких, как "блочности" текстур при их увеличении. При медленном вращении или движении объекта (приближение/удаление) могут быть заметны "перескакивания" пикселов с одного места на другое, т.е. появляется блочность. Во избежании этого эффекта применяют билинейную фильтрацию, при использовании которой для определения цвета каждого пикселя берется взвешенное среднее значение цвета четырех смежных текселей и в результате определяется цвет накладываемой текстуры. Результирующий цвет пикселя определяется после осуществления трех операций смешивания: сначала смешиваются цвета двух пар текселей, а потом смешиваются два полученных цвета.

Главный недостаток билинейной фильтрации в том, что аппроксимация выполняется корректно только для полигонов, которые расположены параллельно экрану или точке наблюдения. Если полигон развернут под углом (а это в 99% случаев), используется неправильная аппроксимация, так как должен аппроксимироваться эллипс.

Ошибки "depth aliasing" возникают в результате того факта, что объекты более отдаленные от точки наблюдения, выглядят более маленькими на экране. Если объект двигается и удаляется от точки наблюдения, текстурное изображение, наложенное на уменьшившийся в размерах объект становится все более и более сжатым. В конечном счете, текстурное изображение, наложенное на объект, становится настолько сжатым, что появляются ошибки визуализации. Эти ошибки визуализации особенно нежелательны в анимации, где такие артефакты во время движения становятся причиной мерцания и эффекта медленного движения в той части изображения, которая должна быть неподвижной и стабильной.

В качестве иллюстрации к описанному эффекту могут служить следующие прямоугольники с билинейным текстурированием:

Рис. 13.29. Закраска объекта методом билинейной фильтрации. Появление артефактов "depth-aliasing", выражающихся в том, что несколько квадратов сливаются в один.

Для избежания ошибок и имитации того факта, что объекты на расстоянии выглядят менее детализированными, чем те, что находятся ближе к точке наблюдения, используется техника, известная как mip-mapping . Если говорить кратко, то mip-mapping - наложение текстур, имеющих разную степень или уровень детализации, когда в зависимости от расстояния до точки наблюдения выбирается текстура с необходимой детализацией.

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

Рис. 13.30. Изображения, связанные с каждым mip-map уровнем волнообразной текстуры.

Слева направо мы имеем mip-map уровни 0, 1, 2 и т.д. Чем меньше становится изображение, тем больше теряется деталей, вплоть до приближения к концу, когда не видно ничего, кроме расплывающегося пятна из серых пикселей.

Степень или уровень детализации - Level of Detail или просто LOD, используются для определения, какой mip-map уровень (или какую степень детализации) следует выбрать для наложения текстуры на объект. LOD должен соответствовать числу текселей накладываемых на пиксель. Например, если текстурирование происходит с соотношением близким к 1:1, то LOD будет 0, а значит и будет использоваться mip-map уровень с самым высоким разрешением. Если 4 текселя накладываются на один пиксель, то LOD будет 1 и будет использоваться следующий mip уровень с меньшим разрешением. Обычно, при удалении от точки наблюдения, объект, заслуживающий наибольшего внимания имеет более высокое значение LOD.

В то время, как mip-текстурирование решает проблему ошибок "depth-aliasing", его использование может стать причиной появления других артефактов. При удалении объекта все дальше от точки наблюдения, происходит переход от низкого mip-map уровня к высокому. В момент нахождения объекта в переходном состоянии от одного mip-map уровня к другому, появляется особый тип ошибок визуализации, известных под названием "mip-banding" - полосатость или слоеность, т.е. явно различимые границы перехода от одного mip-map уровня к другому.

Рис. 13.31. Прямоугольная лента состоит из двух треугольников, текстурированных волнообразным изображением, где "mip-banding" артефакты обозначены красными стрелками.

Особенно остро проблема наличия ошибок "mip-banding" стоит в анимации, за счет того, что человеческий глаз очень чувствителен к смещениям и может легко заметить место резкого перехода между уровнями фильтрации при движении вокруг объекта.

Трилинейная фильтрация (trilinear filtering) представляет собой третий метод, который удаляет артефакты "mip-banding", возникающие при использовании mip-текстурирования. При трилинейной фильтрации для определения цвета пикселя берется среднее значение цвета восьми текселей, по четыре из двух соседних текстур и в результате семи операций смешивания определяется цвет пикселя. При использовании трилинейной фильтрации возможен вывод на экран текстурированного объекта с плавно выполненными переходами от одного mip уровня к следующему, что достигается за счет определения LOD путем интерполяции двух соседних mip-map уровней. Таким образом решая большинство проблем, связанных с mip-текстурированием и ошибками из-за неправильного расчета глубины сцены ("depth aliasing").

Рис. 13.32. Пирамидальность MIP-map

Пример использования трилинейной фильтрации приведен ниже. Здесь опять используется все тот же прямоугольник, текстурированный волнообразным изображением, но с плавными переходами от одного mip уровня к следующему за счет использования трилинейной фильтрации. Обратите внимание на отсутствие каких-либо заметных ошибок визуализации.

Рис. 13.33. Прямоугольник, текстурированный волнообразным изображением, выведен на экран с использованием mip-текстурирования и трилинейной фильтрации.

Существует несколько способов генерации MIP текстур. Один из них - просто подготовить их заранее, используя графические пакеты типа Adobe PhotoShop. Другой способ - генерация MIP текстур на "лету", т.е. в процессе выполнения программы. Заранее подготовленные MIP текстуры означают дополнительные 30% дискового пространства для текстур в базовой поставке инсталляции игры, но позволяют применять более гибкие методы управления их созданием и позволяют добавлять различные эффекты и дополнительные детали различным MIP уровням.

Получается, что трилинейный мипмеппинг это лучшее, что может быть?

Нет конечно. Видно, что проблема не только в соотношении размеров пикселя и текселя, но также и в форме каждого из них (или, что бы быть более точными, в соотношениях форм).

Метод mip-текстурирования лучше всего работает для полигонов расположенных прямо "лицом к лицу" к точке наблюдения. Однако, полигоны, косонаправленные по отношению к точке наблюдения искривляют накладываемую текстуру так, что на пикселы могут накладываться различного вида и квадратичные по форме области текстурного изображения. Метод mip-текстурирования не принимает это во внимание и в результате наблюдается эффект слишком сильного размытия текстурного изображения, так, будто использованы неправильно выбранные тексели. Для решения этой проблемы нужно делать выборку из большего количества текселей, составляющих текстуру, и выбирать эти тексели следует принимая во внимание "отображенную" форму пикселя в текстурном пространстве. Этот метод называется анизотропная фильтрация ("anisotropic filtering"). Обычное mip-текстурирование называется "isotropic" (изотропное или однородное), потому что мы всегда фильтруем вместе квадратные области, состоящие из текселей. Анизотропная фильтрация означает, что форма области из текселей, которую мы используем меняется в зависимости от обстоятельств.

Описание алгоритмов текстурирования: фильтрация текстур

Фильтрация текстур

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

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

Одной из наиболее используемых технологий, упрощающих расчет изображения при достаточно хорошем качестве, является текстурирование. Текстура - это 2D изображение, накладываемое на 3D объект, или какую-либо поверхность. В качестве примера возьмем следующую ситуацию: вы - разработчик, и необходимо, чтобы пользователь увидел кирпичную стену. Создается 3D каркас стены, причем можно выделить кирпичи отдельно. Теперь берем 2D картинку кирпича и накладываем ее на кирпич в 3D каркасе, и так - всю стену. В результате получилась нормальная 3D стена, причем графическому чипу нет необходимости прорисовывать и просчитывать каждый пиксель - он просчитывает координаты 3D каркаса, к которым привязано 2D изображение.

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

Mip-Mapping (мип-маппинг)

Движение - это характеристика всех отображаемых объектов; даже если сам объект неподвижен, он все равно меняется при изменении угла зрения персонажа вследствии его движения. Поэтому текстура, помещенная на объект, также должна двигаться - это влечет за собой некоторые осложнения и дополнительную обработку. А что если мы смотрим на объект под каким-то углом, к примеру, на пол? Пол может занимать большую площадь, и для сохранения реалистичности, чем дальше он от нас, тем меньше его составляющие (к примеру, плитка). Для обеспечения этого, текстура должна определенным образом уменьшаться. К сожалению, простое изменение разрешения текстур, может повлечь за собой довольно неприятный эффект, когда одна текстура визуально как бы сливается с другой. Другой неприятный эффект может возникнуть, если тексель больше размером, чем требуемое количество пикселей. Это происходит, когда смотришь на текстуру, находящуюся на очень большом расстоянии. Обе ситуации возникают при применении традиционного сглаживания. А вот и реальные примеры этих случаев: в данном реферате нету

Для смягчения таких ситуаций и был создан mip-mapping (мип-маппинг). Эта технология работает очень просто: оригинальная текстура генерируется в различных ситуациях таким образом, чтобы корректно отображать текстуру на разных расстояниях и при разных углах зрения. При приближении к объекту показывается текстура с более высоким разрешением, а при отдалении - с низким. Таким образом, mip-mapping улучшает качество изображения и уменьшает неровности. Ниже представлены те же картинки, только со включенным mip-mapping: в данном реферате картинок нету.

Заметили улучшение качества? Оно особенно заметно на второй картинке с желто-красным рисунком. Обратите внимание: улучшилось качество не только дальних текстур: ближние также выглядят гораздо лучше. В целом изображение с mip-mapping смотрится гораздо лучше, чем без него: отсутствуют многочисленные искажения и искривления, заметные при обычном отображении.

Фильтрация

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

Билинейная фильтрация (Bilineat Filtration)

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

На этой картинке пример прорисовки изображения, используя билинейную фильтрацию и mip-mapping.

Трилинейная фильтрация

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

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

Изображение получается очень качественно только при более прямых углах зрения, при реальной же прорисовке, геометрические формы объекта могут быть нарушены. Посмотрите на картинку от SGI:

Анизотропная фильтрация (Anisotropic filtering)

Форма текстурированных объектов как при билинейной, так и при трилинейной фильтрации может искажаться, т.к. обе эти фильтрации являются изотропными - изображение фильтруется в определенной форме - в форме квадрата. Большинство же формируемых объектов не подходят под эту определенную и неизменную форму: для их качественной обработки необходимо использовать другой тип фильтрации - анизотропный. Анизотропия состоит из нескольких слов на латыни и означает буквально "Ани" - не, "изо" - определенная форма и "тропия" - модель - т.е. модели неопределенной формы. Название этой технологии отражает ее техническую реализацию. Анизотропная фильтрация обычно оперирует не менее чем 8 текселями, во все стороны mip-map уровней, при этом используется модель неопределенной заранее формы. В результате убираются шумы и искажения объектов, а изображение в целом получается более качественным.

Сравните две картинки: на одной использовалась анизотропная фильтрация 16-текселей, с помощью которой исчезли искажения между mip-map уровнями и шум изображения, на второй картинке анизотропная фильтрация была выключена.

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

Долгое время графические платы потребительского уровня не показывали то качество изображения, которое возможно при использовании анизотропной фильтрации. С появлением таких графических чипов, как NVIDIA GeForce2 и ATI Radeon, стало возможным использование анизотропной фильтрации, которая аппаратно анализирует блоки из 16 текселей. Видеокарты GeForce3 и Radeon 8500 используют уже 32 тексельную анизотропную фильтрацию. Картинка ниже показывает изображение, прближенное к тому, которое будет получено с помощью профессиональной 64 тексельной анизотропной фильтрации:

Будущее…

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

Дополнительно:

Антиалиасинг и анизотропная фильтрация сегодня: что, где и почём? Часть первая

На самом деле, статью с таким заголовком можно было бы начать с какой-либо банальности, вроде «каждый пользователь компьютера когда-либо мог наблюдать работу таких техник улучшения трехмёрного изображения, как антиалиасинг или анизотропная фильтрация». Либо такой: «пока наши корабли бороздят космические просторы, программисты NVIDIA и ATI ищут способы, чтобы улучшить работу известных техник улучшений изображения». Вторая банальность имеет куда больше шансов на жизнь в том плане, что она уже интригует неким подобием того, что мы будем заниматься расследованием вопроса о том, кто и каким образом «наоптимизировал» в своих драйверах.

Однако мы, пожалуй, обойдёмся вовсе без банальностей. Потому что куда более интересно порассуждать на тему того, насколько же стали доступны сейчас техники улучшения изображения для простого пользователя или, правильнее будет сказать, для простого геймера. Именно геймеры на сегодняшний день являются наиболее активными потребителями всех новых технологий и нововведений в 3D. По большому счёту, мощный 3D-акселератор на сегодняшний день нужен исключительно для игры в последние компьютерные игры с мощными 3D-движками, оперирующие сложными шейдерами различных версий. Сейчас никого уже не удивишь игрой с пиксельными шейдерами версии 2.0 – в игровом мире такие забавы потихоньку становятся повседневным явлением. Большинство игр по-прежнему выпускается на основе шейдерной модели 1.1 ввиду того, что для разработчиков игр наиболее важно добиться, чтобы их игра сносно работала на железе, которое стоит у подавляющего большинства игроков. Делать супернавороченный движок сейчас – это большое расточительство и даже риск. Судите сами: разработка движка класса «Doom 3» или «Half-Life 2» (ну и приплюсуем сюда первопроходца шейдеров 2.0 во всей красе, детище Crytek – «FarCry», чтобы получилась истинная вездесущая троица) занимает огромное количество времени, что привносит в разработку дополнительные трудности – необходимо разработать движок в такие сроки, чтобы нововведения и оригинальные наработки не устарели во время создания движка.

Если вы сомневаетесь в том, что такое может быть, то совершенно зря – в случае с «Half-Life 2» всё именно так и было (да и «Doom 3» разрабатывался с оглядкой на GeForce 3, а вышел тогда, когда вовсю продавались GeForce FX). Также разработка движков подобного класса сопряжена с большими затратами на разработку: талантливые программисты стоят сегодня недёшево. А ещё в последнее время много внимания (даже больше, чем нужно) уделяется, если можно так выразиться, «политике» в отношении игровых движителей.

Да-да, именно так, вы не ослышались, в сфере 3D уже давно есть своя политика, основанная, естественно, на интересах двух грандов строения графических процессоров: ATI и NVIDIA. Суровая Канада уже давно ведет борьбу против солнечной Калифорнии, и пока конца этому противостоянию не видно, что нам, простым потребителям, конечно, только на руку. Теперь разработать классный движок мало – чтобы иметь успех, нужно заручиться поддержкой либо калифорнийской дивы NVIDIA, либо канадской ATI, благо, теперь и у первой, и у второй есть свои партнёрские программы для разработчиков игр. У NVIDIA такая программа называется «The way it"s meant to be played», а у ATI – «Get it in the game». Всё достаточно красноречиво и понятно: NVIDIA говорит, что «играть нужно так», а совсем не эдак, а ATI уверяет, что всё, что мы только ни пожелаем, мы обязательно получим в самой игре. Достаточно заманчиво, не правда ли? Движки же класса «Doom 3» и «Half-Life 2» (в случае последней движок называется Source, однако для простоты восприятия мы будем называть его именно «Half-Life 2», чтобы сохранить правильную ассоциацию) и вовсе изначально разрабатываются в тесном сотрудничестве с инженерами производителей графических чипов, чтобы игры лучше работали именно на GPU какого-то одного производителя.

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

Именно на поприще анизотропной фильтрации и антиалиасинга проходит колоссальнейшее количество оптимизаций драйверов как со стороны NVIDIA, так и со стороны ATI. У компаний различные подходы и политика в отношении этих самых оптимизаций, порой не совсем справедливая по отношению к пользователям. Однако наша статья как раз и призвана разобраться с тем, что же хорошего и что же плохого в подходах обеих компаний-производителей GPU и что на сегодняшний день может улучшить качество изображения в 3D-играх.

Что такое антиалиасинг и с чем его едят?

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

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

Для начала нужно чётко понимать, что изображение, которое мы с вами можем ежедневно наблюдать на экранах наших с вами мониторов, состоит из так называемых мелких частичек, которые принято называть пикселями. Хорошей аналогией в этом смысле может послужить пример с бумагой в клеточку. Изображение на мониторе – это та же бумага в клеточку, только они в данном случае очень и очень мелкие. Если говорят, что разрешение экрана составляет 1024х768 при 32-битном цвете, то это означает, что по горизонтали на мониторе умещается 1024 точек, а по вертикали – 768. При этом каждая точка может быть закрашена одним цветом из доступных в 32-битной палитре. На данный момент 32-битный цвет – это предел того, чего мы можем добиться на экране компьютера. Лучшие умы человечества (тот же Кармак) уже поговаривают о необходимости перехода на 64-битный цвет и указывают на явные минусы 32-битной палитры. В своё время при переходе с 16-битного на 32-битный цвет данная необходимость была достаточно чётко обоснована и виделись реальные причины, по которым стоило бы перейти на 32 бит. Переход же на 64-битный цвет на сегодняшний день – это скорее излишество. Так же как и в случае с 16 и 32 битами, в своё время придётся достаточно долго ждать, когда акселераторы всех уровней смогут с приемлемой скоростью обрабатывать 64-битный цвет.

Подавляющее большинство статей, в которых затрагиваются тем или иным образом принципы построения изображений в 3D и где ведётся разговор об антиалиасинге, изобилуют простым, но вместе с тем наиболее действенным примером, на котором можно достаточно хорошо понять, что же такое антиалиасинг. Посмотрите на увеличенную надпись «Апгрейд», сделанную в Word’e, а затем просто увеличенную в фотошопе. Не очень хорошо выглядит, не правда ли? По бокам букв видна так называемая гребёнка или, как её ещё называют, «лесенка». В сущности, эта самая «гребёнка» или «лесенка» и есть алиасинг. Можно представить и другой пример в виде геометрического объекта, например, пирамиды. По её краям также хорошо видна всё та же «гребёнка». А теперь посмотрите на другое изображение той же пирамиды, но с увеличенным вдвое разрешением. Выглядит уже значительно лучше, и «гребёнка» практически незаметна. Как уже было сказано выше, данный эффект, сглаживающий «гребёнку», был достигнут за счёт того, что мы увеличили разрешение в 2 раза.

Что это означает? Предположим, у нас была отрендерена пирамида с разрешением 200х200 пикселей (выше мы уже подробно прояснили вопрос о том, что такое пиксели и зачем они нужны). Мы увеличили количество точек по вертикали и по горизонтали ровно в 2 раза, то есть получили изображение с разрешением 400 точек по вертикали и 400 точек по горизонтали. Это также означает, что количество точек на нашем объекте, который находился на сцене, увеличилось вдвое. Что это дало применительно к нашему эффекту алиасинга? Очевидно, что он стал минимален, то есть сгладился – ведь количество точек по краям объекта также возросло вдвое. Именно слово «сгладился» является здесь ключевым. Ведь антиалиасинг по-иному называют сглаживанием, что отражает самую суть технологии, которая сглаживает ту самую «лесенку» по краям трёхмерных объектов.

На самом деле, после увеличения разрешения «лесенка» с края пирамиды никуда не делась – она остаётся там по-прежнему. Однако за счёт того, что мы увеличили разрешение (что означает увеличение точек, которые расходуются на отображение пирамиды), эффект «лесенки» сгладился благодаря особенностям человеческого зрения, которое уже менее чётко видит пиксели на крае объекта. Абсолютно понятно, что если увеличивать разрешение ещё и ещё, то эффект алиасинга будет наблюдаться всё в меньшей и меньшей степени. Точнее, человеческий глаз станет замечать его всё в меньшей и меньшей степени, поскольку сам эффект алиасинга никуда не денется. Но так же абсолютно понятно и то, что до бесконечности увеличивать разрешение не получится, ведь мониторы, пусть даже и самые современные, имеют конечные разрешения, причём не такие уж и большие, что не позволит нам постоянно увеличивать количество точек. Проще говоря, простейшего эффекта антиалиасинга можно добиться, всего лишь увеличив разрешение экрана, однако разрешение не может расти до бесконечности. Казалось бы, выхода нет? Однако в действительности он был найден, и основан он всё на той же особенности зрения человека.

Этого удалось достичь благодаря плавным переходам цветов на изображении. Фактически визуальное улучшение изображения производится не за счёт физического увеличения разрешения, а за счёт, если можно так выразиться, цветового увеличения разрешения. В данной статье мы не будем описывать алгоритмы вычисления этих точек и не будем вдаваться в глубины математических вычислений, а расскажем лишь о принципе работы такого антиалиасинга. Лесенка на границах объектов видна лишь потому, что чаще всего края трёхмерных объектов довольно сильно выделяются по цвету от остальной картинки и представляют собой тонкие линии в один пиксель. Это можно компенсировать, поставив некоторое количество точек с цветами, вычисляемыми по формуле из значений цвета самого края и точек рядом с этим краем. То есть, если край объекта чёрный, а фон белый, то дополнительная точка рядом с чёрной линией края станет серой. Чем больше этих дополнительных точек около края любого 3D-объекта, тем более гладко выглядят его края и тем меньше заметна лесенка. Данный способ называется краевым антиалиасингом. Качество антиалиасинга, задаваемое в драйвере видеокарты, как то: 2x, 4x, 6x, 8x означает количество проставляемых дополнительных пикселей вокруг линии, нуждающейся в сглаживании.

Анизотропная фильтрация: мини-ликбез для начинающих

Для того чтобы понять, что такое фильтрация, необходимо обладать некоторыми основными знаниями. Мы уже выяснили, что изображение на экране состоит из множества пикселей, количество которых определяется разрешением. Для вывода цветного изображения ваша видеокарта должна определять цвет каждого пикселя. Определяется его цвет посредством наложения текстурных изображений на полигоны, которые расположены в трёхмерном пространстве. Текстурные изображения состоят из пикселей, вернее, текселей, то есть тексель – это пиксель двухмерного изображения, наложенного на 3D-поверхность. Главная дилемма заключается в следующем: какой тексель или тексели определяют цвет пикселя на экране. Для представления проблемы фильтрации давайте представим одну картину. Допустим, что ваш экран – это плита с множеством круглых отверстий, каждое из которых является пикселем. Для того чтобы определить, какой цвет имеет пиксель относительно трёхмерной сцены, расположенной за плитой, достаточно просто посмотреть в одно из отверстий.

А теперь представим луч света, который проходит через одно из отверстий и попадает на наш текстурированный полигон. Если последний расположен параллельно относительно отверстия, через которое проходит световой луч, то световое пятно будет иметь форму окружности. В противном случае, если полигон расположен не параллельно к отверстию, световое пятно искажается и имеет эллиптическую форму. Мы думаем, что многие читатели в это время задаются одним вопросом: «как связаны все эти плиты, отверстие, луч света с проблемой определения цвета пикселя?» Внимание! Ключевая фраза: все полигоны, расположенные в световом пятне, определяют цвет пикселя. Всё вышеизложенное и есть те необходимые базовые знания, которые нужны для того, чтобы понять различные алгоритмы фильтрации.

А теперь, чтобы вы лучше поняли, для чего нужна фильтрация, рассмотрим происходящие процессы на примере легендарной «Quake 3 Arena». Представьте какой какой-нибудь коридор с множеством квадратов и различных орнаментов (благо, в «Quake 3 Arena» этого хватает). Орнамент в начале коридора сильно детализирован, а ближе к концу коридора (горизонту) элементы орнамента становятся всё меньше и меньше, т.е. они отображаются меньшим числом пикселей. В результате теряются детали типа швов между элементами орнамента, что, соответственно, приводит к ухудшению качества изображения.

Проблема заключается в том, что драйвер графической карты не знает, какие детали в текстуре являются важными.

Point Sampling

Point Sampling (поточечная выборка) – самый простой способ определения цвета пикселя. Этот алгоритм основан на текстурном изображении: выбирается всего один тексель, который ближе всех расположен к центру светового пятна, и по нему происходит определение цвета пикселя. Нетрудно догадаться, что это совершенно не верно. Во-первых, цвет пикселя определяется несколькими текселями, а мы выбрали только один. Во-вторых, форма светового пятна может измениться, а алгоритм не принимает это во внимание. А зря!

Главным недостатком поточной выборки является тот факт, что когда полигон расположен близко к экрану, количество пикселей будет значительно выше, чем текселей, из-за чего качество изображения очень сильно пострадает. Так называемый эффект блочности, как мы полагаем, многие могли наблюдать в старых компьютерных играх, например, в том же легендарном «Doom».

У Point Sampling есть преимущество. Из-за того, что определение цвета пикселя осуществляется всего по одному текселю, данный метод не критичен к пропускной способности памяти, а это автоматически даёт данному способу фильтрации колоссальные диведенды в том плане, что на фильтрацию по данной схеме затрачивается очень мало ресурсов 3D-акселератора.

Bi-Linear Filtering

Bi-Linear Filtering – билинейная фильтрация, основанная на методе использования интерполяционной техники. Для определения нужных текселей используется основная форма светового пятна, то есть круг. В нашем примере с кругом последний аппроксимируется 4 текселями. Как видим, здесь дела обстоят несколько лучше, чем с Point Sampling. Билинейная фильтрация использует уже 4 текселя.

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

Расплывчатость – отнюдь не самая главная проблема билинейной фильтрации. Дело в том, что аппроксимация выполняется корректно лишь для объектов, расположенных параллельно экрану или точке наблюдения, в то время как 99% объектов в любой компьютерной игре расположены непараллельно к точке наблюдения. Отсюда можно сделать вывод, что 99% объектов будут аппроксимироваться неправильно. Возьмём, к примеру, наш круг – полигон расположен непараллельно относительно точки наблюдения, стало быть, мы должны аппроксимировать эллипс, а мы аппроксимируем круг, что крайне неверно. Ко всему прочему билинейная фильтрация значительно требовательней к пропускной полосе данных памяти, что, в общем-то, более чем логично, учитывая то, что билинейная фильтрация использует уже 4 текселя для определения цвета пикселя.

Если судить по информации на форумах и из статей в Интернете, то ATi хитрит с трилинейной фильтрацией текстур на новом графическом процессоре X800. Впрочем, находятся и яростно защищающие ATi. Вообще, подобные дискуссии напоминают нам скандал годовалой давности, связанный с nVidia.

Поводом для столь горячего обсуждения стала статья на немецком сайте Computerbase. В ней было показано, как ATi использует оптимизированную трилинейную фильтрацию текстур, часто называемую "брилинейной" (brilinear) из-за смеси билинейной и трилинейной фильтраций, в графических процессорах Radeon 9600 и X800. Новость действительно стала ошеломляющей, ведь ATi всегда твердила о использовании настоящей трилинейной фильтрации.

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

Будет ли продолжение? Возможно, поскольку спор по поводу недавно открытой брилинейной фильтрации на картах Radeon 9600 и X800 не утихает. ATi следует отдать должное за то, что качество картинки карт визуально не страдает из-за этой фильтрации. По крайней мере, у нас нет примеров, говорящих об обратном. Пока брилинейная фильтрация проявляет себя при искусственно созданных лабораторных условиях. В то же время, ATi не позволяет включить полную трилинейную фильтрацию для упомянутых карт, будь она адаптивной или нет. Из-за новой фильтрации значения производительности в тестах не демонстрируют всего настоящего потенциала X800, поскольку значения FPS получены после оптимизации, влияние которой на скорость оценить сложно. Да и слово "адаптивная" оставляет горькое послевкусие. ATi не предоставила нам информацию о механизме работы драйвера и много раз заявляла, что карта даёт полную трилинейную фильтрацию. Лишь после упомянутого разоблачения ATi признала, что фильтрация оптимизирована. Будем надеяться, что в других местах драйвера подобной "адаптивности" нет.

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

Каждый производитель решает сам, какой уровень качества изображения он будет обеспечивать стандартно. Однако производителям следует документировать используемые оптимизации, особенно если они скрыты от известных тестов, как в свежем примере с ATi. Решение очевидно: дайте возможность выключать оптимизации! Тогда потребитель сможет сам решать, что ему важнее - больше FPS или лучшее качество. На Microsoft, как на третейского судью, рассчитывать тоже не приходится. Тесты WHQL не позволяют определить многие вещи, да и их можно легко обойти: значение слова "адаптивная" вам знакомо?

Известные на сегодня оптимизации фильтрации
ATi nVidia
Трилинейная
оптимизация
R9600
X800
GF FX5xxx
(GF 6xxx)*
Угловая оптимизация
анизотропной фильтрации
R9xxx
X800
GF 6xxx
Адаптивная
анизотропная фильтрация
R9xxx
X800
GF FX5xxx
GF 6xxx
Оптимизация ступени R9xxx
X800
GF FX5xxx
Оптимизация LOD R9xxx
X800(?)

В целом, подобные дискуссии имеют свои преимущества: покупатели и, возможно, OEM-клиенты начинают прислушиваться к проблеме. Мы не сомневаемся, что мания необузданных оптимизаций будет продолжаться. Однако в тёмном царстве появился луч света, что наглядно продемонстрировала nVidia со своей трилинейной оптимизацией. Будем надеяться и на следующие подобные шаги!

 
Статьи по теме:
Ликёр Шеридан (Sheridans) Приготовить ликер шеридан
Ликер "Шериданс" известен во всем мире с 1994 года. Элитный алкоголь в оригинальной двойной бутылке произвел настоящий фурор. Двухцветный продукт, один из которых состоит из сливочного виски, а второй из кофейного, никого не оставляет равнодушным. Ликер S
Значение птицы при гадании
Петух в гадании на воске в большинстве случаев является благоприятным символом. Он свидетельствует о благополучии человека, который гадает, о гармонии и взаимопонимании в его семье и о доверительных взаимоотношениях со своей второй половинкой. Петух также
Рыба, тушенная в майонезе
Очень люблю жареную рыбку. Но хоть и получаю удовольствие от ее вкуса, все-таки есть ее только в жареном виде, как-то поднадоело. У меня возник естественный вопрос: "Как же еще можно приготовить рыбу?".В кулинарном искусстве я не сильна, поэтому за совета
Программа переселения из ветхого и аварийного жилья
Здравствуйте. Моя мама была зарегистрирована по адресу собственника жилья (сына и там зарегистрирован её внук). Они признаны разными семьями. Своего жилья она не имеет, признана малоимущей, имеет право как инвалид на дополнительную жилую площадь и...