В 3D компьютерной графике анизотропная фильтрация (сокращенно AF ) [1] [2] — это метод повышения качества изображения текстур на поверхностях компьютерной графики, находящихся под наклонными углами обзора по отношению к камере, где проецируется текстура ( а не многоугольник или другой примитив , на котором он отображается) кажется неортогональным ( отсюда и происхождение слова: «an» для « не » , «iso» для « того же самого » и «тропик» от тропизма , относящегося к направлению; анизотропный) . фильтрация не фильтрует одинаково во всех направлениях).
Подобно билинейной и трилинейной фильтрации , анизотропная фильтрация устраняет эффекты наложения спектров , [3] [4] , но улучшает эти другие методы за счет уменьшения размытия и сохранения деталей при экстремальных углах обзора.
Анизотропная фильтрация является относительно интенсивной (в первую очередь пропускной способностью памяти и, в некоторой степени, вычислительной , хотя применяются стандартные правила компромисса между пространством и временем ) и стала стандартной функцией видеокарт потребительского уровня только в конце 1990-х годов. [5] Анизотропная фильтрация теперь широко распространена в современном графическом оборудовании (и программном обеспечении видеодрайверов) и включается либо пользователями через настройки драйвера, либо графическими приложениями и видеоиграми через программные интерфейсы.
С этого момента предполагается, что читатель знаком с отображением MIP .
Если бы нам пришлось исследовать более приблизительный анизотропный алгоритм, RIP-отображение, как расширение MIP-отображения, мы могли бы понять, как анизотропная фильтрация обеспечивает такое высокое качество отображения текстур. [6] Если нам нужно текстурировать горизонтальную плоскость, расположенную под косым углом к камере, традиционная минификация MIP-карты даст нам недостаточное горизонтальное разрешение из-за уменьшения частоты изображения по вертикальной оси. Это связано с тем, что при отображении MIP каждый уровень MIP изотропен, поэтому текстура 256 × 256 уменьшается до изображения 128 × 128, затем изображения 64 × 64 и т. д., поэтому разрешение уменьшается вдвое по каждой оси одновременно, поэтому текстура карты MIP зонд к изображению всегда будет выбирать изображение, имеющее одинаковую частоту по каждой оси. Таким образом, при дискретизации во избежание наложения на высокочастотной оси другие оси текстуры будут аналогичным образом субдискретизированы и, следовательно, потенциально размыты.
При анизотропной фильтрации MIP-карт, помимо понижения разрешения до 128 × 128, изображения также дискретизируются до размеров 256 × 128, 32 × 128 и т. д. Эти изображения с анизотропно пониженной дискретизацией можно исследовать, когда частота изображения с отображением текстуры различна для каждой оси текстуры. Таким образом, одна ось не должна размываться из-за частоты экрана другой оси, и сглаживание по-прежнему предотвращается. В отличие от более общей анизотропной фильтрации, MIP-отображение, описанное для иллюстрации, ограничено поддержкой только анизотропных зондов, выровненных по осям в текстурном пространстве , поэтому диагональная анизотропия по-прежнему представляет собой проблему, даже несмотря на то, что в реальных случаях анизотропной текстуры обычно используются такие отображения экранного пространства. .
Хотя реализации могут свободно варьировать свои методы, отображение MIP и связанные с ним ограничения по оси означают, что оно неоптимально для истинной анизотропной фильтрации и используется здесь только в иллюстративных целях. Полностью анизотропная реализация описана ниже.
С точки зрения непрофессионала, анизотропная фильтрация сохраняет «резкость» текстуры, которая обычно теряется из-за попыток текстуры карты MIP избежать наложения. Таким образом, можно сказать, что анизотропная фильтрация сохраняет четкую детализацию текстур при всех ориентациях просмотра, обеспечивая при этом быструю фильтрацию сглаженных текстур .
Во время рендеринга могут применяться различные степени или коэффициенты анизотропной фильтрации, и текущие реализации аппаратного рендеринга устанавливают верхнюю границу этого коэффициента. [7] Эта степень относится к максимальному коэффициенту анизотропии, поддерживаемому процессом фильтрации. Например, анизотропная фильтрация 4:1 (произносится как «4-к-1») продолжит повышать резкость более наклонных текстур за пределами диапазона, в котором резкость составляет 2:1. [8]
На практике это означает, что в ситуациях с сильно наклонным текстурированием фильтр 4:1 будет в два раза резче, чем фильтр 2:1 (он будет отображать частоты в два раза больше, чем фильтр 2:1). Однако для большей части сцены фильтр 4:1 не потребуется; только более наклонные и обычно более удаленные пиксели потребуют более четкой фильтрации. Это означает, что по мере того, как степень анизотропной фильтрации продолжает удваиваться, снижается качество видимого изображения, затрагивается все меньше и меньше отображаемых пикселей, и результаты становятся менее очевидными для зрителя.
Если сравнивать результаты рендеринга сцены с анизотропной фильтрацией 8:1 со сценой с фильтрацией 16:1, то только относительно небольшое количество сильно наклоненных пикселей, в основном на более удаленной геометрии, будут отображать заметно более резкие текстуры в сцене с более высокой степенью анизотропии. фильтрации, и информация о частоте этих нескольких пикселей, отфильтрованных с соотношением 16:1, будет только вдвое больше, чем с фильтром 8:1. Снижение производительности также уменьшается, поскольку меньшее количество пикселей требует выборки данных с большей анизотропией.
В конце концов, именно дополнительная сложность аппаратного обеспечения по сравнению с этой убывающей отдачей приводит к установлению верхней границы анизотропного качества в конструкции аппаратного обеспечения. Приложения и пользователи затем могут свободно регулировать этот компромисс с помощью настроек драйвера и программного обеспечения до этого порога.
Настоящая анизотропная фильтрация анизотропно исследует текстуру на лету попиксельно на предмет любой ориентации анизотропии.
В графическом оборудовании, как правило, когда выборка текстуры анизотропна, берется несколько проб ( выборок текселей ) текстуры вокруг центральной точки, но на образец образца, отображаемый в соответствии с проецируемой формой текстуры в этом пикселе, [9] хотя более ранние программные методы использовали таблицы суммированных площадей . [10]
Каждый зонд анизотропной фильтрации сам по себе часто представляет собой отфильтрованную выборку карты MIP, что добавляет к процессу дополнительную выборку. Для шестнадцати трилинейных анизотропных выборок может потребоваться 128 выборок из сохраненной текстуры, поскольку для трилинейной фильтрации карт MIP необходимо взять четыре выборки, умноженные на два уровня MIP, а затем для анизотропной выборки (при 16 касаниях) необходимо взять шестнадцать таких проб с трилинейной фильтрацией.
Однако такой уровень сложности фильтрации требуется не всегда. Существуют общедоступные методы уменьшения объема работы, которую должно выполнять оборудование рендеринга видео.
Метод анизотропной фильтрации, наиболее часто реализуемый на графическом оборудовании, представляет собой композицию отфильтрованных значений пикселей только из одной строки образцов карты MIP. В общем, метод построения текстурного фильтра, возникающий в результате заполнения несколькими зондами выборки проецируемых пикселей в пространстве текстур, называется «сборкой посадочного места», даже если детали реализации различаются. [11] [12] [13]
Требуемое количество выборок может сделать анизотропную фильтрацию чрезвычайно интенсивной по полосе пропускания . Обычно используется несколько текстур; Каждый образец текстуры может иметь размер четырех или более байтов, поэтому для каждого анизотропного пикселя может потребоваться 512 байт из памяти текстур, хотя для уменьшения этого объема обычно используется сжатие текстур .
Устройство отображения видео может легко содержать более двух миллионов пикселей, а желаемая частота кадров приложения часто превышает 60 кадров в секунду. В результате требуемая пропускная способность текстурной памяти может вырасти до больших значений. Диапазоны пропускной способности конвейера в сотни гигабайт в секунду для операций рендеринга текстур не являются чем-то необычным, когда задействованы операции анизотропной фильтрации. [14]
К счастью, несколько факторов смягчают ситуацию в пользу повышения производительности: