В разделе на вопрос ЧТО ТАКОЕ MIP-MAPPING! заданный автором лучший ответ это MIP MAPPING - это незаменимая в каждой игре вещь. Напрмер вы играете в игру - GTA. В далеке виднеются дома. Их текстуры размыты. Как только вы подойдёте ближе текстурки станут чётче. Это сделонно чтобы не нагружать процессор. Зачем делать тектуры домов чёткими, от которых вы далеко, если вы их всё равно не увидите!? !
Существует и другая вещь. Называется она LOD. Она работает также, как и m-mapping, только заменяет модели, а не текстуры. Заменяет на моделии где полигонов меньше, опятьже тем самым снижая нагрузку ЦП. Яркий тому пример игра: TES 4 Oblivion. Благодаря великолепной системе LOD и M-MAPPINGA эта игра илёт даже на слабых машинах - со слабыми процессормами, (только video карта нужна FX5200 или R9200). Также модели деревьемв заменяются на спрайты (плоские картиннки) .
А вот создатели Gothic 3 что-то поленились оптимизировать игру и она тормозит на всех, даже мощных машинах, хотя графика в этой игре не очень.

Arabic Bulgarian Chinese Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Malagasy Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Thai Turkish Vietnamese

definition - MIP-текстурирование MIP-текстурированиеМатериал из Википедии - свободной энциклопедии

Главная текстура и её уменьшенные копии

На всех этих текстурах находится одно и то же изображение. Таким образом, MIP-текстурирование увеличивает расход видеопамяти на треть: .

При наложении текстур вычисляется расстояние до объекта, соответственно находится номер текстуры как , где resolution - разрешение виртуальной камеры (количество пикселей, которое будет в объекте размером в 1 ед., расположенном в 1 ед. от камеры), texelsize - размер текселя в единицах трёхмерного мира, dist - расстояние до объекта в тех же единицах, mip bias - число, позволяющее выбирать более или менее детальную текстуру, чем даёт формула. Эта цифра округляется до целого, и текстура с соответствующим номером (нулевая - самая детальная, первая - вдвое меньшая и т. д.) накладывается на объект.

Недостатки, способы решения

