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 GeForce3 Ti200/500 и ATI RADEON 8500LE/8500, то мы рассмотрели работу этих карт при форсировании анизотропии в 3DMark2001. При этом использовался не самый высокий уровень фильтрации у GeForce3 (Level 4), и наивысшая на сегодня фильтрация у RADEON 8500. Почему такая несправедливость? Ниже будет понятно.

3DMark2001









Производительность у GeForce4 при активной анизотропии в данном материале еще не рассматривалась! Прошу прочитать обзор по GeForce4

Обратите внимание на то, что почти везде падение производительности у RADEON 8500 при максимально возможной анизотропной фильтрации меньше, чем у GeForce3 Ti 500 при Level4, что является средним уровнем фильтрации. Это четко доказывает то, что демонстрировать Level8 нет необходимости, ибо уже ясно, что он проиграет везде и вся. Однако, теперь давайте еще раз, но более подробно, посмотрим на качество, которое нам дает форсирование этой функции у обеих карт.

NVIDIA GeForce3 Ti 500 ATi RADEON 8500
Game 1
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
-
Game 2
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
Game 4
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
-
-
-

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

Теперь насчет анизотропной фильтрации. Прекрасно видно, что качество оной у RADEON 8500 выше, чем у GeForce3. Да, разумеется, при этом была максимальная степень у RADEON 8500 и средняя у GeForce3, однако исследования выше показали, что даже при Level4 падение производительности у GeForce3 очень велико (и почти всегда выше, чем у RADEON 8500). В следующем выпуске мы наряду с исследованием анизотропии у GeForce4 проведем анализ Level8 у GeForce3/4.

Я хочу привести еще два примера, где можно сравнить качество фильтраций у обеих карт.

Unreal, Direct3D, v.2.26

NVIDIA GeForce3 Ti 500 ATi RADEON 8500
Пример 1
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
Пример 2
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-

Эти примеры иллюстрируют по сути подтверждение того, что было сказано в отношении 3DMark2001.

Таким образом, можно констатировать, что новый почин программистов от ATI по форсированию анизотропной фильтрации в Direct3d удался. Разумеется, есть и огрехи, но они уже относятся к способам реализации анизотропии у ATI и NVIDIA.

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

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

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




Как мы видим, в весьма выгодном положении NVIDIA GeForce2-карты, а также клоны ATI RADEON. Почему же так сильно падает производительность у NVIDIA GeForce3? Частично мы отвечали на этой вопрос в обзоре по этому GPU. Я лишь напомню, что GeForce2-карты — очень несбалансированы, поэтому у них графический процессор подчас простаивает в ожидании прокачки данных через шину памяти. Почему бы ему тогда не заняться дополнительным делом — поработать над анизотропией? Поэтому и падение производительности при активизации анизотропной фильтрации не столь велико. А GeForce3 — очень сбалансированный чип, отсюда и вывод: когда он занимается анизотропией, то это сразу же сказывается на общей производительности, так как в обычном режиме чипу не приходится "ожидать" более медленную память. Впрочем, ниже мы еще посмотрим на качество предоставляемой нам анизотропной фильтрации всеми участниками соревнований. И быть может, что быстр и скор, но выполнил свою задачу "тяп-ляп".

Обратите внимание на катастрофическое падение производительности у STM KYRO (у KYRO II ситуация с анизотропией аналогичная, только надо отметить, что форсирование этой фильтрации в OpenGL не работает, поэтому увидеть ее можно только в играх, поддерживающих анизотропию самостоятельно). Такое падение делает наличие у KYRO анизотропии фикцией, и только. А теперь давайте посмотрим на качество анизотропии, чтобы убедиться в том, что малая потеря в производительности еще не гарантирует отличное качество этой фильтрации.

