3DGiТоги сентябрь 2001 года: Влияние технологии S3TC (FXT1) на качество и скорость

Рассмотрим весьма интересную проблематику использования технологии компрессии текстур в OpenGL. Фирмы NVIDIA и ATI в свое время лицензировали использование S3TC у компании S3 и внедрили эту технологию в свои ICD OpenGL. 3dfx использует для сжатия текстур в OpenGL свой метод FXT1.
Как известно, игры типа Quake3 в стандартной поставке не имеют предварительно сжатых и специально обработанных текстур, при активизации S3TC(FXT1) происходит автокомпрессия текстур, при этом визуально получаемая картинка смотрится по-разному у карт, поддерживающих сжатие текстур. Поэтому мы можем сравнить качество автокомпрессии на некоторых видеочипсетах, "понимающих" сжатие текстур, а также оценить прибавку в производительности (тестирование проводилось на примере Quake3 при максимальных установках качества:
2. NVIDIA GeForce 2 (а также все остальные более новые чипсеты)
Разницу можно увидеть даже на маленьких скриншотах, и она не в пользу использования S3TC. Мы видим, что включение S3TC у NVIDIA GeForce-чипсетов хоть и приносит плоды повышения производительности, но портит основательно качество.
Проблема низкого качества сжатых текстур на чипах GeForce2/3 связана с неприятной особенностью аппаратной распаковки текстур, упакованных в формате DXT1. При распаковке таких текстур чип оперирует с 16-битным текселем. Такая реализация декомпрессии приводит к бандингу при распаковке текстур, которые содержат плавные цветовые градиенты (именно этот эффект мы и наблюдаем на текстурах неба в Quake III). Качество сжатых текстур на чипах GeForce / GeForce2 можно повысить, если использовать вместо формата DXT1 форматы DXT2 - DXT5. Это не доставит абсолютно никаких проблем разработчикам игр, и потребует от них очень незначительного изменения кода игры (замена одного идентификатора). Разумеется, что такой метод подойдёт только к играм, которые не содержат прекомпрессированных S3TC текстур, и используют сжатие текстур в реальном времени. (Например Quake III: Arena, Soldier of Fortune и т.д.) Начиная с версии Детонатора 6.47 NVIDIA решила эту проблему на уровне драйверов. В секции OpenGL появился ключ S3TCQuality, который равен 0 по умолчанию. Этот ключ действует на реалтаймовую упаковку текстур. Установка этого ключа в 1 приводит к тому, что OpenGL драйвер начинает упаковывать текстуры в формат DXT3 вместо формата DXT1.
Если вас не хочется возиться с Registry или у вас Detonator более младших версий, то вы можете сходить на сайт "NVIDIA World", где вам могут предложить иной способ: использовать набор патчей S3TC Fix Pack2 (автор Алексей Николайчук aka Unwinder (AlexUnwinder@mail.ru) совместно с Алексеем Берилло aka SomeBody Else) для улучшения качества S3TC текстур. Эти патчи немного модифицируют OpenGL игры, заставляя их использовать вместо DXT1 другой формат сжатия. В S3TC Fix Pack 2 входят патчи для игр Quake III: Arena, Soldier of fortune, а так же универсальный патч для любых OpenGL приложений.
Алексей написал утилиту, которая правит код в Quake3.exe, заставляя использовать иные алгоритмы распаковок.
После такого исправления мы получаем в том же Quake3 следующее:
Как мы видим, хоть артефакты и остались, они уже не столь явны, и картинка в целом схожа с той, что можно видеть на ATI RADEON. За всеми подробностями данного исследования я прошу обращаться на сайт "Мир NVIDIA" или непосредственно к автору.
Однако эта коррекция несколько уменьшает прирост производительности при активизации S3TC, что, впрочем, вполне естественно. За улучшение качества почти всегда приходится платить скоростью.
3. 3dfx Voodoo5
Качество автокомпрессии очень хорошее, даже замечаний практически нет. При превосходном качестве технология FXT1 дает существенный прирост в производительности (см. диаграммы ниже).
4. ATI RADEON/RADEON 7500
Качество графики при автокомпрессии определенно портится, однако не столь критично, как у NVIDIA-чипсетов. Производительность возросла, особенно в 32-битном цвете, а ухудшение качества графики при активизации S3TC не столь значительно, поэтому включение режима автокомпрессии приветствуется.
5. STM KYRO/KYRO II
Качество графики при автокомпрессии несколько портится, однако не катастрофично.
А вот производительность возросла просто колоссально! Это самый лучший результат в этом плане среди всех
процессоров, поддерживающих S3TC.
Теперь посмотрим, а что дает активизация этой технологии в плане производительности всех
перечисленных видеокарт:


А ниже приведены диаграммы зависимости прироста по скорости в процентах от типа видеочипсета в разных разрешениях:
Абсолютная шкала

Логарифмическая шкала

Абсолютная шкала

Логарифмическая шкала

Видно, что наибольшее увеличение в производительности при активизации S3TC дают карты KYRO/KYRO II, затем - RADEON SDR, а также прекрасные плоды для видеокарт Voodoo4/5 принесла технология FXT1 от 3dfx. Разумеется, самые лучшие приросты наблюдаются в 32-битном цвете, поскольку у многих видеокарт сильное падение производительности при переходе на 32-битный цвет возникает вследствие нехватки пропускной способности локальной видеопамяти, а технология компрессии текстур несколько разгружает память видеокарт.
Во второй части обсуждения S3TC в OpenGL я хочу напомнить, что данная технология себя показывает во всей красе при наличии специальных
компрессированных текстур, то бишь в играх, оптимизированных под S3TC, либо на дополнительных уровнях "под S3TC", как например,
Quake3-уровнях, выпущенных фирмой Diamond Multimedia для рекламы Savage2000, и ныне успешно используемых и с чипсетами от NVIDIA:
Вот в данном случае мы видим, что досадная ошибка в автокомпрессии у GPU от NVIDIA не мешает насладиться всей красотой точной графики.
А вот то, что мы можем видеть на RADEON:
Текстуры все взяли и пропали. Так что, если уж автокомпрессия у RADEON работает на "ура", то использование массивов сжатых текстур у этого чипа вызывает трудности. Такая же ситуация и у KYRO/KYRO II.
В Сети имеется "специальный" OpenGL-драйвер для игры Unreal Tournament, который позволяет использовать прилагаемые к игре текстуры в формате S3TC. До какого-то момента только пользователи чипсетов от S3 могли наслаждаться этой красотой, так как создатели игры в то время включили поддержку этих текстур только через S3 Metal. И вот, владельцы карт, у которых в OpenGL есть поддержка S3TC (NVIDIA GeForce/GeForce2, ATI RADEON, KYRO/KYRO II) могут скачать этот драйвер, установить патч к Unreal Tournament версии версии 4.28 или более старшей, и настроить игру на работу под OpenGL. Разумеется, надо иметь либо лицензионную игру со вторым CD-диском с большими текстурами, либо где-то этот "бонус" переписать.
Более того, сама фирма Epic Games наконец-то выпустила драйвер для Direct3D, позволяющий в этом режиме также активизировать S3TC. Этот драйвер можно скачать здесь.
И вот имеем следующее. Слева - скриншоты, полученные в Direct3D-версии игры без S3TC, а
справа - с S3TC:
Разница просто бросается в глаза. Причем играбельность при таком переключении страдать может только в сверхвысоких разрешениях.
Дополнительно |
|