S3 Текстураны сығымдау - S3 Texture Compression

S3 Текстураны сығымдау (S3TC) (кейде деп те аталады) DXTn, DXTC, немесе BCn) туыстық топ шығынды текстураны сығымдау алгоритмдер бастапқыда Iourcha және басқалар жасаған. туралы S3 Graphics, Ltd.[1][2] оларды пайдалану үшін Savage 3D компьютерлік графиканың үдеткіші. Қысу әдісі бұрын жарияланғанға ұқсас Түсті жасушаны қысу,[3] бұл өз кезегінде бейімделу болып табылады Қысқартуды кодтауды бұғаттау 1970 жылдардың аяғында жарық көрді. Кейбір суреттерді сығу алгоритмдерінен айырмашылығы (мысалы. JPEG ), S3TC деректерін сығымдаудың бір реттік жадыға қосылуымен біріктірілген (мысалы, Түсті ұяшықтың қысылуы және кейбіреулері) VQ негізделген схемалар) оны сығымдау кезінде қолдануға ыңғайлы етіп жасады текстуралар жеделдетілген жабдықта 3D компьютерлік графика. Оны кейіннен енгізу Microsoft Келіңіздер DirectX 6.0 және OpenGL 1.3 (GL_EXT_texture_compression_s3tc арқылы) кеңейту ) аппараттық және бағдарламалық жасақтама жасаушылар арасында технологияны кеңінен қабылдауға әкелді. S3 Graphics енді графикалық үдеткіш нарығында бәсекелес болмаса да, S3TC технологиясын пайдалану үшін лицензиялық төлемдер 2017 жылдың қазан айына дейін өндіріліп алынды және жиналды, мысалы ойын консолі және графикалық карталар. S3TC кең қолдану а іс жүзінде оны қолдау үшін OpenGL драйверлеріне қойылатын талап, бірақ патенттелген S3TC мәртебесі үлкен кедергі жасады ашық ақпарат көзі іске асыру,[4] патенттелген бөліктерден аулақ болуға тырысу тәсілдері болған кезде.[5]

Патент

S3 Текстураны Сығымдау бойынша бірнеше USPTO патенттерінің кейбіреулері (мысалы, US 5956431 A) 2017 жылдың 2 қазанында аяқталды.[6] Кем дегенде бір жалғастыру патенті, 6,775,417, дегенмен 165 күндік ұзарту болды. Бұл жалғастыру патентінің мерзімі 2018 жылдың 16 наурызында аяқталды.

Кодектер

S3TC алгоритмінің бес вариациясы бар (аталған DXT1 арқылы DXT5, сілтеме жасай отырып FourCC әр форматқа Майкрософт тағайындаған код), әрқайсысы кескіндік мәліметтердің белгілі бір түрлеріне арналған. Барлығы 4 × 4 блокты түрлендіреді пиксел 64-ке дейінбит немесе 128-биттік мөлшер, нәтижесінде 6-дан 1-ге дейінгі сығымдау коэффициенті болады RGB деректерді енгізу немесе 32: биттік 4: 1 РГБА деректерді енгізу. S3TC - бұл шығынды сығымдау алгоритмі, нәтижесінде кескін сапасының нашарлауы, әсер бірдей, жад талаптарын сақтай отырып текстураның ажыратымдылығын арттыру мүмкіндігі азаяды. Өз қолымен салынған мультфильмге ұқсас кескіндер жақсы сығылмайды, сондай-ақ болмайды қалыпты карта деректер, олардың екеуі де әдетте жасайды артефактілер. ATI Келіңіздер 3Dc сығымдау алгоритмі - бұл D3T5-тің қалыпты карталарға қатысты S3TC кемшіліктерін жоюға арналған модификациясы. id Бағдарламалық жасақтама сығымдаудың қалыпты картасымен жұмыс істеді Ақырет 3 қызыл компонентті альфа каналға қысу алдында жылжыту және оны көрсету кезінде артқа жылжыту арқылы пиксел көлеңкесі.[7]

Көптеген қазіргі заманғы кескіндерді сығу алгоритмдері сияқты, S3TC суреттерді декомпрессиялау үшін қолданылатын әдісті ғана анықтайды, бұл іске асырушыларға қысу алгоритмін олардың қажеттіліктеріне сай жобалауға мүмкіндік береді, дегенмен патент әлі де қысу алгоритмдерін қамтиды. The nVidia GeForce 256-дан GeForce 4-ке дейінгі карталар DXT1 текстурасын көрсету үшін 16 биттік интерполяцияны қолданды, бұл түсті градиенттері бар текстураны орау кезінде жолақ пайда болды. Тағы да, бұл туралы жағымсыз әсер қалдырды текстураны сығымдау, кодек өзі негіздерімен байланысты емес.

DXT1

DXT1 (Block Compression 1 немесе BC1 деп те аталады) S3TC-дің ең кіші вариациясы, 16 биттік пиксельді 64 биттік көлемде сақтайды, екі 16 биттік RGB 5: 6: 5 түс мәндерінен тұрады және , және 4х4 екі биттік іздеу кестесі.

Егер (осы түстерді екі 16-разрядты белгісіз сандар ретінде түсіну арқылы салыстырыңыз), содан кейін басқа екі түстер есептеледі, мысалы әр компонент үшін, және .Бұл режим 0xC0 режиміне ұқсас жұмыс істейді түпнұсқа Apple Video кодек.[8]

Әйтпесе, егер , содан кейін және а сәйкес келетін мөлдір қара алдын-ала ұсынылған альфа форматы.

Содан кейін іздеу кестесіне 0 пикселіне сәйкес келетін әр пиксель үшін түс мәнін анықтау үшін кеңес беріледі және сәйкес келетін 3 мәні .

DXT2 және DXT3

DXT2 және DXT3 (жиынтықта Block Compression 2 немесе BC2 деп те аталады) 16 бит пикселін (4х4 пиксельді блокқа сәйкес) 64 биттен тұратын 128 разрядқа айналдырады. альфа арнасы деректер (әр пиксель үшін 4 бит), содан кейін 64 бит түсті деректер, DXT1 сияқты кодталған (DXT1 алгоритмінің 4 түсті нұсқасы әрқашан салыстырмалы негізге сүйене отырып, қай нұсқаны қолдану керек деген шешімнің орнына қолданылады) мәндері және ).

DXT2-де түсті деректер бар ретінде түсіндіріледі альфа арқылы алдын-ала жасалған, DXT3-те оны альфа алдын-ала жасамаған деп түсіндіріледі. Әдетте DXT2 / 3 мөлдір және мөлдір емес аудандар арасындағы альфа өтпелері өткір суреттерге жақсы сәйкес келеді.

DXT4 және DXT5

DXT4 және DXT5 (жиынтықта Block Compression 3 немесе BC3 деп те аталады) 16 кіріс пикселді 64 бит альфа-канал деректерінен (екі 8-биттік альфа мәні және 4х4 3-биттік іздеу кестесінен) тұратын 128 битке түрлендіреді. 64 бит түсті деректер (DXT1 сияқты кодталған).

Егер , содан кейін тағы алты альфа мәні есептеледі, осылайша , , , , , және .

Әйтпесе, егер , тағы төрт альфа мәні осылай есептеледі , , , және бірге және .

Содан кейін іздеу кестесіне 0 пикселіне сәйкес келетін әр пиксель үшін альфа мәнін анықтау үшін кеңес беріледі және сәйкес келетін 7 мәні . DXT4-тің түрлі-түсті деректері альфамен алдын-ала толықтырылған, ал DXT5-ке сәйкес келмейді. DXT4 / 5 интерполяцияланған альфа схемасын қолданғандықтан, олар DFT2 / 3-тен гөрі альфа (мөлдірлік) градиенттері үшін жоғары нәтиже береді.

