3DGiТоги март 2002 года: Исследование анизотропной фильтрации


Как уже широко известно, видеочипсеты NVIDIA GeForce256, GeForce2, GeForce3, GeForce4, ATI RADEON, RADEON 7500, RADEON 8500, STM KYRO, KYRO II обладают такой ныне популярной функцией, как анизотропная фильтрация.

Уже на протяжении года мы уделяем этой функции самое пристальное внимание. И это неудивительно, поскольку она позволяет значительно улучшить качество восприятия трехмерных сцен. Кратко я напомню, что для устранения артефактов (т.н. песка) по мере удаления текстурированных объектов от наблюдателя применяется технология MIP-mapping-а, создающая для каждой текстуры набор ее копий разной детализации (т.н. MIP-уровней), выбираемых при построении изображения в зависимости от расстояния от масштаба с которым текстура в результате закраски проецируется на экран. Чем дальше от нас удаляется треугольник, тем менее детализованный и, следовательно, более размытый MIP-уровень текстуры будет использован. Это соответствует нашему зрению (дальние объекты мы видим уже не такими четкими, как близкие). Резкими границами между MIP-уровнями "занимается" трилинейная фильтрация, сглаживая эти переходы с помощью линейной интерполяции между двумя соседними уровнями. Таким образом, билинейная фильтрация занимается удалением резких границ между пикселами текстуры (дабы мы видели стены и пол покрытыми не квадратиками, а сглажеными и более похожими на естественную плавно меняющуюся окраску материалами), а трилинейная дополнительно размывает картину, еще раз интерполируя результаты двух билинейно фильтрованных MIP-уровней. В результате четко видны только самые близко расположенные объекты.

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

Давайте рассмотрим работу этой функции на двух примерах: 3DMark2001 (Direct3D) и Serious Sam (OpenGL). Все выше перечисленные карты поддерживают использование анизотропии, если того пожелает приложение (игра), и лишь некоторые могут форсировать включение анизотропной фильтрации вне зависимости от того — понимает игра эту функцию или нет. Практически все карты умеют это делать в OpenGL даже без применения утилит-твикеров, то есть возможности включения форсирования анизотропии имеются в настройках драйверов. Должен отметить как недостаток драйверов от NVIDIA версий 21.* и более младших, то, что флажок активизации этой функции в настройках драйверов работает некорректно и не дает возможности выбора уровня фильтрации (особенно это касается GeForce3). Только в 22.* и более поздних версиях появилось корректное форсирование анизотропии с выбором ее уровня. Однако о недостатках этих драйверов я уже писал на главной странице, поэтому все же рекомендую использовать утилиту RivaTuner для беспроблемной настройки (в том числе и управления анизотропией) карт на чипах от NVIDIA.

Анизотропия в Direct3D: NVIDIA GeForce3/4 и ATI RADEON 8500

Мы знаем, что реализация этой функции у разных фирм-производителей видеопроцессоров — различная. Да и скоростные характеристики анизотропий, скажем, от ATI и от NVIDIA, сильно отличаются. Схоже только результирующее качество.

Так ли это? Постоянные читатели наших материалов знают, что анизотропия от NVIDIA (речь идет о GeForce3) отличается высоким качеством, но и чрезмерным аппетитом. Падение производительности может достигать до 50%! Анизотропия от ATI (речь идет о RADEON 8500) гораздо более дешевая и, как считалось до недавнего времени, имеет не меньшее качество.

Как обычно, качество анизотропии оценивается на примерах стен, полов, площадей и т.п. Читатели видят четкие линии и радуются качеству этой функции. Но вот бдительные читатели заметили, что не все гладко в "канадском государстве". На некоторых поверхностях, находящихся под разными углами, отличными от 90 градусов, RADEON 8500 просто не воспроизводит анизотропию. Посмотрите на скриншоты, полученные в игре Serious Sam при повороте наблюдателя относительно стены:

