Введение

Метод повышения качества изображения текстур на поверхностях компьютерной графики

В 3D компьютерной графике анизотропная фильтрация (сокращенно AF) – это метод повышения качества изображения текстур на поверхностях компьютерной графики, просматриваемых под наклонным углом к камере, при котором проекция текстуры (а не многоугольника или другого примитива, на котором она отрисована) выглядит неортогональной (отсюда и происхождение слова: "an" – отрицание, "iso" – одинаковость, и "tropic" от тропизма, связанного с направлением; анизотропная фильтрация фильтрует по-разному в разных направлениях). Как и билинейная и трилинейная фильтрация, анизотропная фильтрация устраняет эффекты алиасинга, но превосходит эти методы, уменьшая размытие и сохраняя детали при экстремальных углах обзора. Анизотропная фильтрация требует значительных ресурсов (прежде всего пропускной способности памяти и, в некоторой степени, вычислительной мощности, хотя действуют стандартные правила компромисса между пространством и временем) и стала стандартной функцией графических карт потребительского уровня только в конце 1990-х годов. В настоящее время анизотропная фильтрация широко используется в современном графическом оборудовании (и программном обеспечении драйверов видеокарт) и может быть включена пользователями через настройки драйверов или графическими приложениями и видеоиграми через программные интерфейсы.

Улучшение изотропного отображения МПП

С этого момента предполагается, что читатель знаком с MIP-картированием. Если мы рассмотрим более приближенный анизотропный алгоритм, RIP-картирование, как расширение MIP-картирования, мы сможем понять, как анизотропная фильтрация обеспечивает такое высокое качество текстурирования. Если нам необходимо текстурировать горизонтальную плоскость, расположенную под углом к камере, традиционное уменьшение разрешения MIP-карты даст недостаточное горизонтальное разрешение из-за снижения частоты изображения по вертикальной оси. Это происходит потому, что в MIP-картировании каждый уровень MIP является изотропным: текстура 256 × 256 уменьшается до изображения 128 × 128, затем до 64 × 64 и так далее. Разрешение уменьшается вдвое по каждой оси одновременно, поэтому при выборке текстуры MIP-карты изображение всегда будет иметь одинаковую частоту по каждой оси. Следовательно, при выборке для предотвращения алиасинга на оси с высокой частотой другие оси текстуры также будут уменьшены, что потенциально приведет к размытию. При анизотропной фильтрации MIP-карты, помимо уменьшения разрешения до 128 × 128, изображения также выбираются с разрешением 256 × 128, 32 × 128 и т. д. Эти анизотропно уменьшенные изображения могут быть использованы при выборке, когда частота текстурирования различается для каждой оси текстуры. Таким образом, одна ось не должна размываться из-за частоты отображения на экране другой оси, и алиасинг по-прежнему предотвращается. В отличие от более общей анизотропной фильтрации, MIP-картирование, описанное в качестве примера, ограничено поддержкой только анизотропных выборок, выровненных по осям в пространстве текстур, поэтому диагональная анизотропия все еще представляет проблему, хотя реальные примеры использования анизотропных текстур часто включают такие отображения пространства экрана. Хотя реализации могут варьироваться в своих методах, MIP-картирование и связанные с ним ограничения по выравниванию осей делают его неоптимальным для истинной анизотропной фильтрации и используется здесь только в иллюстративных целях. Полная анизотропная реализация описана ниже. Проще говоря, анизотропная фильтрация сохраняет "четкость" текстуры, которая обычно теряется из-за попыток MIP-карты избежать алиасинга. Таким образом, можно сказать, что анизотропная фильтрация поддерживает четкие детали текстуры при любом угле обзора, обеспечивая при этом быструю антиалиазированную фильтрацию текстур.

Степень поддерживаемой анизотропии

При рендеринге могут применяться различные степени или соотношения анизотропной фильтрации, и текущие аппаратные реализации рендеринга устанавливают верхний предел для этого соотношения. Эта степень определяет максимальное соотношение анизотропии, поддерживаемое процессом фильтрации. Например, анизотропная фильтрация 4:1 (произносится как «четыре к одному») продолжит повышать четкость более наклонных текстур по сравнению с диапазоном, обеспечиваемым фильтрацией 2:1. На практике это означает, что в ситуациях с сильно наклонной текстурой фильтр 4:1 будет в два раза четче фильтра 2:1 (он отобразит вдвое больше частотных составляющих, чем фильтр 2:1). Однако для большинства сцен не потребуется фильтр 4:1; более четкая фильтрация необходима только для более наклонных и, как правило, более удаленных пикселей. Это означает, что с каждым удвоением степени анизотропной фильтрации прирост видимого качества уменьшается, поскольку все меньше и меньше отрисовываемых пикселей затронуты, и результаты становятся менее заметными для зрителя. При сравнении результатов рендеринга с анизотропной фильтрацией 8:1 и 16:1 лишь небольшое количество сильно наклонных пикселей, в основном на более удаленной геометрии, отобразит заметно более четкие текстуры в сцене с более высокой степенью анизотропной фильтрации, а частотная информация на этих немногих пикселях, отфильтрованных с 16:1, будет лишь вдвое больше, чем у фильтра 8:1. Снижается и потеря производительности, поскольку меньше пикселей требуют выборки данных с большей анизотропией. В конечном итоге именно сложность аппаратной реализации в сочетании с уменьшением отдачи от повышения качества анизотропной фильтрации приводит к установлению верхнего предела качества анизотропной фильтрации в аппаратном обеспечении. Приложения и пользователи могут свободно регулировать этот компромисс с помощью настроек драйверов и программного обеспечения до этого порога.

Реализация

Истинная анизотропная фильтрация динамически исследует текстуру анизотропно, для каждого пикселя и любой ориентации анизотропии. В графическом оборудовании, при анизотропном сэмплировании текстуры, обычно выполняется несколько запросов (тексельных выборок) текстуры вокруг центральной точки, но по шаблону, соответствующему спроецированной форме текстуры в этом пикселе. Ранее в программных методах использовались таблицы суммарных площадей. Каждый анизотропный фильтрующий запрос часто сам по себе является отфильтрованной выборкой MIP-карты, что увеличивает количество выборок в процессе. Для получения шестнадцати трилинейных анизотропных выборок может потребоваться 128 выборок из сохраненной текстуры, поскольку трилинейная фильтрация MIP-карты требует четырех выборок, умноженных на два уровня MIP, а затем анизотропное сэмплирование (с 16 отборами) требует шестнадцати таких трилинейно отфильтрованных запросов. Однако такой уровень сложности фильтрации не всегда необходим. Существуют общедоступные методы для снижения нагрузки на видеорендеринг. Наиболее часто используемый метод анизотропной фильтрации в графическом оборудовании – это композиция отфильтрованных значений пикселей только из одной строки выборок MIP-карты. В общем случае, метод построения результата текстурного фильтра из нескольких запросов, заполняющих спроецированную пиксельную выборку в текстурном пространстве, называется "сборкой следа", даже если детали реализации различаются.