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

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

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

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

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

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

1. Point Sampling

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

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

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

Однако, главная цель применения фильтрации это не улучшение качества при сокращении расстояния от точки наблюдения до полигона, а избавление от эффекта неправильного расчета глубины сцены (depth aliasing).

2. Bi-Linear Filtering

Bi-Linear Filtering — билинейная фильтрация. Состоит в использовании интерполяционной техники. Иными словами, применительно к нашему примеру, для определения текселей, которые должны быть задействованы для интерполяции, используется основная форма светового пятна — круг. По существу, круг аппроксимируется 4 текселями. Этот способ фильтрации представляет собой существенно лучше поточечной выборки (point sampling), так как отчасти принимается во внимание форма светового пятна и используется интерполяция. Это означает, что если полигон приближается слишком близко к экрану или точке наблюдения, то для интерполяции потребуется больше текселей, чем в действительности доступно. В результате получается прекрасно выглядящее расплывчатое изображение, впрочем это лишь побочный эффект.

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

3. Tri-Linear filtering

Tri-Linear filtering — трилинейная фильтрация, представляет собой симбиоз mip-текстурирования и билинейной фильтрации. Фактически, вы производите билинейную фильтрацию на двух mip уровнях, что в результате дает вам 2 текселя, по одному для каждого mip уровня. Цвет пикселя, который должен быть выведен на экран, определяется в результате интерполяции по цветам двух mip-текстур. По сути, mip уровни представляют собой заранее рассчитанные более маленькие версии исходной текстуры, а это означает, что мы получаем более хорошую аппроксимацию текселей, расположенных в пятне света.

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

4. Anisotropic filtering

Anisotropic filtering — анизотропная фильтрация. Итак, чтобы получить действительно хорошие результаты, вы должны помнить, что все тексели в световом пятне определяют цвет пикселя. Вы так же должны помнить, что форма светового пятна изменяется вместе с изменением положения полигона относительно точки наблюдения. До этого момента мы использовали лишь 4 текселя вместо всех текселей, покрываемых световым пятном. Это означает, что все эти техники фильтрации дают искаженный результат, когда полигон расположен дальше от экрана или от точки наблюдения, т.к. вы не используете достаточный объем информации. На самом деле вы осуществляете сверх меры фильтрацию в одном направлении, и совершенно недостаточно фильтруете во всех остальных. Единственным преимуществом у всех описанных выше фильтраций является тот факт, что при приближении к точке наблюдения, изображение выглядит менее блочным (хотя это всего лишь побочный эффект). Таким образом, чтобы добиться наилучшего качества, мы должны использовать все тексели, покрываемые световым пятном и усреднять их значение. Однако, это серьезно ударяет по пропускной способности памяти — ее попросту может не хватить, и выполнить такую выборку с усреднением нетривиальная задача.

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

1 Tile (тайл) — плитка или фрагмент изображения. Фактически тайл представляет собой участок изображения, обычно с размером 32 на 32 пикселя; по этим участкам осуществляется сортировка с целью определения, какие полигоны, попадающий в этот тайл являются видимыми. Тайловая техника реализована в чипсетах VideoLogic/NEC.

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

Источник

Трилинейная фильтрация: техника улучшения качества изображений

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

Введение

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

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

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

Треугольник формируется путем наложения текстурного изображения на трехмерную поверхность.

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

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

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что этоТрилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

Рис. 2A (Левый сверху): Прямоугольник состоит из двух треугольников, текстурированных изображением шахматной доски. Обратите внимание на то, как ширина и высота каждого квадрата уменьшается при движении от ближайшей стороны прямоугольника, которая ближе к точке наблюдения, до дальней стороны прямоугольника.

Рис. 2B (Правый сверху): На увеличенном изображении, сразу напротив серой стрелки, можно заметить, что состоящая из нескольких пикселов сторона квадратов по вертикали (высоты) уменьшаются и в итоге состоят всего лишь из одного или двух пикселей. Как только вертикальная сторона квадрата (высота) сокращается по длине до двух пикселей, напротив голубой стрелки, обратите внимание на появление артефактов «depth-aliasing» выражающихся в том, что несколько квадратов сливаются в один.

Mip-mapping и вычисления степени детализации

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

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

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

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