ATI RADEON 8500

       
       


NVIDIA GeForce4

       
       

Для удобства восприятия я сделал анимированные GIF-файлы:

ATI RADEON 8500 NVIDIA GeForce4

Прекрасно видно, что на ряде углов зрения четкости у RADEON 8500 как ни бывало. Не это ли и является причиной вычислительной дешевизны анизотропии от ATI? А вот у NVIDIA GeForce3 и GeForce4 все "честно", если можно, конечно, считать способы реализации этой функции честными и нечестными. Плохо, что производители не предоставляют пользователям сознательного выбора: использовать честную анизотропию с большими потерями или "аппроксимацию", но более дешевую. Пока такой выбор может быть осуществлен только косвенно — выбором карты.

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

Различия подходов NVIDIA и ATI к практической реализации анизотропной фильтрации

Если билинейная и трилинейная фильтрация достаточно четко опеределены математически (что, впрочем, не помешало NVIDIA в свое время называть в некоторых документах трилинейной фильтрацией некий метод аппроксимации — дизеринг значений из разных MIP уровней), то термин "анизотропная фильтрация" не подразумевает каких-то конкретных алгоритмов ее реализации. Подходы NVIDIA и ATI в этом вопросе существенно разнятся. Давайте (схематически) познакомимся с ними:

       

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

Подход ATI более ограничен, но и более производителен:

       

Как мы видим, значения выбираются цепочкой, причем она может быть ориентирована в плоскости текстуры строго горизонтально или вертикально. Т.е. для близких к ортам значений проекционного вектора (стрелка на схеме) качество фильтрации будет высоким, но по мере его поворота эффект будет сходить на нет, вплоть до полной потери смысла в использовании такого метода. В реальных приложениях это выразится следующим образом — на стенах или потолках фильтрация будет работать на все сто, в то время как на наклоненных под непрямыми углами поверхностях ее результат будет все менее и менее заметен по мере приближения к критическому углу в 45 градусов (что мы и наблюдали выше). Но, с другой стороны, подобный подход гораздо более выгоден с вычислительной точки зрения. Во-первых, мы выбираем организованные цепочки размером от 2хN точек текстуры (на схеме квадратики), которые можно эффективно выбрать за N/2 тактов с помощью стандартных, рассчитанных на билинейную фильтрацию текстурных блоков. Затем, мы фильтруем значения (на схеме кружки), используя каждый раз одни и те же смещения относительно дискретных точек исходной текстуры. Подобная операция может быть выполнена за один такт специальной схемой из десяти умножителей, встроенной в текстурный блок, благо само значение параметров интерполяции вычисляется один раз и остается неизменным для всех 1–5 вычисляемых точек. Кроме того, мы можем существенно ускорить этот и так достаточно производительный алгоритм, заранее вычислив специально сжатые по осям варианты текстуры (т.н. RIP mapping).

Суммируя вышесказанное, отметим, что подход NVIDIA требует большее время на вычисление результата, но и является более "честным", одинаково хорошо справляясь с объектами, расположенными под любыми углами наклона, а не только строго горизонтально или вертикально по отношению к наблюдателю. В методе ATI заложено свое рациональное зерно — большинство современных игр изобилуют в основном горизонтальными и вертикальными поверхностями.

До последнего времени козырем карт на базе GeForce-процессоров была возможность форсирования анизотропии в Direct3D (разумеется, неофициально, а через внесение изменений в Registry или через тот же RivaTuner), чего были лишены карты на базе ATI RADEON. Последние могли довольствоваться только возможностями игр, понимающих эту функцию.

И вот, начиная с версии драйверов 9,003 (для Windows 9x/ME) и 6.006 (для Windows 2000/XP), такая возможность появилась и у RADEON. У версии до 9.012 — неофициально, а через Registry:



