Оригинал материала: https://3dnews.kz/173342

О технологии компрессии текстур S3TC

Нет такого игрока, который не слышал бы термина AGP - Акселерированный Графический Порт, который теперь часто стал использоваться в требованиях к железу для свежих компьютерных игр. Но что же такое AGP? Частенько так случается что аббревиатуры быстро теряют свой смысл при их одомашненном использовании, и мы забываем что они из себя представляют. Так что же такое AGP? (Если вы хорошо понимаете основы AGP, то можете пропустить эту часть).

Согласно Intel, AGP это "высокоскоростной компонент, направленный на отображение 3D графики, основанный на скоростном расширении PCI". Если говорить проще, то это специализированная шина, чьё единственное назначение - быть слотом для 2D/3D акселераторов в системе.

При работе на сегодняшней скорости в 2x AGP позволяет передавать данные с пиковой скоростью 528Мб в секунду, по сравнению со стандартными 132-мя мегабайтами в секунду PCI шины. Используя большую скорость AGP шина позволяет вашему компьютеру хранить огромные текстуры, которые могут быть востребованы 3D играми из оперативной памяти, быстро получать и обрабатывать их вместо хранения в локальной, ограниченной в обьёме памяти акселератора. Что случается, когда не AGP акселератор получает обьёмную текстуру, которая занимает больше места, нежели у него имеется локальной памяти? То же самое, что случается с вашей системой, когда ей не хватает памяти, он начинает свопаться, но в данной ситуации вместо того чтобы делать это на диск, делает это в оперативную память, что при отсутсвии AGP катастрофически снижает производительность системы. Эта концепция AGP текстурирования, реализуемая аппаратно, обычно называется GART - таблица переадресации графических адресов. Если проще, то назначение GART - позволять железу доступ к большим текстурам как к одинарным обьектам данных в системной памяти, разрешая вашей AGP карте и программному обеспечению использовать AGP шину для доступа к одним адресам памяти.

О второй важной возможности AGP можно сказать что она позволяет AGP совместимым адаптерам напрямую манипулировать текстурами, которые хранятся в системной памяти, вместо того, чтобы получать и лишь затем обрабатывать их локально. Этот процесс, известный как Direct Memory Execution, или DIME, позволяет приложениям с интенсивным текстурированием выполнятся из безграничной системной памяти, вместо ограниченной локальной памяти графической карты.

Нужен ли AGP?

Если Вы вспомните выпуск первого чипа Intel для AGp - i440LX, то вспомните и то, что основными критиками AGP в то время приводился довод, что не существует игр, которые сумеют реально использовать AGP и AGP текстурирование. И хотя идея была теоретически прекрасной, в то время прирост производительности был практически незаметен на реальных приложениях. Даже сегодня, играя в Quake 2 мы на самом деле особо не напрягаем память большинства современных акселераторов. А всё потому, что текущие и следующие поколения 3D игр вряд ли реально потребует поддержку AGP текстурирования (имеется в виду что под использованием AGP подразумевается занесение и считывание текстур из ОЗУ), которое компании типа 3Dfx вообще игнорировали в своих PCI решениях (вроде Voodoo 2) или использовали жалкое подобие некоторых функций в картах типа Banshee/Voodoo3, которые не поддерживают AGP текстурирование.

Легко понять, что более детализированные текстуры выглядят элементарно лучше, но к несчастью, более детализированные текстуры занимают больше места, чем их упрощённые аналоги. Это приводит к спору производительности со скоростью, но как всегда мы сейчас не будем заходить слишком далеко в теорию, а остановимся на одном простом сравнении: как бы ни был красив закат, если вы слепы, то всё, что вы увидите, это изменение основного цвета и закат не произведёт на вас должного впечатления. Возможно это несколько грубое и элементарное сравнение. После того, как Вы поиграетесь на Voodoo 2 с экстремально детализированными текстурами при 800x600, а затем сделаете это при 800x600 на карте, основанной на чипе nVidia Riva TNT, вы действительно начнёте замечать разницу. Вы помните, как все специалисты твердили, что AGP в конечном счёте займёт своё место в игровой индустрии? То время, о котором они говорили практически уже пришло. Есть технология, и её надо начать использовать. Компании вроде nVidia, Matrox и S3 предприняли первые шаги в этом направлении, но многое еще предстоит сделать.

Два подхода к улучшению качества текстур.

Итак у нас есть огромные текстуры, которые были переданы из системной памяти через AGP, и эти же текстуры, обрабатываемые благодаря DIME, но как S3 впишется во всё это? Вместо того, чтобы почивать на лаврах AGP и разрешать разработчикам использовать необьятные обьёмы текстур, в S3 осознали, что хотя AGP и позволяет бросать огромные массивы текстур в ОЗУ для обработки, всё же есть ограничение этой технологии. Для начала хотя бы обьём памяти, отдаваемый AGP на использование. Но есть ещё один способ, когда текстуры высокого качества могут хранится в том же обьёме памяти, как и обычные, это способ компрессии текстур от S3, S3 Texture Compression, или коротко S3TC. Сравните качество оригинальной 8-битной текстуры и ее пожатого полноцветного аналога:

8-bit Texture.

 8-bit Texture
(увеличенный вариант при нажатии)

S3TC Compressed Texture.

 S3TC Compressed Texture
(увеличенный вариант при нажатии)

Технология S3TC жмет текстуры с коэффициентом 1 к 6 от S3 и потери качества при этом практически не заметны на глаз. S3TC, это не какая то технология, которую S3 разработала за углом и на коленках, это полностью лицензируемая, готовая система компрессии, поддерживаемая в DirectX6. Аналогов на рынке пока не наблюдается, хотя многое разработчики заявили о собственных разработках в этом направлении не желая платить за лицензию.

Ожидается очередная битва стандартов, теперь уже в области компрессии текстур и выиграет тот, чья технология получит поддержку разработчиков.



Оригинал материала: https://3dnews.kz/173342