i3D-Quality — Под микроскопом: Октябрь 2008, Radeon Adaptive Anti-Aliasing в OpenGL


За последние полгода механизм Adaptive Antialiasing (сглаживания прозрачных текстур) в драйверах Catalyst претерпел сразу несколько трансформаций, отследить которые оказалось не так-то просто.

Во-первых, в Catalyst 8.5 в конце мая текущего года в драйвере видеокарт Radeon появилась поддержка AAA для OpenGL-приложений — вещь уникальная, у конкурента подобная функция отсутствует до сих пор. Мы уже было вознамерились её протестировать в одном из ближайших на тот момент выпусков i3D-Quality, но AMD в своей лучшей традиции реализовать-то функцию реализовала, да вот только работала она через пень-колоду и приводила к падениям OpenGL-драйвера в большинстве опробованных нам OpenGL-игр. Поэтому тестирование пришлось отложить на потом.

Во-вторых, в Catalyst 8.8 AMD, по сути, отказалась от сделанного ею ранее механизма гибкой настройки Adaptive AA — пропала возможность выбора режимов AAA Multi-Sampling и Super-Sampling, исчез «ползунок», позволявший регулировать степень «размытости» AAA Multi-Sampling — в целом, всё вернулось к тому виду настройки AAA, который существовал в Catalyst с момента добавления в них этой функции:

Теперь вы снова можете указать лишь хотите ли вы использовать AAA и один из двух доступных уровней его качества — а использовать MS или SS, как сильно «размывать» внутренние края прозрачных текстур и пр. целиком определяется самим драйвером и желаниями программистов компании AMD. В принципе, подход неплохой — при условии, что желания программистов AMD будут всегда совпадать с желаниями пользователя.

Спустя 3 с лишним месяца после декларации о реализации функции AAA в OpenGL AMD наконец-то сделала её рабочей в Catalyst 8.9 — и мы решили посмотреть, действительно ли она работает так, как полагается.

Конфигурация системы

  • Intel Core 2 Duo E8200 / Intel X48 / 4 ГБ DDR2-667 ОЗУ
  • ОС Microsoft Windows Vista 64-bit Service Pack 1
  • AMD Radeon HD 4870 X2, драйвер Catalyst версии 8.10
  • Doom 3, версия 1.31
  • Prey, версия 1.4
  • Star Wars Jedi Knight Jedi Academy, версия 1.01

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

Во всех тестах мы использовали режим MSAA 8x (как показало наше прошлое тестирование, использовать на видеокартах HD 4800 режимы меньшего качества попросту нет смысла). В Doom 3 AA 8x включался в настройках игры, в Jedi Academy и Prey — форсировался средствами драйвера (Prey не позволяет включить из своих настроек AA выше 4x; а в Jedi Academy настроек AA нет вовсе).

Все прочие настройки драйвера Catalyst мы оставляли на их умолчательных значениях.

Внимание: полноразмерные версии скриншотов представлены в формате PNG в полноценном качестве. Размер скриншотов варьируется от 1,5 до 3,5 МБ!

Star Wars Jedi Knight Jedi Academy v1.01

Начнём с самой старой из рассматриваемых игр — и в то же время самой интересной с точки зрения работы функции сглаживания прозрачных текстур в силу наличия внушительного количества всевозможной травы и деревьев на доброй трети игровых уровней.

Без AAA AAA Perf AAA Qual

Результаты работы функции AAA очевидны: при её включении сглаживаются текстуры листвы деревьев в верхней части сцены и текстуры травы в нижней.

Стоить отметить, что переход от «Без ААА» к «ААА Performance» гораздо очевиднее для глаза, нежели переход от «AAA Performance» к «AAA Quality» — любое сглаживание выделяющихся своим алиасингом прозрачных текстур идёт на пользу качеству картинки.

Doom 3 v1.31

Вторая на очереди — уже каноническая игра Doom 3, одновременно являющаяся родоначальником одного из наиболее распространённых в данное время OpenGL-движков.

Без AAA AAA Perf AAA Qual

И снова работа AAA в OpenGL-игре очевидна — «лесенки» на прозрачной текстуре пола сглажены до полного исчезновения.

Интересно также отметить, что в этом случае, в силу меньшего количества алиасинга, разница между отсутствием AAA и режимом Performance на взгляд выглядит не большей, нежели разница между режимами Performance и Quality. Режим Quality устраняет алиасинг полностью.

Prey v1.4

Последний участник нашего тестирования — игра Prey, построенная на всё том же движке id Tech 4, ранее известном как Doom 3 Engine. В Prey регулярно встречается одна и та же прозрачная текстура шестиугольной ячеистой структуры. Мы решили рассмотреть два варианта сглаживания этой текстуры функцией AAA: в режиме mag-фильтрации и в режиме min-фильтрации.

Без AAA AAA Perf AAA Qual

В режиме mag-фильтрации повторяется картина, которую вы могли наблюдать выше на примере Doom 3: явный рост качества антиалиасинга по мере перехода от отсутствия AAA через режим Performance к режиму Quality.

Без AAA AAA Perf AAA Qual

А вот в режиме min-фильтрации картина уже менее очевидная: разглядеть включение AAA еще можно, а вот разницу между режимами Performance и Quality заметить уже довольно трудно.

Производительность

Большой вопрос, однако, заключается в том, что при этом происходит с производительностью.

Так, в древнейшей Jedi Academy производительность сцены, которую вы видите на скриншоте, при включении AAA Performance упала с 75 до 57 fps, а при переходе в режим Quality — понизилась уже до 36 fps, опасно приблизившись к границе играбельности. И это на флагманской видеокарте Radeon HD 4870 X2!

Ради интереса мы посмотрели, как ведёт себя в этих же режимах видеокарта Radeon HD 3870 X2: как и её наследница, она потеряла 50% производительности, опустившись с 52 до 36, а затем до 23 (!) fps.

Впрочем, использованная нами сцена Jedi Academy изобилует прозрачными текстурами, а методика их сглаживания в драйвере Catalyst, судя по визуальным результатам и сопутствующим им падениям производительности, является банальным суперсэмплингом — не удивительно, что даже 4870 X2 потеряла половину своих fps и вышла на границу играбельности в этой игре пятилетней давности.

Чтобы проверить падение от включения AAA в OpenGL в более типичной OpenGL-игре мы решили снова воспользоваться одной из удобных тестовых утилит сайта hocbench.com и протестировали работу игры Prey в разных разрешениях и разных режимах AAA:

Очевидно, что режим без AAA упирается в возможности нашего CPU, поэтому видеокарта 4870 X2 выдаёт близкие результаты по всему спектру разрешений экрана.

Однако уже после включения AAA Performance производительность по мере роста разрешения начинает падать.

В режиме же Quality в разрешении 1920х1200, в котором наименее проявляется нехватка CPU-мощности, Radeon HD 4870 X2 снова, как и в случае Jedi Academy, теряет почти половину своей производительности. Причём, огромное (почти на 30%) падение производительности имеется даже в очень низком по сегодняшним меркам разрешении 1280х1024.

Выводы

Так ли уж нужна нам функция сглаживания прозрачных текстур в OpenGL-приложениях в настоящее время?

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

С другой стороны, OpenGL-игр очень мало, и львиная их доля сейчас использует движок id Tech 4, который в своей последней версии (Quake 4, Enemy Territory: Quake Wars) научился сглаживать прозрачные текстуры методом alpha-2-coverage безо всяких «костылей» со стороны драйвера и ценой минимального падения производительности.

Таким образом, эта функция (как, впрочем, и её Direct3D-вариант) будет интересна в первую очередь тем, кто любит играть в старые OpenGL-игры — Doom 3, Prey, игры на движке id Tech 3 / Quake 3 Arena и т.д. Реализуй её AMD чуть позже — и в ней бы уже совсем не было никакого смысла. Именно по этой причине мы склонны думать, что в драйверах NVIDIA эта функция так и не появится — вряд ли разумно сейчас вкладывать в неё свои силы.

Что касается самой реализации AAA для OpenGL-приложений в Catalyst, то выводы у нас следующие:

  • Функция полностью работоспособна и честно выполняет возложенную на неё задачу.

  • Исходя из визуальных результатов и сопутствующих им падений производительности, мы можем предположить, что сглаживание прозрачных текстур в OpenGL в Catalyst, судя по всему, реализовано методом старого-доброго суперсэмплинга.

  • Судя по тем же результатам тестирования, использование режима Quality вызывает несоразмерные приросту качества падения производительности — если вы хотите использовать Adaptive AA в OpenGL-игре, то вам, видимо, лучше остановиться на режиме Performance.

А главный вывод нашего тестирования такой: в кои-то веки драйверы видеокарт Radeon обеспечивают более высокое качество картинки в OpenGL-приложениях, нежели драйверы GeForce. Без сопутствующих проблем, конечно, не обошлось (всё лето включение AAA приводило к падению OpenGL-драйвера при попытке запустить Prey; до сих пор включение AAA приводит к появлению артефактов в меню Star Wars: Knights of The Old Republic 1/2), однако факт сам по себе — весьма примечательный. Если вы любите играть в старые OpenGL-игры, то делать это сейчас лучше на видеокартах Radeon.





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

i3D-Quality - Под микроскопом - Октябрь 2008 - Radeon Adaptive Anti-Aliasing в OpenGL

i3D-Quality — Под микроскопом: Октябрь 2008, Radeon Adaptive Anti-Aliasing в OpenGL

За последние полгода механизм Adaptive Antialiasing (сглаживания прозрачных текстур) в драйверах Catalyst претерпел сразу несколько трансформаций, отследить которые оказалось не так-то просто.

Во-первых, в Catalyst 8.5 в конце мая текущего года в драйвере видеокарт Radeon появилась поддержка AAA для OpenGL-приложений — вещь уникальная, у конкурента подобная функция отсутствует до сих пор. Мы уже было вознамерились её протестировать в одном из ближайших на тот момент выпусков i3D-Quality, но AMD в своей лучшей традиции реализовать-то функцию реализовала, да вот только работала она через пень-колоду и приводила к падениям OpenGL-драйвера в большинстве опробованных нам OpenGL-игр. Поэтому тестирование пришлось отложить на потом.

Во-вторых, в Catalyst 8.8 AMD, по сути, отказалась от сделанного ею ранее механизма гибкой настройки Adaptive AA — пропала возможность выбора режимов AAA Multi-Sampling и Super-Sampling, исчез «ползунок», позволявший регулировать степень «размытости» AAA Multi-Sampling — в целом, всё вернулось к тому виду настройки AAA, который существовал в Catalyst с момента добавления в них этой функции:

Теперь вы снова можете указать лишь хотите ли вы использовать AAA и один из двух доступных уровней его качества — а использовать MS или SS, как сильно «размывать» внутренние края прозрачных текстур и пр. целиком определяется самим драйвером и желаниями программистов компании AMD. В принципе, подход неплохой — при условии, что желания программистов AMD будут всегда совпадать с желаниями пользователя.

Спустя 3 с лишним месяца после декларации о реализации функции AAA в OpenGL AMD наконец-то сделала её рабочей в Catalyst 8.9 — и мы решили посмотреть, действительно ли она работает так, как полагается.

Конфигурация системы

  • Intel Core 2 Duo E8200 / Intel X48 / 4 ГБ DDR2-667 ОЗУ
  • ОС Microsoft Windows Vista 64-bit Service Pack 1
  • AMD Radeon HD 4870 X2, драйвер Catalyst версии 8.10
  • Doom 3, версия 1.31
  • Prey, версия 1.4
  • Star Wars Jedi Knight Jedi Academy, версия 1.01

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

Во всех тестах мы использовали режим MSAA 8x (как показало наше прошлое тестирование, использовать на видеокартах HD 4800 режимы меньшего качества попросту нет смысла). В Doom 3 AA 8x включался в настройках игры, в Jedi Academy и Prey — форсировался средствами драйвера (Prey не позволяет включить из своих настроек AA выше 4x; а в Jedi Academy настроек AA нет вовсе).

Все прочие настройки драйвера Catalyst мы оставляли на их умолчательных значениях.

Внимание: полноразмерные версии скриншотов представлены в формате PNG в полноценном качестве. Размер скриншотов варьируется от 1,5 до 3,5 МБ!

Star Wars Jedi Knight Jedi Academy v1.01

Начнём с самой старой из рассматриваемых игр — и в то же время самой интересной с точки зрения работы функции сглаживания прозрачных текстур в силу наличия внушительного количества всевозможной травы и деревьев на доброй трети игровых уровней.

Без AAA AAA Perf AAA Qual

Результаты работы функции AAA очевидны: при её включении сглаживаются текстуры листвы деревьев в верхней части сцены и текстуры травы в нижней.

Стоить отметить, что переход от «Без ААА» к «ААА Performance» гораздо очевиднее для глаза, нежели переход от «AAA Performance» к «AAA Quality» — любое сглаживание выделяющихся своим алиасингом прозрачных текстур идёт на пользу качеству картинки.

Doom 3 v1.31

Вторая на очереди — уже каноническая игра Doom 3, одновременно являющаяся родоначальником одного из наиболее распространённых в данное время OpenGL-движков.

Без AAA AAA Perf AAA Qual

И снова работа AAA в OpenGL-игре очевидна — «лесенки» на прозрачной текстуре пола сглажены до полного исчезновения.

Интересно также отметить, что в этом случае, в силу меньшего количества алиасинга, разница между отсутствием AAA и режимом Performance на взгляд выглядит не большей, нежели разница между режимами Performance и Quality. Режим Quality устраняет алиасинг полностью.

Prey v1.4

Последний участник нашего тестирования — игра Prey, построенная на всё том же движке id Tech 4, ранее известном как Doom 3 Engine. В Prey регулярно встречается одна и та же прозрачная текстура шестиугольной ячеистой структуры. Мы решили рассмотреть два варианта сглаживания этой текстуры функцией AAA: в режиме mag-фильтрации и в режиме min-фильтрации.

Без AAA AAA Perf AAA Qual

В режиме mag-фильтрации повторяется картина, которую вы могли наблюдать выше на примере Doom 3: явный рост качества антиалиасинга по мере перехода от отсутствия AAA через режим Performance к режиму Quality.

Без AAA AAA Perf AAA Qual

А вот в режиме min-фильтрации картина уже менее очевидная: разглядеть включение AAA еще можно, а вот разницу между режимами Performance и Quality заметить уже довольно трудно.

Производительность

Большой вопрос, однако, заключается в том, что при этом происходит с производительностью.

Так, в древнейшей Jedi Academy производительность сцены, которую вы видите на скриншоте, при включении AAA Performance упала с 75 до 57 fps, а при переходе в режим Quality — понизилась уже до 36 fps, опасно приблизившись к границе играбельности. И это на флагманской видеокарте Radeon HD 4870 X2!

Ради интереса мы посмотрели, как ведёт себя в этих же режимах видеокарта Radeon HD 3870 X2: как и её наследница, она потеряла 50% производительности, опустившись с 52 до 36, а затем до 23 (!) fps.

Впрочем, использованная нами сцена Jedi Academy изобилует прозрачными текстурами, а методика их сглаживания в драйвере Catalyst, судя по визуальным результатам и сопутствующим им падениям производительности, является банальным суперсэмплингом — не удивительно, что даже 4870 X2 потеряла половину своих fps и вышла на границу играбельности в этой игре пятилетней давности.

Чтобы проверить падение от включения AAA в OpenGL в более типичной OpenGL-игре мы решили снова воспользоваться одной из удобных тестовых утилит сайта hocbench.com и протестировали работу игры Prey в разных разрешениях и разных режимах AAA:

Очевидно, что режим без AAA упирается в возможности нашего CPU, поэтому видеокарта 4870 X2 выдаёт близкие результаты по всему спектру разрешений экрана.

Однако уже после включения AAA Performance производительность по мере роста разрешения начинает падать.

В режиме же Quality в разрешении 1920х1200, в котором наименее проявляется нехватка CPU-мощности, Radeon HD 4870 X2 снова, как и в случае Jedi Academy, теряет почти половину своей производительности. Причём, огромное (почти на 30%) падение производительности имеется даже в очень низком по сегодняшним меркам разрешении 1280х1024.

Выводы

Так ли уж нужна нам функция сглаживания прозрачных текстур в OpenGL-приложениях в настоящее время?

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

С другой стороны, OpenGL-игр очень мало, и львиная их доля сейчас использует движок id Tech 4, который в своей последней версии (Quake 4, Enemy Territory: Quake Wars) научился сглаживать прозрачные текстуры методом alpha-2-coverage безо всяких «костылей» со стороны драйвера и ценой минимального падения производительности.

Таким образом, эта функция (как, впрочем, и её Direct3D-вариант) будет интересна в первую очередь тем, кто любит играть в старые OpenGL-игры — Doom 3, Prey, игры на движке id Tech 3 / Quake 3 Arena и т.д. Реализуй её AMD чуть позже — и в ней бы уже совсем не было никакого смысла. Именно по этой причине мы склонны думать, что в драйверах NVIDIA эта функция так и не появится — вряд ли разумно сейчас вкладывать в неё свои силы.

Что касается самой реализации AAA для OpenGL-приложений в Catalyst, то выводы у нас следующие:

  • Функция полностью работоспособна и честно выполняет возложенную на неё задачу.

  • Исходя из визуальных результатов и сопутствующих им падений производительности, мы можем предположить, что сглаживание прозрачных текстур в OpenGL в Catalyst, судя по всему, реализовано методом старого-доброго суперсэмплинга.

  • Судя по тем же результатам тестирования, использование режима Quality вызывает несоразмерные приросту качества падения производительности — если вы хотите использовать Adaptive AA в OpenGL-игре, то вам, видимо, лучше остановиться на режиме Performance.

А главный вывод нашего тестирования такой: в кои-то веки драйверы видеокарт Radeon обеспечивают более высокое качество картинки в OpenGL-приложениях, нежели драйверы GeForce. Без сопутствующих проблем, конечно, не обошлось (всё лето включение AAA приводило к падению OpenGL-драйвера при попытке запустить Prey; до сих пор включение AAA приводит к появлению артефактов в меню Star Wars: Knights of The Old Republic 1/2), однако факт сам по себе — весьма примечательный. Если вы любите играть в старые OpenGL-игры, то делать это сейчас лучше на видеокартах Radeon.