Обратите внимание на число в левом поле, обведенное красным. Оно может быть разным на разных компьютерах, поэтому вначале убедитесь, что вы находитесь в нужной ветке. Надо создать переменную AnisoDegree, которой и присваивать уровень анизотропии: 4,16,64,128. Сразу скажу, что пока наивысшим уровнем является 16, активизация более старших степеней желаемого результата не приносит, производительность и качество остаются такими же, что и при х16. Версии драйверов 9.012 и выше уже обеспечивают нормальное функционирование анизотропии в Direct3D через настройки.

Ниже мы рассмотрели работу ряда видеокарт при активной анизотропии, куда вошли не только детища от NVIDIA и ATI, но и STM/PowerVR KYRO II. Итак, представляем:

  • ATI RADEON 8500 64MB DDR 3,6 ns (275/550 MHz)
  • ATI RADEON 7500 64MB DDR 4 ns (290/460 MHz)
  • ATI RADEON 7200 64MB SDR 6 ns (155/155 MHz)
  • NVIDIA GeForce4 Ti4600 128MB DDR 2,8 ns (300/650 MHz)
  • NVIDIA GeForce3 Ti500 64MB DDR 3,8 ns (240/500 MHz)
  • NVIDIA GeForce4 MX 440 64MB DDR 5 ns (270/400 MHz)
  • NVIDIA GeForce2 Ti 64MB DDR 5 ns (250/400 MHz)
  • NVIDIA GeForce2 MX400 32MB SDR 5,5 ns (200/183 MHz)
  • STMicroelectronics KYRO II 64MB SDR 5 ns (175/175 MHz)

3DMark2001





Как видно, лидер по падению производительности — KYRO II. Впрочем, мы об этом уже писали неоднократно в наших материалах: эта функция у KYRO/KYRO II является невостребованной именно из-за такого катастрофического падения скорости. Далее идет GeForce4 Ti и почти с ним на одном уровне — GeForce3 Ti 500. Интересно отметить, что подчас GeForce4 Ti уже выдает чуть меньшее падение, чем Ti 500. А ведь совсем недавно, когда рассматривался обзор GeForce4 Ti мы сетовали на то, что такая низкая производительность при активной анизотропной фильтрации сводит на нет все преимущество по скорости между GeForce4 Ti и GeForce3 Ti 500. Вышли новые драйверы, и положение немного исправилось.

Интересно отметить, что падение скорости у RADEON 8500 является максимальным из всех карт на процессорах от ATI, однако оно сильно меньше, чем у GeForce3/4. А вот RADEON 7500 лучше всех "справился" с задачей, почти ничего не потеряв из скорости.

Сразу хочу обратить внимание на то, что в Direct3D у RADEON 8500 смещено значение LOD BIAS в сторону увеличения четкости текстур, поэтому при выключенной анизотропии кажется, что четкость у этой карты выше, чем у GeForce3. Это впечатление обманчиво, так как красота видна только на скриншотах, а на деле такой сдвиг LOD BIAS приводит к возникновению "шума текстур", что заметно в виде мелькающих точек, так называемого "песочка".

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

А теперь перейдем к OpenGL, и к тесту Serious Sam.

Анизотропия OpenGL на примере Serious Sam

Вначале давайте посмотрим на падение производительности у перечисленных выше карт при форсировании анизотропной фильтрации:



Мы видим из ряда вон выходящую картину, когда у GeForce4 MX440 скорость при анизотропии получилась даже выше, чем без нее. Мы не смогли объяснить сей феномен, поскольку протестировали 5 раз и получили одинаковый результат (поэтому такая высокая погрешность исключается). В остальном картина схожа с предыдущими тестами на 3DMark2001, за исключением лишь того, что падение производительности у GeForce4Ti уже сравнялось и даже подчас выше, чем у GeForce3 Ti 500.

А теперь посмотрим кратко на качество анизотропии. Для начала покажем так сказать "эталонный" скриншот, демонстрирующий... отсутствие анизотропии, где видна по всей своей красе трилинейная фильтрация (поклонники Voodoo аж крякнут от удовольствия, глядя на размытый пол :-).

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

             


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

STM KYRO / KYRO II

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

             

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

ATI RADEON

Анизотропная (максимальный уровень):

             


Если обратить внимание на вышеприведенные диаграммы падения производительности при активизации анизотропии, то становится очевидно, что нет никакого смысла включать промежуточный (High) уровень, а использовать следует только максимальный (Highest). И, как видим, качество весьма отменное! Тем не менее, должен отметить, что использование промежуточного уровня анизотропии дает артефакт с приближением размытого MIP-уровня:

             


ATI RADEON 7500

Анизотропная (максимальный уровень):

             


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

ATI RADEON 8500

Анизотропная (максимальный уровень):

             


Мы можем наблюдать такое же отличное качество исполнения рассматриваемой функции у RADEON 8500, как и у его предшественников, при этом падение производительности только в высоких разрешениях становится уже ощутимым. И то оно гораздо меньше, чем у соперника — NVIDIA GeForce3. Однако не надо забывать про вышесказанное насчет отсутствия (или снижения качества) анизотропии на наклонных поверхностях при углах близких к 45 градусам. Поэтому невозможно дать однозначную оценку.

NVIDIA GeForce2 Pro/Ti

Анизотропная фильтрация (Level 2):

             


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

NVIDIA GeForce3 / GeForce4

Анизотропная фильтрация (Level 2 — он же и у GeForce4 MX):

             


Анизотропная фильтрация (Level 4):

             


Анизотропная фильтрация (Level 8):

             

Конечно, качество анизотропии Level8 выше всех похвал, однако мы должны помнить про сильнейшее падение производительности при этом. И еще раз отмечу, что в последних версиях драйверов наметилась тенденция на исправление ситуации, когда у GeForce4 Ti скорость падает сильнее, чем у GeForce3 Ti 500, хотя видимых тому причин нет.




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

3DGiТоги марта 2002 года: Исследование анизотропной фильтрации

3DGiТоги март 2002 года: Исследование анизотропной фильтрации

Как уже широко известно, видеочипсеты NVIDIA GeForce256, GeForce2, GeForce3, GeForce4, ATI RADEON, RADEON 7500, RADEON 8500, STM KYRO, KYRO II обладают такой ныне популярной функцией, как анизотропная фильтрация.

Уже на протяжении года мы уделяем этой функции самое пристальное внимание. И это неудивительно, поскольку она позволяет значительно улучшить качество восприятия трехмерных сцен. Кратко я напомню, что для устранения артефактов (т.н. песка) по мере удаления текстурированных объектов от наблюдателя применяется технология MIP-mapping-а, создающая для каждой текстуры набор ее копий разной детализации (т.н. MIP-уровней), выбираемых при построении изображения в зависимости от расстояния от масштаба с которым текстура в результате закраски проецируется на экран. Чем дальше от нас удаляется треугольник, тем менее детализованный и, следовательно, более размытый MIP-уровень текстуры будет использован. Это соответствует нашему зрению (дальние объекты мы видим уже не такими четкими, как близкие). Резкими границами между MIP-уровнями "занимается" трилинейная фильтрация, сглаживая эти переходы с помощью линейной интерполяции между двумя соседними уровнями. Таким образом, билинейная фильтрация занимается удалением резких границ между пикселами текстуры (дабы мы видели стены и пол покрытыми не квадратиками, а сглажеными и более похожими на естественную плавно меняющуюся окраску материалами), а трилинейная дополнительно размывает картину, еще раз интерполируя результаты двух билинейно фильтрованных MIP-уровней. В результате четко видны только самые близко расположенные объекты.

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

Давайте рассмотрим работу этой функции на двух примерах: 3DMark2001 (Direct3D) и Serious Sam (OpenGL). Все выше перечисленные карты поддерживают использование анизотропии, если того пожелает приложение (игра), и лишь некоторые могут форсировать включение анизотропной фильтрации вне зависимости от того — понимает игра эту функцию или нет. Практически все карты умеют это делать в OpenGL даже без применения утилит-твикеров, то есть возможности включения форсирования анизотропии имеются в настройках драйверов. Должен отметить как недостаток драйверов от NVIDIA версий 21.* и более младших, то, что флажок активизации этой функции в настройках драйверов работает некорректно и не дает возможности выбора уровня фильтрации (особенно это касается GeForce3). Только в 22.* и более поздних версиях появилось корректное форсирование анизотропии с выбором ее уровня. Однако о недостатках этих драйверов я уже писал на главной странице, поэтому все же рекомендую использовать утилиту RivaTuner для беспроблемной настройки (в том числе и управления анизотропией) карт на чипах от NVIDIA.

Анизотропия в Direct3D: NVIDIA GeForce3/4 и ATI RADEON 8500

Мы знаем, что реализация этой функции у разных фирм-производителей видеопроцессоров — различная. Да и скоростные характеристики анизотропий, скажем, от ATI и от NVIDIA, сильно отличаются. Схоже только результирующее качество.

Так ли это? Постоянные читатели наших материалов знают, что анизотропия от NVIDIA (речь идет о GeForce3) отличается высоким качеством, но и чрезмерным аппетитом. Падение производительности может достигать до 50%! Анизотропия от ATI (речь идет о RADEON 8500) гораздо более дешевая и, как считалось до недавнего времени, имеет не меньшее качество.

Как обычно, качество анизотропии оценивается на примерах стен, полов, площадей и т.п. Читатели видят четкие линии и радуются качеству этой функции. Но вот бдительные читатели заметили, что не все гладко в "канадском государстве". На некоторых поверхностях, находящихся под разными углами, отличными от 90 градусов, RADEON 8500 просто не воспроизводит анизотропию. Посмотрите на скриншоты, полученные в игре Serious Sam при повороте наблюдателя относительно стены:

ATI RADEON 8500

       
       


NVIDIA GeForce4

       
       

Для удобства восприятия я сделал анимированные GIF-файлы:

ATI RADEON 8500 NVIDIA GeForce4

Прекрасно видно, что на ряде углов зрения четкости у RADEON 8500 как ни бывало. Не это ли и является причиной вычислительной дешевизны анизотропии от ATI? А вот у NVIDIA GeForce3 и GeForce4 все "честно", если можно, конечно, считать способы реализации этой функции честными и нечестными. Плохо, что производители не предоставляют пользователям сознательного выбора: использовать честную анизотропию с большими потерями или "аппроксимацию", но более дешевую. Пока такой выбор может быть осуществлен только косвенно — выбором карты.

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

Различия подходов NVIDIA и ATI к практической реализации анизотропной фильтрации

Если билинейная и трилинейная фильтрация достаточно четко опеределены математически (что, впрочем, не помешало NVIDIA в свое время называть в некоторых документах трилинейной фильтрацией некий метод аппроксимации — дизеринг значений из разных MIP уровней), то термин "анизотропная фильтрация" не подразумевает каких-то конкретных алгоритмов ее реализации. Подходы NVIDIA и ATI в этом вопросе существенно разнятся. Давайте (схематически) познакомимся с ними:

       

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

Подход ATI более ограничен, но и более производителен:

       