Ниже представлен прямоугольник, использовавшийся в первом примере, только теперь наложение текстур произведено с использованием техники mip-mapping. Обратите внимание, что ошибки визуализации «depth aliasing» исчезли и на расстоянии стороны прямоугольника выглядят размытыми, как и должно быть.

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что этоТрилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

Рис. 4A (Левый сверху): Прямоугольник из первого примера. Обратите внимание отсутствие ошибок «depth aliasing».

Рис. 4B (Правый сверху): При увеличении удаленной части прямоугольника, хорошо заметна размытость.

Если для каждого пикселя в треугольнике вычисляется значение LOD для определения того, какая mip-текстура имеет нужный уровень фильтрации, то в результате предотвращается появление ошибок визуализации и излишней размытости. LOD должен вычисляться для каждого пикселя в треугольнике с целью избежания разрывов по краям треугольников. Этот метод называется per-pixel mip-mapping (попиксельное mip-текстурирование).

Если же LOD вычисляется всего лишь раз для всего треугольника, то следствием использование этого значения для всех пикселей треугольника становится появление странного эффекта растрескивания, когда некоторые треугольники, из которых состоит анимированный объект, вдруг внезапно становятся чрезмерно размытыми или с неровностями. Этот дешевый, менее эффективный метод mip-текстурирования известен как «per-polygon mip-mapping» (т.е. mip-текстурирование по каждому полигону).

Проблемы Mip-текстурирования

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

«Mip-banding» имеет место, когда значение LOD округляется до целого и только один соответствующий уровень mip-текстуры используется для генерации пикселя. После перехода LOD к более высокому уровню состоящему из треугольников, соседние пиксели будут генериться с различными mip уровнями и будут иметь совершенно различное количество примененных к ним фильтров. Результатом является появление линии или нескольких линий проходящих через треугольник в местах, где происходит внезапный переход между mip уровнями. Это один из недостатков использования только билинейного или по-точечного mip-текстурирования.

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

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что этоТрилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

Рис. 5A (левый сверху): Прямоугольная лента состоит из двух треугольников, текстурированных волнообразным изображением. Обратите внимание на «mip-banding» артефакты, обозначенные красными стрелками.

Рис. 5B (правый сверху): Увеличенная часть изображения в местах проявления ошибок «mip-banding».

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

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

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

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

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что этоТрилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

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

Рис. 6B (правый сверху): Увеличим полученное изображение; обратите внимание на отсутствие артефактов визуализации.

Далее вы сможете посмотреть на другой пример, показывающий преимущества от использования трилинейной фильтрации. В качестве источника был взят тестовый пакет от Ziff-Davis. В первом случае трилинейная фильтрация не применялась и нетрудно заметить «mip-banding» там, где желтая разметка дороги достигает изгиба шоссе (см. рис. ниже). Заметим, что проблема встает более остро при анимационном изображении.

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

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

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

Текущее положение дел в области производства графических чипсетов

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

Другой способ относительно корректной трилинейной фильтрации это размытие (dither) переменной LOD так, что только один mip уровень используется для отображения каждого пикселя. Не смотря на то, что до некоторой степени это снижает проблему ошибок «mip banding», этот способ имеет нежелательный эффект, выражающийся в появлении уродливо размытых узоров при использования некоторых mip-текстур.

Для снижения стоимости и сложности аппаратной части, связанной с корректной реализацией трилинейной фильтрации и вычислений LOD для каждого пикселя, некоторые производители графических чипсетов предлагают использовать дешевую альтернативу, известную под именем «per polygon mip-mapping» (mip-текстурирование каждого многоугольника). В этом решении используется одно значение LOD для всех пикселенй в каждом полигоне (обычно в качестве полигонов используются треугольники), что позволяет избавиться от ошибок «mip-banding» внутри полигона. Однако, это решение не избавляет от «mip-banding». Артефакты, вместо проявления внутри каждого полигона, теперь проявляются на границах полигонов. Следствием использования «per polygon mip-mapping» является появление странного эффекта растрескивания, когда некоторые полигоны, из которых состоит объект, при анимации неожиданно становятся расплывчатыми или ступенчатыми.

Другая проблема при использовании «per-polygon mip-mapping» состоит в том, что mip уровень некоторых полигонов может отличаться от нескольких уровней внутри самого полигона. Совершенно невозможно выбрать только один mip уровень для полигона, который бы сразу избавил от эффектов неровностей (aliasing) для всех пикселей внутри полигона без появления расплывчатости некоторых других пикселей. «Per-polygon mip-mapping» требует больше вычислений, но при этом результат получается далеким от идеального, так как данная техника не избавляет от обоих указанных проблем.

Следующие ниже примеры иллюстрируют недостатки «per-polygon mip-mapping». Изображение «А» иллюстрирует ситуацию, когда mip-map уровень в треугольниках слишком высок и очень много деталей теряются в области прямоугольной ленты ближней к точке наблюдения. Изображение «В» иллюстрирует ситуацию, когда mip-map уровень в треугольниках ниже, чем в предыдущем примере, что должно снизить расплывчатость и восстановить некоторые детали, однако появился другой отрицательный эффект — «depth aliasing», который можно заметить на дальней от точки наблюдения стороне прямоугольной ленты. В завершении, как компромисс, вы можете посмотреть на два треугольника (которые формируют прямоугольную ленту), имеющие различные mip-map уровни, на изображении «С». Теперь присутствует «mip-banding» артефакт, имеющий место на границе двух треугольников. Более того, на изображении «С» проблемы ошибки вычисления глубины сцены («depth-aliasing») и потеря деталей все еще вполне очевидны.

Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это Трилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что этоТрилинейная фильтрация что это. Смотреть фото Трилинейная фильтрация что это. Смотреть картинку Трилинейная фильтрация что это. Картинка про Трилинейная фильтрация что это. Фото Трилинейная фильтрация что это

Рис. 7A (левый верхний): Прямоугольник текстурированный изображением шахматной доски под воздействием «per-polygon mip-map» уровня фильтрации. «Per-polygon mip-map» уровень слишком высокий и произошла потеря деталей на ближней стороне прямоугольника.

Рис. 7B (правый верхний): Прямоугольник текстурированный изображением шахматной доски под воздействием «per-polygon mip-map» уровня фильтрации. В этом случае «per-polygon mip-map» уровень слишком низкий и сразу появляются ошибки вычисления глубины сцены — «depth-aliasing».

Рис. 7C (нижний): Прямоуголник текстурированный изображением шахматной доски под воздействием «per-polygon mip-map» уровня фильтрации. В этом случае «per-polygon mip-map» уровень выбран компромиссным между применявшимися в примерах «А» и «В» — а именно, один треугольник имеет высокий mip-map уровень, в то время как другой треугольник имеет низкий mip-map уровень. В этом случае проявляется «mip-banding» на границе между двумя треугольниками. Более того, все еще ясно различимо присутствие «depth-aliasing» и потеря деталей.

В лучшем случае, техника «per-polygon mip-mapping» представляет собой низкокачественную замену для попиксельного mip-текстурирования. В худшем случае, следствием применения «per-polygon mip-mapping» является появление нового набора ошибок визуализации без избавления при этом от проблем, присущих наложению текстур. Без аппаратной реализации поддержки вычислений LOD для каждого пикселя, не существует способа предотвратить появление «mip banding» используя трилинейную фильтрацию.

Одной из альтернатив трилинейной фильтрации является анизотропная фильтрация (anisotropic filtering). Анизотропная фильтрация представляет собой продвинутую технику, следствием применения которой, при корректной реализации, является появление лишь нескольких ошибок визуализации, по сравнению с использованием трилинейной фильтрации. Анизотропная фильтрация может быть реализована с помощью использования выборки по шаблонам (over-sampling или оверсемплинг), в качестве которых могут выступать тексели. Идея в том, что для наложении текстуры на пиксель используется больше текселей, причем количество используемых текселей зависит от применяемого алгоритма. Тем не менее, применение over-sampling серьезно влияет на производительность графического чипсета. Для примера, восьмикратный over-sampling (т.е. когда для наложения текстуры используется восемь текселей) может снизить частоту смены кадров в приложении в восемь раз или больше, по сравнению с тем, что было бы без использования over-sampling. Как следствие, пока не существует решения пригодного для использования анизотропной фильтрации в режиме реального времени. Тем не менее, этот тип фильтрации будет со временем использоваться в приложениях, таких, как например интерфейсы GDI2000 и Chrome от Microsoft. Но, скорее всего, случится это не раньше 2000, так как пока нет приложений, которые могут использовать преимущества анизотропной фильтрации.

Заключение

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

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

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *