i3D-Quality — Под микроскопом: Декабрь 2007, Transparency Antialiasing


В этом месяце мы решили провести менее масштабное, но, надеемся, не менее интересное сравнение качества, и взяли «в прицел» алгоритмы антиалиасинга прозрачных текстур обоих лидирующих GPU-производителей.

В некотором роде, сейчас — одна из последних возможностей провести подобное сравнение. Дело в том, что всё больше и больше игр используют алгоритмы, которые либо делают их несовместимыми с «драйверным» антиалиасингом прозрачных текстур, либо реализуют подобное сглаживание сами.

Первый вариант можно увидеть в рассмотренной нами месяц назад игре Crysis — она игнорирует драйверное сглаживание текстур. Второй вариант стал особенно популярным после того, как в спецификациях DirectX 10 появилось требование поддержки метода Alpha-2-Coverage, позволяющего «дешево» реализовывать достаточно качественное сглаживание прозрачных текстур без сколько-нибудь существенного падения производительности. Увидеть этот метод в действии сейчас можно в DX10-версии игры Call of Juarez или в OpenGL-игре Enemy Territory Quake Wars.

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

AMD (наконец-то?) реализовала метод сглаживания Adaptive Antialiasing Multisampling (который, кстати, является ничем иным, как «форсированием» Alpha-2-Coverage из драйвера), снабдив его сразу четырьмя режимами в диапазоне от Smooth до Sharp.

NVIDIA, в свою очередь, внесла заметные изменения в свой алгоритм Transparency Antialiasing Multisampling, сделав его, по собственным утверждениям, почти таким же качественным, как и алгоритм Supersampling.

Отрадно, что все озвученные изменения и нововведения становились доступны не только владельцам новых видеокарт, но и тем, кто не спешит с апгрейдом: AAA MS реализован не только на видеокартах Radeon HD, но и на Radeon X1000 (а возможно, и более ранних — мы не проверяли); усовершенствованный TAA MS доступен как владельцам видеокарт GeForce 8, так и владельцам видеокарт GeForce 7 (а может быть и 6, если таковые еще остались на этом свете).

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

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

  • AMD Athlon 64 X2 4600+ / NVIDIA nForce4 SLI / 4 ГБ DDR400 ОЗУ
  • ОС Microsoft Windows Vista 64-bit
  • MSI RX2900XT-VT2D512E-HD (ATI Radeon HD 2900 XT), драйверы Catalyst 7.12 (8.442)
  • NVIDIA GeForce 8800 Ultra, драйверы ForceWare 169.25

Для сравнения мы выбрали две сравнительно новые игры, буквально напичканные прозрачными текстурами, и при этом реагирующие на попытки драйвера их сгладить: The Elder Scrolls 4: Oblivion и The Witcher (одинаковость жанра и в некотором смысле тематики — всего лишь совпадение =)).

Игры запускались в разрешении 1280х960. Для примерной оценки уровня производительности на скриншотах присутствует моментальный fps, посчитанный программой Fraps.

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

The Elder Scrolls 4: Oblivion

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

Игра использует API DirectX 9, умеет делать HDR с помощью FP16-буферов и, в случае использования HDR, не имеет собственного управления антиалиасингом — во времена выхода TES4O считалось, что HDR не совместим с MSAA (и для видеокарт того времени так оно и было). Позже, впрочем, появились видеочипы, способные без проблем обеспечивать MSAA для FP16-буферов, и оба GPU-вендора постарались решить проблему путём добавления в свои драйверы возможности форсирования AA в Oblivion.

Тонкий момент здесь заключается в том, что у ATI и теперь — у AMD форсирование AA в Oblivion работает только в случае включения Catalyst AI, который одновременно включает оптимизации трилинейной фильтрации текстур.

Мы возмущались подобной зависимостью (чтобы улучшить качество нужно его тут же ухудшить?) еще во времена появления в продаже GeForce 8800, но ситуация и по сей день не изменилась. Логически подобная зависимость выглядит верной: форсирование AA в Oblivion достигается за счёт подмены шейдерного кода игры, а отключение Catalyst AI отключает все подобные подмены. Но в данном конкретном случае налицо конфликт логики и здравого смысла.

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

GeForce 8800 Transparency Antialiasing


Без TAA

TAA MS / FW 163.75

TAA MS / FW 169.25

TAA SS

Удивительно, но новый алгоритм TAA MS действительно работает! (То есть, нас не обманули, как это уже не раз бывало с анонсами всяких новых фич и функций.)

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

Обратите внимание на моментальный fps: алгоритм TAA SS фактически опустил fps ниже уровня играбельности даже на видеокарте GF8800U в низком по нынешним временам разрешении 1280x960! Зато новый алгоритм TAA MS, обеспечив сопоставимое с TAA SS качество, стал причиной сравнительно незначительного падения производительности. Стоит также отметить, что новый алгоритм оказался несколько медленнее старого: за качество всё-таки приходится платить скоростью.

Давайте посмотрим на новый AAA MS Radeon:

Radeon HD 2900 Adaptive Antialiasing


Без AAA

AAA MS Smooth

AAA MS Smooth +1

AAA MS Sharp -1

AAA MS Sharp

AAA SS Performance

AAA SS Quality

И вот здесь всё неоднозначно.

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

Во-вторых, хорошо заметно, что алгоритм AAA MS, реализованный в Catalyst 7.12, повторяет старый алгоритм TAA MS NVIDIA: деревья на заднем плане остаются не сглаженными.

В-третьих, по непонятной причине разницы между AAA MS и AAA SS мы не видим (хотя она всяко должна быть). То ли это особенность AAA SS, то ли — особенность форсирования AA в Oblivion на Radeon, то ли — глюк Catalyst 7.12. Мы вернёмся к этому месту после релиза Catalyst 8.1, и если ошибка останется, то добавим её в раздел ошибок.

Также следует отметить, что включение AAA MS (любого варианта) приводит к падению производительности, сопоставимому с включением режима AAA SS Quality, а режим AAA SS Performance вообще оказывается быстрее режима AAA MS. Даже если предположить, что AAA SS банально не включается (т.е., глюк драйверов), то падение от включения AAA MS относительно режима без сглаживания прозрачных текстур всё равно получается внушительным — куда как более внушительным, нежели падение от включения нового алгоритма TAA MS на GeForce.

Впрочем, с антиалиасингом и анизотропией у последних Radeon почти всегда большие проблемы с производительностью.

Давайте посмотрим на следующую игру.

The Witcher

Игра, созданная по мотивам фэнтезийной саги Анджея Сапковского, стала «неожиданным хитом» 2007-го года — мало кто ожидал, что у неизвестной польской студии с первой попытки получится едва ли не игра года.

The Witcher использует существенно модифицированный движок Bioware Aurora, применявшийся ранее в различных вариантах и модификациях в играх Neverwinter Nights, Knights of the Old Republic 1/2 и пр. Существенным отличием версии движка, созданной для The Witcher, является новый рендерер, использующий не OpenGL, а DirectX 9.

Вместе с тем сама игра, пожалуй, менее технологична, нежели вышедшая полутора годами раньше Oblivion: по крайней мере, она не использует HDR. Да и сам движок всё-таки староват, хоть и существенно модифицирован поляками из CDProject.

Игра умеет самостоятельно управлять антиалиасингом, но при этом «ленится» заглядывать в капсы DirectX, и потому ограничивает набор доступных режимов «стандартными» 2x и 4x. Учитывая, что драйверы AMD так и не научились подобно драйверам NVIDIA «подменять» реальный режим AA, а форсирование AA в этой игре невозможно (начинают глючить тени), мы ограничились использованием режима 4x.

The Witcher, к сожалению, не умеет сохранять вьюпоинт, поэтому нам пришлось выставлять его вручную — идеального соответствия скриншотов не ждите. Впрочем, для оценки качества сглаживания прозрачных текстур оно, пожалуй, и не требуется.

GeForce 8800 Transparency Antialiasing


Без TAA

TAA MS / FW 163.75

TAA MS / FW 169.25

TAA SS

И опять неоднозначные результаты.

Во-первых, разницы между новым и старым алгоритмами TAA MS мы здесь не увидели.

Во-вторых, режим TAA SS выдаёт существенно более качественное сглаживание прозрачных текстур — это заметно почти на всех участках тестовой сцены.

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

Посмотрим на Radeon:

Radeon HD 2900 Adaptive Antialiasing


Без AAA

AAA MS Smooth

AAA MS Smooth +1

AAA MS Sharp –1

AAA MS Sharp

AAA SS Performance

AAA SS Quality

Один в один повторяется результат Oblivion с той лишь разницей, что теперь включение AAA не приводит к падению производительности (видимо, The Witcher в этом разрешении упирается в процессор, а не в видеокарту).

Любопытно также отметить внезапной «утолщение» листвы при включении AAA — на GeForce мы подобного эффекта не наблюдаем.

Разницы между разными вариантами AAA MS и SS и между самими AAA MS и SS опять нет, что заставляет нас предположить, что в Catalyst 7.12 сломано управление AAA — разница должна быть, её не может не быть. Тем более не может не быть отсутствия падения производительности при включении AAA SS Quality.

Выводы

Выводы будут, простите, «однобокими» — выводы по AAA Radeon мы «придержим» до перепроверки результатов на следующей версии Catalyst, потому как подозреваем наличие серьезного бага в Catalyst 7.12, затрагивающего управление антиалиасингом.

А по TAA GeForce выводы простые: сумма качественных и скоростных характеристик нового режима позволяет всегда держать включенным TAA MS на GeForce. Новый алгоритм TAA MS даже в некотором роде поставил под сомнение смысл наличия режима TAA SS: разница в качестве между новым TAA MS и TAA SS не настолько велика, чтобы оправдать двукратное падение производительности при включении последнего.

На этом на сегодня всё, ждите обновления по Radeon.





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