Как мы видим, значения выбираются цепочкой, причем она может быть ориентирована в плоскости текстуры строго горизонтально или вертикально. Т.е. для близких к ортам значений проекционного вектора (стрелка на схеме) качество фильтрации будет высоким, но по мере его поворота эффект будет сходить на нет, вплоть до полной потери смысла в использовании такого метода. В реальных приложениях это выразится следующим образом — на стенах или потолках фильтрация будет работать на все сто, в то время как на наклоненных под непрямыми углами поверхностях ее результат будет все менее и менее заметен по мере приближения к критическому углу в 45 градусов (что мы и наблюдали выше). Но, с другой стороны, подобный подход гораздо более выгоден с вычислительной точки зрения. Во-первых, мы выбираем организованные цепочки размером от 2хN точек текстуры (на схеме квадратики), которые можно эффективно выбрать за N/2 тактов с помощью стандартных, рассчитанных на билинейную фильтрацию текстурных блоков. Затем, мы фильтруем значения (на схеме кружки), используя каждый раз одни и те же смещения относительно дискретных точек исходной текстуры. Подобная операция может быть выполнена за один такт специальной схемой из десяти умножителей, встроенной в текстурный блок, благо само значение параметров интерполяции вычисляется один раз и остается неизменным для всех 1–5 вычисляемых точек. Кроме того, мы можем существенно ускорить этот и так достаточно производительный алгоритм, заранее вычислив специально сжатые по осям варианты текстуры (т.н. RIP mapping).

Суммируя вышесказанное, отметим, что подход NVIDIA требует большее время на вычисление результата, но и является более "честным", одинаково хорошо справляясь с объектами, расположенными под любыми углами наклона, а не только строго горизонтально или вертикально по отношению к наблюдателю. В методе ATI заложено свое рациональное зерно — большинство современных игр изобилуют в основном горизонтальными и вертикальными поверхностями.

До последнего времени козырем карт на базе GeForce-процессоров была возможность форсирования анизотропии в Direct3D (разумеется, неофициально, а через внесение изменений в Registry или через тот же RivaTuner), чего были лишены карты на базе ATI RADEON. Последние могли довольствоваться только возможностями игр, понимающих эту функцию.

И вот, начиная с версии драйверов 9,003 (для Windows 9x/ME) и 6.006 (для Windows 2000/XP), такая возможность появилась и у RADEON. У версии до 9.012 — неофициально, а через Registry:



Обратите внимание на число в левом поле, обведенное красным. Оно может быть разным на разных компьютерах, поэтому вначале убедитесь, что вы находитесь в нужной ветке. Надо создать переменную AnisoDegree, которой и присваивать уровень анизотропии: 4,16,64,128. Сразу скажу, что пока наивысшим уровнем является 16, активизация более старших степеней желаемого результата не приносит, производительность и качество остаются такими же, что и при х16. Версии драйверов 9.012 и выше уже обеспечивают нормальное функционирование анизотропии в Direct3D через настройки.

Ниже мы рассмотрели работу ряда видеокарт при активной анизотропии, куда вошли не только детища от NVIDIA и ATI, но и STM/PowerVR KYRO II. Итак, представляем:

  • ATI RADEON 8500 64MB DDR 3,6 ns (275/550 MHz)
  • ATI RADEON 7500 64MB DDR 4 ns (290/460 MHz)
  • ATI RADEON 7200 64MB SDR 6 ns (155/155 MHz)
  • NVIDIA GeForce4 Ti4600 128MB DDR 2,8 ns (300/650 MHz)
  • NVIDIA GeForce3 Ti500 64MB DDR 3,8 ns (240/500 MHz)
  • NVIDIA GeForce4 MX 440 64MB DDR 5 ns (270/400 MHz)
  • NVIDIA GeForce2 Ti 64MB DDR 5 ns (250/400 MHz)
  • NVIDIA GeForce2 MX400 32MB SDR 5,5 ns (200/183 MHz)
  • STMicroelectronics KYRO II 64MB SDR 5 ns (175/175 MHz)

3DMark2001





Как видно, лидер по падению производительности — KYRO II. Впрочем, мы об этом уже писали неоднократно в наших материалах: эта функция у KYRO/KYRO II является невостребованной именно из-за такого катастрофического падения скорости. Далее идет GeForce4 Ti и почти с ним на одном уровне — GeForce3 Ti 500. Интересно отметить, что подчас GeForce4 Ti уже выдает чуть меньшее падение, чем Ti 500. А ведь совсем недавно, когда рассматривался обзор GeForce4 Ti мы сетовали на то, что такая низкая производительность при активной анизотропной фильтрации сводит на нет все преимущество по скорости между GeForce4 Ti и GeForce3 Ti 500. Вышли новые драйверы, и положение немного исправилось.