Қосымша нұсқалары

BC4 және BC5

BC3 және BC5 (Block Compression 4 және 5) Direct3D 10-ға қосылады. Олар DXT4 / 5 (BC3) табылған альфа-канал кодтамасын қайта пайдаланады.[9]

  • BC4 BC3 альфаларымен кодталған 16 биттік бір арналы (мысалы, сұр түсті) пикселдерді 64 битке сақтайды. Кеңейтілген палитра жоғары сапаны қамтамасыз етеді.
  • BC5 16 кірісті екі арналы (мысалы, жанама кеңістіктің қалыпты картасы) пиксельді 128 биттікке сақтайды, олардың әрқайсысы BC3 альфаларымен бірдей кодталған екі жартыдан тұрады.

BC6H және BC7

BC3H 11-де BC6H (кейде BC6) және BC7 (6H және 7 блоктық қысу) қосылады.[9]

  • BC6H 128 кіріс разрядына 16 кіріс RGB HDR (float16) пиксельдерін кодтайды.
  • BC7 128 биттік шығысқа 16 кіріс RGB8 / RGBA8 пикселін кодтайды.

BC6H және BC7 кодтау режимдерін таңдаумен анағұрлым күрделі алгоритмге ие. Нәтижесінде сапасы әлдеқайда жақсарды.[9]

S3TC пішімін салыстыру

FOURCCDX 10/11 атауыСипаттамаАльфа жеткіліксіз бе?Сығымдау коэффициентіТекстураның түрі
DXT1BC11 биттік Альфа / мөлдір емесИә6: 1 (24 биттік бастапқы сурет үшін)Қарапайым альфа емес
DXT2BC2Айқын альфаИә4:1Өткір альфа
DXT3BC2Айқын альфаЖоқ4:1Өткір альфа
DXT4BC3Интерполяцияланған альфаИә4:1Градиент альфа
DXT5BC3Интерполяцияланған альфаЖоқ4:1Градиент альфа
ЖоқBC4Интерполирленген сұр реңкЖоқ2:1Градиент
ЖоқBC5Интерполяцияланған екі арналыЖоқ2:1Градиент

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ АҚШ 5956431  «Белгіленген пиксель мәндерімен кескінді блоктау негізінде бекітілген қысу»
  2. ^ [1], Юрча, Константин I .; Кришна С. Наяк және Чжоу Хонг, «Пиксель мәндерімен кескінді жылдамдықпен блоктайтын қысу жүйесі және әдісі» 
  3. ^ «1990 IEEE түрлі-түсті ұяшықтарды қысу қағазы». Ieeexplore.ieee.org. дои:10.1109 / TENCON.1990.152671. S2CID  62015990. Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  4. ^ «DRI туралы ресми парақтағы S3TC жағдайы». Dri.freedesktop.org. Алынған 2012-01-25.
  5. ^ S2TC: S3TC патенттік жағдайы үшін мүмкін шешім қосулы phoronix
  6. ^ Йейтс, Том (2017-02-15). «Сондықтан мен ішемін: Федораның құқықтық жағдайы туралы талқылау». LWN.net. Алынған 2017-02-16. ... S3 текстурасын сығуға патенттің мерзімі 2017 жылдың 2 қазанында аяқталады, сондықтан Steam ойындары осы күннен кейін Fedora-да жақсы жұмыс істеуі мүмкін. ...
  7. ^ Даффи, Роберт (27.07.2004). «DOOM 3 бейне талаптары». Gamershell.com. Архивтелген түпнұсқа 2008 жылғы 3 қаңтарда. Алынған 2012-01-25.
  8. ^ Тогни, Роберто және т.б. «Apple RPZA «. MultimediaWiki.
  9. ^ а б c Рид, Натан. «BCn текстурасын қысу форматтарын түсіну». Натан Ридтің кодтау блогы.

Сыртқы сілтемелер

(Wayback Machine көшірме)