MIP-текстурирование не решает проблему текстур, находящихся под острым углом к зрителю (например, дорога в автосимуляторе). У таких текстур разрешение по одной оси сильно отличается от разрешения по другой - и, например, по оси X изображение явно размыто, в то время как по оси Y видны мерцания, свойственные завышенному разрешению текстуры. Есть сразу несколько способов решения этого (начиная с наименее качественного):

  • Установить в видеодрайвере наиболее комфортное значение mip bias - числа́, которое отвечает за выбор номера текстуры в пирамиде. Если оно отрицательное, видеоплата берёт более детальные текстуры, если положительное - менее детальные.
  • Многие игры сами устанавливают подходящий mip bias для разных типов объектов. Например, в Live for Speed mip bias устанавливается пользователем отдельно для автомобилей, препятствий и дороги.
  • Воспользоваться анизотропной фильтрацией - методом текстурирования, который направлен именно на решение этой проблемы.
  • Наконец, видна чёткая граница между MIP-уровнями. Это решается трилинейной фильтрацией .

    Ссылки
    • Михаил Хабров Создание детальных текстур c помощью mip-map уровней в Direct3D8 . GameDev.ru (29 мая 2002 года). Проверено 12 июля 2009.

    Последнее обновление: 1.11.2015

    Функция gl.texImage2D

    Данный метод загружает текстуру в GPU (графический процессор на видеокарте). Он имеет следующий синтаксис: texImage2D(target, level, internalformat, format, type, elem)

      target : указывает целевой объект для загрузки текстуры

      level : уровень множественного отображения текстуры

      internalformat и format : формат и внутренний формат. В WebGL должны иметь одно и то же значение. Так, формат gl.RGBA , к примеру, показывает, что для каждого текселя на текстуре должны быть установлены цветовые каналы для красного, зеленого и синего цветов, а также альфа-канал.

      type : тип данных, которых сохраняет все данные текселей текстуры. Например, gl.UNSIGNED_BYTE указывает, что для каждого цветового канала в gl.RGBA для сохранения данных выделяется один байт.

      elem : указывает на элемент, который содержит источник текстурирования. Это может быть элемент img или Image. Это также может быть элемент HTML5 video или canvas.

    Все возможные сочетания форматов и типов:

    gl.UNSIGNED_BYTE

    gl.UNSIGNED_BYTE

    gl.UNSIGNED_SHORT_4_4_4_4

    gl.UNSIGNED_SHORT_5_5_5_1

    gl.UNSIGNED_SHORT_5_6_5

    gl.LUMINANCE_ALPHA

    gl.UNSIGNED_BYTE

    gl.UNSIGNED_BYTE

    gl.UNSIGNED_BYTE

    Я думаю, формат gl.RGBA понятен: каждый тексель текстуры имеет канал красного, зеленого и синего цветов, а также альфа-канал. Формат gl.RGB - то же самое, только без альфа-канала.

    Формат gl.LUMINANCE_ALPHA имеет канал яркости и альфа-канал. И формат gl.LUMINANCE имеет только канал яркости, а формат gl.ALPHA - только альфа-канал.

    Например, настройка gl.texImage2D(gl.TEXTURE_2D, 0, gl.LUMINANCE_ALPHA, gl.LUMINANCE_ALPHA, gl.UNSIGNED_BYTE, image); даст следующий эффект:

    Касательно типов тоже все просто. Тип gl.UNSIGNED_BYTE предоставляет по одному байту на каждый канал.

    Тип gl.UNSIGNED_SHORT_4_4_4_4 предоставляет для каждого канала в формате RGBA по четыре байта.

    Тип gl.UNSIGNED_SHORT_5_5_5_1 предоставляет для каждого каналов красного, зеленого и синего цветов в формате RGBA по пять байт, а для альфа-канала - один байт.

    И тип gl.UNSIGNED_SHORT_5_6_5 предоставляет для каналов красного и синего цветов по пять байт и для зеленого цвета - шесть байт в формате RGB.

    Определение параметров текстуры

    Метод gl.texParameteri() позволяет определить параметры текстуры. Он имеет следующий формальный синтаксис: texParameteri(target, pname, param) . Сочетания параметров бывают разными и могут влиять на используемые значения.

      target : в зависимости от направления текстурирования может принимать значения gl.TEXTURE_2D , либо gl.TEXTURE_CUBE_MAP

      pname : указывает на фильтр, который мы хотим установить. Может принимать следующие значения: gl.TEXTURE_MAG_FILTER , gl.TEXTURE_MIN_FILTER , gl.TEXTURE_WRAP_S и gl.TEXTURE_WRAP_T

      param : предоставляет значение для фильтра pname. То есть в выражении gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); фильтру текстуры gl.TEXTURE_MAG_FILTER устанавливается значение gl.NEAREST .

      Значения, передаваемые параметром param, разнообразны и позволяют создавать определенные эффекты, которые далее мы подробно разберем.

    Зачем вообще нужна настройка этих параметров? В реальности текстуры имею определенные размеры, например, 128х128. Однако поверхность объекта, на которую накладывается текстура, может иметь как большие, так и меньшие размеры. Использование фильтра gl.TEXTURE_MAG_FILTER фактически помогает определить рендеринг текстуры, если она меньше размера объекта, то ее надо увеличить.

    И фильтр gl.TEXTURE_MIN_FILTER , наоборот, указывает, каким образом надо проводить рендеринг, если размеры поверхности объекта меньше размеров текстуры.

    gl.NEAREST

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

    gl.LINEAR

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

    Это значение может быть установлено как для фильтра gl.TEXTURE_MIN_FILTER, так и для фильтра gl.TEXTURE_MAG_FILTER.

    Сравнение двух фильтров Mip-текстурирование

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

    Mip-текстурирование в WebGL использует ряд фильтров. Подобные фильтры могут использоваться только в качестве значения для фильтра gl.TEXTURE_MIN_FILTER:

      gl.NEAREST_MIPMAP_NEAREST : фильтр использует одну копию текстуры, которая наиболее подходит под размеры текстуры на экране. Выборка семплером значений происходит по алгоритму NEAREST. Самый быстрый способ текстурирования, но при этом менее качественный

      gl.LINEAR_MIPMAP_NEAREST : фильтр использует одну копию текстуры, которая наиболее подходит под размеры текстуры на экране. Выборка семплером значений происходит по алгоритму LINEAR

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

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

    Само использование этих значений для фильтров еще предполагает, что у нас будет использоваться mip-текстурирование. Перед этим нам надо сгенерировать мипмапы, то есть копии текстуры, с помощью метода gl.generateMipmap(gl.TEXTURE_2D); . Этот метод должен вызываться после метода gl.texImage2D(). То есть, возьмем из ранее использованный примеров текстурирования функцию handleTextureLoaded и изменим ее так, чтобы использовались мипмапы:

    Function handleTextureLoaded(image, texture) { gl.bindTexture(gl.TEXTURE_2D, texture); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); gl.generateMipmap(gl.TEXTURE_2D); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR); }

    Это даст нам следующий результат:

    Надо отметить, что мип-текстурирование имеет некоторые ограничения: используемые изображения должны иметь размеры, которые равны степени двойки. Например, 16px, 32px, 64px, 128px и т.д. При этом необязательно, чтобы высота и ширина были равные, главное, чтобы их значения были равны степени двойки.

    Texture wrapping

    Еще один способ текстурирования называется texture wrapping . Этот термин можно перевести как обертывание текстурой. То есть данный способ определяет поведение семплера при отборе цветов пикселей с текстуры, если заданные координаты текстуры находятся вне диапазона .

    В данном случае нам потребуется установить значения для фильтров gl.TEXTURE_WRAP_S и gl.TEXTURE_WRAP_T , которые отвечают за рендеринг текстуры вдоль осей s и t.

    Например, у нас определены следующие координаты текстуры в буфере координат текстуры:

    // Координаты текстуры var textureCoords = [ 0.0, 0.0, 0.0, 2.0, 2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 2.0, 2.0, 0.0 ];

    А функция handleTextureLoaded выглядела бы следующим образом:

    Function handleTextureLoaded(image, texture) { gl.bindTexture(gl.TEXTURE_2D, texture); gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); gl.generateMipmap(gl.TEXTURE_2D); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); }

    То мы можем получить следующий результат:

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

      gl.CLAMP_TO_EDGE : все координаты текстуры, которые больше 1 и меньше 0, сжимаются до диапазона

      gl.REPEAT : происходит повторение текстуры после выхода вне диапазона

      gl.MIRRORED_REPEAT : повторение текстуры с зеркальным отображением

    Можно комбинировать данные значения, как в вышеприведенном примере, где одновременно используются gl.REPEAT и gl.CLAMP_TO_EDGE.

    Используйте MIP-текстурирование для масштабирования крупных изображений.

    Еще одна новая функция, доступная в проигрывателях Flash Player 10.1 и AIR 2.5 на всех платформах, связана с MIP-текстурированием. В проигрывателях Flash Player 9 и AIR 1.0 представлена функция MIP-текстурирования, позволяющая повысить качество и производительность уменьшенных растровых изображений.

    Примечание. Функция MIP-текстурирования подходит только для динамически загружаемых изображений или встроенных растровых изображений. MIP-текстурирование не применяется к отфильтрованным или кэшированным экранным объектам. Обработка MIP-текстурирования возможна, только если ширина и высота растрового изображения являются четными числами. Если ширина или высота растрового изображения является нечетным числом, обработка MIP-текстурирования останавливается. Например, к изображению 250 x 250 можно применить MIP-текстурирование до 125 x 125, но дальнейшее MIP-текстурирование будет невозможно. В этом случае хотя бы один из размеров является нечетным числом. Наиболее оптимальные результаты получаются, если растровые изображения имеют размеры, равные степени двойки, например: 256 x 256, 512 x 512, 1024 x 1024 и так далее.

    Например, если загружено изображение 1024 x 1024 и разработчику необходимо масштабировать его для создания миниатюры в галерее. Функция MIP-текстурирования обеспечивает правильную визуализацию изображения при масштабировании с использованием промежуточных субдискретизированных версий растрового изображения в качестве текстур. В предыдущих версиях среды выполнения промежуточные уменьшенные версии растрового изображения создавались в памяти. Если было загружено изображение 1024 x 1024, которое отображалось с размером 64 x 64, в более старых версиях среды выполнения каждый раз создавалось растровое изображение половинного размера. Например, в этом случае создавались растровые изображения 512 x 512, 256 x 256, 128 x 128 и 64 x 64.

    Теперь проигрыватели Flash Player 10.1 и AIR 2.5 поддерживают прямое MIP-текстурирование исходного объекта до объекта с необходимым размером. В предыдущем примере создаются только исходное растровое изображение 4 МБ (1024 x 1024) и MIP-текстурированное растровое изображение 16 КБ (64 x 64).

    Логика MIP-текстурирования также работает с функцией динамической выгрузки растровых изображений. Если используется только растровое изображение 64 x 64, исходное изображение размером 4 МБ освобождается из памяти. Если необходимо повторно создать MIP-текстурированную версию, исходное изображение загружается повторно. Кроме того, если требуются другие MIP-текстурированные растровые изображения разных размеров, цепочка MIP-текстурированных растровых изображений используется для создания растрового изображения. Например, если необходимо создать растровое изображение 1:8, исследуются растровые изображения 1:4, 1:2 и 1:1 на предмет того, какое изображение было загружено в память первым. Если другие версии не найдены, исходное растровое изображение 1:1 загружается из ресурса и используется.

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

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

    Как видим, билинейная фильтрация выглядит несколько лучше, нежели Point Sampling. И всё же она очень далека от идеала.

    Tri-Linear filtering

    Tri-Linear filtering – трилинейная фильтрация, представляет собой симбиоз билинейной фильтрации и mip-текстурирования. Прежде чем говорить об алгоритме работы трилинейной фильтрации, давайте выясним, что такое МIP-текстурирование. MIP-текстурирование, или mip-mapping, – это метод уменьшения объёма вычислений, необходимых для точного наложения текстурного изображения на полигон. По сути, мипмеппинг выполняет те же задачи, что и Point Sampling, но делает это на порядок лучше. MIP-текстурирование призвано избавить нас от ухудшений изображений, когда несколько текселей накладываются на один пиксель.

    Посмотрим на проблему глобальней и попробуем найти решение всему этому. Для того чтобы правильно вывести пиксель на экран, необходимо скомбинировать значения всех текселей, которые и будут накладываться на этот пиксель. Но пропускная способность памяти не бесконечна, а это огромнейший обьём работы, который неблагоприятно отразится на быстродействии вашей видеокарты. Mip-mapping способствует снижению объёмов этой работы. Метод MIP-текстурирования основан на генерации и хранении множества версий исходного текстурного изображения. Эти версии имеют большое количество разрешений, каждое из которых всё меньше и меньше исходного. Во время текстурирования пикселя вам достаточно выбрать версию текстурного изображения. В вашем распоряжении есть 4 близлежащих текселея из текстурного изображения, больших по размеру, чем пиксель, и столько же текселей, меньших по размеру, чем пиксель. По сути, mip-уровни представляют собой заранее рассчитанные, более маленькие версии исходной текстуры, из-за чего обеспечивается лучшая аппроксимация.

    Итак, мы выяснили, что такое mip-mapping, теперь вернёмся к нашей трилинейной фильтрации. Как мы уже говорили, Tri-Linear filtering представляет собой симбиоз билинейной фильтрации и mip-текстурирования. По сути, билинейная фильтрация производится на двух mip-уровнях. А в итоге мы имеем 2 текселя, по одному для каждого mip-уровня. Цвет пикселя определяется при помощи интерполяции по цветам двух mip-текстур.

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

    Anisotropic filtering

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

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

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

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

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

    Уровень анизотропной фильтрации определяется числом текселей, которые обрабатываются при вычислении конечного пикселя. Современные графические решения позволяют выставить уровень фильтрации в драйвере. Самыми распространёнными уровнями фильтрации являются 2x (16 текселей), 4x (32 текселя), 8x (64 текселя) и 16x (128 текселей). Очевидно, что при повышении уровня анизотропной фильтрации нагрузка на полосу пропускания памяти также увеличивается, а это неминуемо сказывается на производительности.

    Оптимизации анизотропной и трилинейной фильтраций сегодня

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

    Разработчики пытаются играть на всё тех же особенностях зрения человека и стараются повысить производительность за счёт слабозаметного ухудшения качества изображения. Возьмём, к примеру, брилинейную фильтрацию. Нет-нет, мы не оговорились, именно брилинейная фильтрация. Так сказать, новый вид, который появился благодаря упорным стараниям вендоров. Брилинейная фильтрация представляет собой смешанный режим фильтрации между билинейной и трилинейной – область, в которой граничат соседние mip-уровни, и которая, собственно говоря, подвергается трилинейной фильтрации, была уменьшена. Вследствие этого удалось поднять производительность, что вполне ожидаемо, ведь мы фильтруем гораздо меньше. При этом качество изображения становится хуже, однако ухудшение качества в данном случае явно оправдано, если учесть значительный выигрыш в производительности. Это отчётливо видно, если сравнивать изображения, полученные с помощью полной трилинейной фильтрации. Брилинейную фильтрацию впервые применила NVIDIA на своих видеокартах GeForce FX 5xxx Новые видеокарты GeForce 6xxx также используют брилинейную фильтрацию, однако компания NVIDIA после критики и различных дискуссий в многочисленных конференциях добавила возможность отключения оптимизации.

    В недалёком прошлом продукты компании ATI славились более высоким качеством картинки, нежели таковые от NVIDIA. Однако с выходом графического процессора Radeon 9600 всё изменилось – последний, как и более новое решение Radeon X800, также использует брилинейную фильтрацию. Однако, в отличие от NVIDIA, ATI не соизволила не только объяснить процедуру фильтрации, но и не признала сам факт использования оптимизаций.

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

    Однако находчивые ребята с сайта Computerbase обнаружили, что в компьютерной игре «Call Of Duty» X800 даёт меньшую частоту кадров при использовании цветных mip-текстур. После чего обозреватели Computerbase провели сравнение качества изображения. Как оказалось, при применении обычных текстур Radeon X800 использует брилинейную фильтрацию. При употреблении цветных текстур в «Call Of Duty» (1600х1200) общий показатель FPS Radeon Х800 падает на 11-13 fps.

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

    В интервью популярному сайту Toms Hardware Guide компания ATI всячески уходила от конкретного ответа, утверждая, что X800 использует полноценную трилинейную фильтрацию. На этом оптимизации от компании ATI не заканчиваются. Так, продукты канадской фирмы ATI используют ещё один вид оптимизации, который называется «stage optimization» – оптимизацией ступени. Метод оптимизации основан на применении «трилинейной» (брилинейной) фильтрации только к первой ступени текстуры (0). Остальные ступени 1-7 фильтруются простым билинейным методом.

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

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

    Компания NVIDIA также стала использовать эту оптимизацию, которая появилась в драйверах версии 51.xx для карт GeForce 5xxx.

    Адаптивная анизотропная фильтрация – ещё одна вариация на тему оптимизаций. Её уже давно используют продукты компании ATI. NVIDIA также не отстаёт – в GeForce 6800 эта оптимизация частично реализована.

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

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

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

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