Интересно отметить, что падение скорости у RADEON 8500 является максимальным из всех карт на процессорах от ATI, однако оно сильно меньше, чем у GeForce3/4. А вот RADEON 7500 лучше всех "справился" с задачей, почти ничего не потеряв из скорости.

Сразу хочу обратить внимание на то, что в Direct3D у RADEON 8500 смещено значение LOD BIAS в сторону увеличения четкости текстур, поэтому при выключенной анизотропии кажется, что четкость у этой карты выше, чем у GeForce3. Это впечатление обманчиво, так как красота видна только на скриншотах, а на деле такой сдвиг LOD BIAS приводит к возникновению "шума текстур", что заметно в виде мелькающих точек, так называемого "песочка".

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

А теперь перейдем к OpenGL, и к тесту Serious Sam.

Анизотропия OpenGL на примере Serious Sam

Вначале давайте посмотрим на падение производительности у перечисленных выше карт при форсировании анизотропной фильтрации:



Мы видим из ряда вон выходящую картину, когда у GeForce4 MX440 скорость при анизотропии получилась даже выше, чем без нее. Мы не смогли объяснить сей феномен, поскольку протестировали 5 раз и получили одинаковый результат (поэтому такая высокая погрешность исключается). В остальном картина схожа с предыдущими тестами на 3DMark2001, за исключением лишь того, что падение производительности у GeForce4Ti уже сравнялось и даже подчас выше, чем у GeForce3 Ti 500.

А теперь посмотрим кратко на качество анизотропии. Для начала покажем так сказать "эталонный" скриншот, демонстрирующий... отсутствие анизотропии, где видна по всей своей красе трилинейная фильтрация (поклонники Voodoo аж крякнут от удовольствия, глядя на размытый пол :-).

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

             


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

STM KYRO / KYRO II

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

             

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

ATI RADEON

Анизотропная (максимальный уровень):

             


Если обратить внимание на вышеприведенные диаграммы падения производительности при активизации анизотропии, то становится очевидно, что нет никакого смысла включать промежуточный (High) уровень, а использовать следует только максимальный (Highest). И, как видим, качество весьма отменное! Тем не менее, должен отметить, что использование промежуточного уровня анизотропии дает артефакт с приближением размытого MIP-уровня:

             


ATI RADEON 7500

Анизотропная (максимальный уровень):

             


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

ATI RADEON 8500

Анизотропная (максимальный уровень):

             


Мы можем наблюдать такое же отличное качество исполнения рассматриваемой функции у RADEON 8500, как и у его предшественников, при этом падение производительности только в высоких разрешениях становится уже ощутимым. И то оно гораздо меньше, чем у соперника — NVIDIA GeForce3. Однако не надо забывать про вышесказанное насчет отсутствия (или снижения качества) анизотропии на наклонных поверхностях при углах близких к 45 градусам. Поэтому невозможно дать однозначную оценку.

NVIDIA GeForce2 Pro/Ti

Анизотропная фильтрация (Level 2):

             


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

NVIDIA GeForce3 / GeForce4

Анизотропная фильтрация (Level 2 — он же и у GeForce4 MX):

             


Анизотропная фильтрация (Level 4):

             


Анизотропная фильтрация (Level 8):

             

Конечно, качество анизотропии Level8 выше всех похвал, однако мы должны помнить про сильнейшее падение производительности при этом. И еще раз отмечу, что в последних версиях драйверов наметилась тенденция на исправление ситуации, когда у GeForce4 Ti скорость падает сильнее, чем у GeForce3 Ti 500, хотя видимых тому причин нет.