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


Как уже широко известно, видеочипсеты NVIDIA GeForce256, GeForce2, GeForce3, ATI RADEON, RADEON 7500, RADEON 8500, STM KYRO, KYRO II обладают такой ныне популярной функцией, как анизотропная фильтрация. Как и билинейная, она служит для улучшения восприятия наблюдателем трехмерной сцены. Если трилинейная фильтрация служит для размытия границ между MIP-уровнями, обеспечивая плавность размытия текстур по мере удаления от наблюдателя, то анизотропная фильтрация — это как бы более высокая степень билинейной, она работает не на границах MIP-уровней, а по всей сцене. Ее задача — увеличить четкость изображения, не портя при этом результаты работы MIP-mapping-а, то есть разбиения сцены на уровни с разной детализацией текстур. Анизотропия может применяться совместно с трилинейной фильтрацией или без оной. Как и любая функция в трехмерной графике, анизотропная фильтрация не бесплатна, за качество приходится платить производительностью.

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

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

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

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



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

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

3DMark2001



Обратите внимание на то, что почти везде падение производительности у 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). Поэтому нет смысла показывать Level8, при котором, быть может, качество и сравняется с RADEON 8500, но затраты будут настолько сильны, что такая анизотропия мало кому будет нужна.

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

Unreal, Direct3D, v.2.26


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

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

Таким образом, можно констатировать, что новый почин программистов от ATI по форсированию анизотропной фильтрации в Direct3d удался. Разумеется, есть и огрехи. Кстати, они касаются работе анизотропии у RADEON вообще. Дело в том, что у GeForce3 происходит "наложение" фильтрации на всех объекты, вне зависимости от угла наклона поверхностей, а вот у RADEON при некоторых углах наклона поверхностей анизотропия не работает, то есть можно иногда видеть среди четко отраженных поверхностей некоторые размытости. Это явный дефект реализации анизотропии у всех RADEON. Чем ближе угол наклона к 45 градусам, тем чаще можно встретить отсутствие анизотропии или резкое снижение ее качества на таких поверхностях. Возможно с этим связаны меньшие потери в производительности, чем у GeForce3. Кстати, это все относится и к OpenGL-анизотропии.

А теперь как раз перейдем к 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Тоги декабря 2001 года: Исследование анизотропной фильтрации

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

Как уже широко известно, видеочипсеты NVIDIA GeForce256, GeForce2, GeForce3, ATI RADEON, RADEON 7500, RADEON 8500, STM KYRO, KYRO II обладают такой ныне популярной функцией, как анизотропная фильтрация. Как и билинейная, она служит для улучшения восприятия наблюдателем трехмерной сцены. Если трилинейная фильтрация служит для размытия границ между MIP-уровнями, обеспечивая плавность размытия текстур по мере удаления от наблюдателя, то анизотропная фильтрация — это как бы более высокая степень билинейной, она работает не на границах MIP-уровней, а по всей сцене. Ее задача — увеличить четкость изображения, не портя при этом результаты работы MIP-mapping-а, то есть разбиения сцены на уровни с разной детализацией текстур. Анизотропия может применяться совместно с трилинейной фильтрацией или без оной. Как и любая функция в трехмерной графике, анизотропная фильтрация не бесплатна, за качество приходится платить производительностью.

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

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

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

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



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

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

3DMark2001



Обратите внимание на то, что почти везде падение производительности у 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). Поэтому нет смысла показывать Level8, при котором, быть может, качество и сравняется с RADEON 8500, но затраты будут настолько сильны, что такая анизотропия мало кому будет нужна.

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

Unreal, Direct3D, v.2.26


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

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

Таким образом, можно констатировать, что новый почин программистов от ATI по форсированию анизотропной фильтрации в Direct3d удался. Разумеется, есть и огрехи. Кстати, они касаются работе анизотропии у RADEON вообще. Дело в том, что у GeForce3 происходит "наложение" фильтрации на всех объекты, вне зависимости от угла наклона поверхностей, а вот у RADEON при некоторых углах наклона поверхностей анизотропия не работает, то есть можно иногда видеть среди четко отраженных поверхностей некоторые размытости. Это явный дефект реализации анизотропии у всех RADEON. Чем ближе угол наклона к 45 градусам, тем чаще можно встретить отсутствие анизотропии или резкое снижение ее качества на таких поверхностях. Возможно с этим связаны меньшие потери в производительности, чем у GeForce3. Кстати, это все относится и к OpenGL-анизотропии.

А теперь как раз перейдем к 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. Поэтому мы можем только сравнивать качество и степень расплаты производительностью за него.