Для начала покажем так сказать "эталонный" скриншот, демонстрирующий... отсутствие анизотропии, где видна по всей своей красе трилинейная фильтрация (поклонники 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

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

    


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

NVIDIA GeForce3

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

    


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

    


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

    

Интересно отметить, что Level 2 анизотропия у GeForce3 по качеству чуть выше, чем аналогичная у GeForce2, но при этом и падение производительности больше. Остальные типы анизотропной фильтрации можно посмотреть только ради интереса, вследствие того, что ради них приходится жертвовать очень большой долей производительности (и обратите внимание на то, что разницы в качестве между Level4 и Level8 почти нет). Должен сказать, что жесткое соответствие типа анизотропии числу текстурных сэмплов — это всего лишь предположение, так как нигде это не регламентируется. Вполне возможно, что число текстурных сэмплов соответствует Level 2,4,8 как 8, 16 или 32, но при этом задается максимальное количество, то есть предел числа выборки сэмплов, на практике же процессор может использовать гораздо меньшие значения в зависимости от сцены. То есть присутствует так называемая адаптивная анизотропия, иначе говоря "приспосабливаемая". Повторяю, что это всего лишь предположения, тем более, что способы реализации анизотропной фильтрации у NVIDIA, например, совершенно иные, чем у ATI. Поэтому мы можем только сравнивать качество и степень расплаты производительностью за него.




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

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 GeForce3 Ti200/500 и ATI RADEON 8500LE/8500, то мы рассмотрели работу этих карт при форсировании анизотропии в 3DMark2001. При этом использовался не самый высокий уровень фильтрации у GeForce3 (Level 4), и наивысшая на сегодня фильтрация у RADEON 8500. Почему такая несправедливость? Ниже будет понятно.

3DMark2001









Производительность у GeForce4 при активной анизотропии в данном материале еще не рассматривалась! Прошу прочитать обзор по GeForce4

Обратите внимание на то, что почти везде падение производительности у RADEON 8500 при максимально возможной анизотропной фильтрации меньше, чем у GeForce3 Ti 500 при Level4, что является средним уровнем фильтрации. Это четко доказывает то, что демонстрировать Level8 нет необходимости, ибо уже ясно, что он проиграет везде и вся. Однако, теперь давайте еще раз, но более подробно, посмотрим на качество, которое нам дает форсирование этой функции у обеих карт.

NVIDIA GeForce3 Ti 500 ATi RADEON 8500
Game 1
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
-
Game 2
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
Game 4
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
-
-
-

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

Теперь насчет анизотропной фильтрации. Прекрасно видно, что качество оной у RADEON 8500 выше, чем у GeForce3. Да, разумеется, при этом была максимальная степень у RADEON 8500 и средняя у GeForce3, однако исследования выше показали, что даже при Level4 падение производительности у GeForce3 очень велико (и почти всегда выше, чем у RADEON 8500). В следующем выпуске мы наряду с исследованием анизотропии у GeForce4 проведем анализ Level8 у GeForce3/4.

Я хочу привести еще два примера, где можно сравнить качество фильтраций у обеих карт.

Unreal, Direct3D, v.2.26

NVIDIA GeForce3 Ti 500 ATi RADEON 8500
Пример 1
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-
Пример 2
Билинейная фильтрация
Анизотропия Level4Анизотропия x16
Анизотропия Level2-
-
-

Эти примеры иллюстрируют по сути подтверждение того, что было сказано в отношении 3DMark2001.

Таким образом, можно констатировать, что новый почин программистов от ATI по форсированию анизотропной фильтрации в Direct3d удался. Разумеется, есть и огрехи, но они уже относятся к способам реализации анизотропии у ATI и NVIDIA.

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

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

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




Как мы видим, в весьма выгодном положении NVIDIA GeForce2-карты, а также клоны ATI RADEON. Почему же так сильно падает производительность у NVIDIA GeForce3? Частично мы отвечали на этой вопрос в обзоре по этому GPU. Я лишь напомню, что GeForce2-карты — очень несбалансированы, поэтому у них графический процессор подчас простаивает в ожидании прокачки данных через шину памяти. Почему бы ему тогда не заняться дополнительным делом — поработать над анизотропией? Поэтому и падение производительности при активизации анизотропной фильтрации не столь велико. А GeForce3 — очень сбалансированный чип, отсюда и вывод: когда он занимается анизотропией, то это сразу же сказывается на общей производительности, так как в обычном режиме чипу не приходится "ожидать" более медленную память. Впрочем, ниже мы еще посмотрим на качество предоставляемой нам анизотропной фильтрации всеми участниками соревнований. И быть может, что быстр и скор, но выполнил свою задачу "тяп-ляп".

Обратите внимание на катастрофическое падение производительности у STM KYRO (у KYRO II ситуация с анизотропией аналогичная, только надо отметить, что форсирование этой фильтрации в OpenGL не работает, поэтому увидеть ее можно только в играх, поддерживающих анизотропию самостоятельно). Такое падение делает наличие у KYRO анизотропии фикцией, и только. А теперь давайте посмотрим на качество анизотропии, чтобы убедиться в том, что малая потеря в производительности еще не гарантирует отличное качество этой фильтрации.

Для начала покажем так сказать "эталонный" скриншот, демонстрирующий... отсутствие анизотропии, где видна по всей своей красе трилинейная фильтрация (поклонники 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

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

    


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

NVIDIA GeForce3

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

    


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

    


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

    

Интересно отметить, что Level 2 анизотропия у GeForce3 по качеству чуть выше, чем аналогичная у GeForce2, но при этом и падение производительности больше. Остальные типы анизотропной фильтрации можно посмотреть только ради интереса, вследствие того, что ради них приходится жертвовать очень большой долей производительности (и обратите внимание на то, что разницы в качестве между Level4 и Level8 почти нет). Должен сказать, что жесткое соответствие типа анизотропии числу текстурных сэмплов — это всего лишь предположение, так как нигде это не регламентируется. Вполне возможно, что число текстурных сэмплов соответствует Level 2,4,8 как 8, 16 или 32, но при этом задается максимальное количество, то есть предел числа выборки сэмплов, на практике же процессор может использовать гораздо меньшие значения в зависимости от сцены. То есть присутствует так называемая адаптивная анизотропия, иначе говоря "приспосабливаемая". Повторяю, что это всего лишь предположения, тем более, что способы реализации анизотропной фильтрации у NVIDIA, например, совершенно иные, чем у ATI. Поэтому мы можем только сравнивать качество и степень расплаты производительностью за него.




Комментарии?  Поправки?  Дополнения? Anvakams@ixbt.com


Комментарии?  Поправки?  Дополнения? Anvakams@ixbt.com
на главную страницуна главную страницуна главную страницу

Новости | 3D-Видео, тюнеры и LCD | iT-Среда | MacLife | Мобильные устройства | Ноутбуки | Носители информации | Платформа ПК | Приложения и утилиты | Принтеры и периферия | ProAudio | Проекторы и ТВ | Сети и серверы | Цифровой звук | Цифровое видео | Цифровое фото | Карта сайта | Поиск

Copyright © by iXBT.com, 1997—2012. Produced by iXBT.com