3DGiТоги июль 2001 года — Влияние технологии S3TC (FXT1) на качество и скорость
Рассмотрим весьма интересную проблематику использования технологии компрессии текстур в OpenGL. Фирмы NVIDIA и ATI в свое время лицензировали использование S3TC у компании S3 и внедрили эту технологию в свои ICD OpenGL. 3dfx использует для сжатия текстур в OpenGL свой метод FXT1.
Как известно, игры типа Quake3 в стандартной поставке не имеют предварительно сжатых и специально обработанных текстур, при активизации S3TC(FXT1) происходит автокомпрессия текстур, при этом визуально получаемая картинка смотрится по-разному у карт, поддерживающих сжатие текстур. Поэтому мы можем сравнить качество автокомпрессии на некоторых видеочипсетах, "понимающих" сжатие текстур, а также оценить прибавку в производительности (тестирование проводилось на примере Quake3 при максимальных установках качества:
1. S3 Savage4/Savage2000
Качество хоть и пострадало, но некатастрофично. Прирост по скорости имеется, особенно в 32-битном цвете (см. диаграммы ниже).
2. NVIDIA GeForce 256 (а также все остальные более новые чипсеты)
Разницу можно увидеть даже на маленьких скриншотах, и она не в пользу использования S3TC. Мы видим, что включение S3TC у NVIDIA GeForce-чипсетов хоть и приносит плоды повышения производительности, но портит основательно качество.
Проблема низкого качества сжатых текстур на чипах GeForce / GeForce2 GTS связана с неприятной особенностью аппаратной распаковки текстур, упакованных в формате 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 совместно с Алексеем Берилло 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 Voodoo4/5
Качество автокомпрессии очень хорошее, даже замечаний практически нет. При превосходном качестве технология FXT1 дает существенный прирост в производительности (см. диаграммы ниже).
4. ATI RADEON
Качество графики при автокомпрессии определенно портится, однако не столь критично, как у 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:
Разница просто бросается в глаза. Причем играбельность при таком переключении страдать может только в сверхвысоких разрешениях.
Дополнительно |
|