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


Рассмотрим весьма интересную проблематику использования технологии компрессии текстур в OpenGL. Фирмы NVIDIA и ATI в свое время лицензировали использование S3TC у компании S3 и внедрили эту технологию в свои ICD OpenGL. 3dfx использует для сжатия текстур в OpenGL свой метод FXT1.

Как известно, игры типа Quake3 в стандартной поставке не имеют предварительно сжатых и специально обработанных текстур, при активизации S3TC(FXT1) происходит автокомпрессия текстур, при этом визуально получаемая картинка смотрится по-разному у карт, поддерживающих сжатие текстур. Поэтому мы можем сравнить качество автокомпрессии на некоторых видеочипсетах, "понимающих" сжатие текстур, а также оценить прибавку в производительности (тестирование проводилось на примере Quake3 при максимальных установках качества:

1. S3 Savage4/Savage2000

Без поддержки S3TC:                                                    C активизацией S3TC:

Качество хоть и пострадало, но некатастрофично.







Прирост по скорости имеется, особенно в 32-битном цвете.

2. NVIDIA GeForce 256 (а также все остальные более новые чипсеты)

Без поддержки S3TC:                                                    C активизацией S3TC:

Разницу можно увидеть даже на маленьких скриншотах, и она не в пользу использования S3TC. На графиках ниже показано влияние S3TC на разные видеокарты семейства GeForce256/GeForce2. Хочу заметить, что на графиках есть зеленая линия S3TC FIX. Разъяснение, что же это такое, есть ниже, после всех графиков.





















































Мы видим, что включение S3TC у NVIDIA GeForce-чипсетов хоть и приносит плоды повышения производительности, но портит основательно качество. И что означает в этих графиках S3TC FIX?

Обо всем по порядку. Проблема низкого качества сжатых текстур на чипах 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 (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 FIX на показанных выше графиках означает активизацию алгоритма распаковки DXT5 (по визуальному исследованию этот алгоритм дает наилучшее качество графики). Можно видеть, что при улучшении качества производительность страдает. В целом оценить прирост (или падение) производительности в процентах при использовании DXT5 можно на следующих диаграммах:




Интересно отметить, что в 16-битном цвете у многих видеокарт, особенно старших моделей (GeForce2 GTS), использование S3TC совместно с DXT5 приводит к существенному снижению в скорости, а вот в 32-битном цвете все как полагается.

3. 3dfx Voodoo4/5

Без поддержки FXT1:                                                    C активизацией FXT1:
       

Качество автокомпрессии очень хорошее, даже замечаний практически нет.

















Результат налицо. При превосходном качестве технология FXT1 дает существенный прирост в производительности.

4. ATI RADEON

Без поддержки S3TC:                                                    C активизацией S3TC:
       

Качество графики при автокомпрессии определенно портится, однако не столь критично, как у NVIDIA-чипсетов.

















Как видим, производительность возросла, особенно в 32-битном цвете, а ухудшение качества графики при активизации S3TC не столь значительно, поэтому включение режима автокомпрессии приветствуется.

5. STM KYRO/KYRO II

Без поддержки S3TC:                                                    C активизацией S3TC:
       

Качество графики при автокомпрессии несколько портится, однако не катастрофично.









Производительность возросла просто колоссально! Это самый лучший результат в этом плане среди всех процессоров, поддерживающих 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:

       

       

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




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

3DGiТоги мая 2001 года: S3TC/FXT1

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

Рассмотрим весьма интересную проблематику использования технологии компрессии текстур в OpenGL. Фирмы NVIDIA и ATI в свое время лицензировали использование S3TC у компании S3 и внедрили эту технологию в свои ICD OpenGL. 3dfx использует для сжатия текстур в OpenGL свой метод FXT1.

Как известно, игры типа Quake3 в стандартной поставке не имеют предварительно сжатых и специально обработанных текстур, при активизации S3TC(FXT1) происходит автокомпрессия текстур, при этом визуально получаемая картинка смотрится по-разному у карт, поддерживающих сжатие текстур. Поэтому мы можем сравнить качество автокомпрессии на некоторых видеочипсетах, "понимающих" сжатие текстур, а также оценить прибавку в производительности (тестирование проводилось на примере Quake3 при максимальных установках качества:

1. S3 Savage4/Savage2000

Без поддержки S3TC:                                                    C активизацией S3TC:

Качество хоть и пострадало, но некатастрофично.







Прирост по скорости имеется, особенно в 32-битном цвете.

2. NVIDIA GeForce 256 (а также все остальные более новые чипсеты)

Без поддержки S3TC:                                                    C активизацией S3TC:

Разницу можно увидеть даже на маленьких скриншотах, и она не в пользу использования S3TC. На графиках ниже показано влияние S3TC на разные видеокарты семейства GeForce256/GeForce2. Хочу заметить, что на графиках есть зеленая линия S3TC FIX. Разъяснение, что же это такое, есть ниже, после всех графиков.





















































Мы видим, что включение S3TC у NVIDIA GeForce-чипсетов хоть и приносит плоды повышения производительности, но портит основательно качество. И что означает в этих графиках S3TC FIX?

Обо всем по порядку. Проблема низкого качества сжатых текстур на чипах 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 (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 FIX на показанных выше графиках означает активизацию алгоритма распаковки DXT5 (по визуальному исследованию этот алгоритм дает наилучшее качество графики). Можно видеть, что при улучшении качества производительность страдает. В целом оценить прирост (или падение) производительности в процентах при использовании DXT5 можно на следующих диаграммах:




Интересно отметить, что в 16-битном цвете у многих видеокарт, особенно старших моделей (GeForce2 GTS), использование S3TC совместно с DXT5 приводит к существенному снижению в скорости, а вот в 32-битном цвете все как полагается.

3. 3dfx Voodoo4/5

Без поддержки FXT1:                                                    C активизацией FXT1:
       

Качество автокомпрессии очень хорошее, даже замечаний практически нет.

















Результат налицо. При превосходном качестве технология FXT1 дает существенный прирост в производительности.

4. ATI RADEON

Без поддержки S3TC:                                                    C активизацией S3TC:
       

Качество графики при автокомпрессии определенно портится, однако не столь критично, как у NVIDIA-чипсетов.

















Как видим, производительность возросла, особенно в 32-битном цвете, а ухудшение качества графики при активизации S3TC не столь значительно, поэтому включение режима автокомпрессии приветствуется.

5. STM KYRO/KYRO II

Без поддержки S3TC:                                                    C активизацией S3TC:
       

Качество графики при автокомпрессии несколько портится, однако не катастрофично.









Производительность возросла просто колоссально! Это самый лучший результат в этом плане среди всех процессоров, поддерживающих 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:

       

       

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