S3 बनावट संपीड़न
S3 बनावट संपीड़न (S3TC) (कभी-कभी DXTn, DXTC, या BCn भी कहा जाता है) संबंधित हानिपूर्ण संपीड़न बनावट संपीड़न कलन विधि का एक समूह है जो मूल रूप से Iourcha et al द्वारा विकसित किया गया है। S3 ग्राफ़िक्स|S3 ग्राफ़िक्स, लिमिटेड[1][2] उनके सैवेज 3डी कंप्यूटर ग्राफ़िक्स त्वरक में उपयोग के लिए। संपीड़न की विधि पहले प्रकाशित कलर सेल संपीड़न के समान ही है,[3] जो बदले में 1970 के दशक के अंत में प्रकाशित ट्रंकेशन कोडिंग को ब्लॉक करें का रूपांतरण है। कुछ छवि संपीड़न एल्गोरिदम (उदाहरण के लिए JPEG) के विपरीत, S3TC के निश्चित-दर डेटा संपीड़न ने एकल मेमोरी एक्सेस (cf. कलर सेल संपीड़न और कुछ वेक्टर परिमाणीकरण योजनाओं) के साथ मिलकर इसे हार्डवेयर में बनावट मैपिंग को संपीड़ित करने में उपयोग के लिए उपयुक्त बना दिया- त्वरित 3डी कंप्यूटर ग्राफिक्स इसके बाद माइक्रोसॉफ्ट के DirectX 6.0 और OpenGL 1.3 (GL_EXT_texture_compression_s3tc OpenGL#Development के माध्यम से) में शामिल किए जाने से हार्डवेयर और सॉफ्टवेयर निर्माताओं के बीच प्रौद्योगिकी को व्यापक रूप से अपनाया गया। जबकि S3 ग्राफ़िक्स अब ग्राफ़िक्स एक्सेलेरेटर बाज़ार में प्रतिस्पर्धी नहीं है, उदाहरण के लिए गेम कंसोल और ग्राफ़िक्स कार्ड में, अक्टूबर 2017 तक S3TC तकनीक के उपयोग के लिए लाइसेंस शुल्क लगाया और एकत्र किया गया है। S3TC के व्यापक उपयोग ने OpenGL ड्राइवरों के लिए इसका समर्थन करने की वास्तविक आवश्यकता को जन्म दिया है, लेकिन S3TC की पेटेंट-भारित स्थिति ने ओपन-सोर्स सॉफ़्टवेयर कार्यान्वयन में एक बड़ी बाधा प्रस्तुत की है,[4] जबकि कार्यान्वयन दृष्टिकोण जो पेटेंट किए गए भागों से बचने की कोशिश करते थे, मौजूद थे।[5]
पेटेंट
S3 टेक्सचर कंप्रेशन पर कई यूएसपीटीओ पेटेंट में से कुछ (जैसे यूएस 5956431 ए) 2 अक्टूबर, 2017 को समाप्त हो गए।[6] कम से कम एक निरंतरता पेटेंट, US6,775,417, में 165 दिन का विस्तार था। यह निरंतरता पेटेंट 16 मार्च, 2018 को समाप्त हो गया।
कोडेक्स
S3TC एल्गोरिथ्म के पांच रूप हैं (DXT1 से DXT5 नामित, प्रत्येक प्रारूप के लिए Microsoft द्वारा निर्दिष्ट फोरसीसी कोड को संदर्भित करते हुए), प्रत्येक को विशिष्ट प्रकार के छवि डेटा के लिए डिज़ाइन किया गया है। सभी पिक्सेल के 4×4 ब्लॉक को 64-अंश या 128-बिट मात्रा में परिवर्तित करते हैं, जिसके परिणामस्वरूप 24-बिट आरजीबी रंग स्थान इनपुट डेटा के साथ 6:1 या 32-बिट आरजीबीए रंग स्थान इनपुट डेटा के साथ 4:1 का संपीड़न अनुपात होता है। . S3TC एक हानिपूर्ण डेटा संपीड़न संपीड़न एल्गोरिदम है, जिसके परिणामस्वरूप छवि गुणवत्ता में गिरावट आती है, एक प्रभाव जो समान मेमोरी आवश्यकताओं को बनाए रखते हुए बनावट रिज़ॉल्यूशन को बढ़ाने की क्षमता से कम हो जाता है। हाथ से खींची गई कार्टून जैसी छवियां अच्छी तरह से संपीड़ित नहीं होती हैं, न ही सामान्य मैपिंग डेटा, दोनों ही आमतौर पर संपीड़न कलाकृतियाँ उत्पन्न करते हैं। ATI Technologies का 3Dc कंप्रेशन एल्गोरिदम DXT5 का एक संशोधन है जिसे सामान्य मानचित्रों के संबंध में S3TC की कमियों को दूर करने के लिए डिज़ाइन किया गया है। आईडी सॉफ्टवेयर ने कयामत 3 में सामान्यमैप संपीड़न मुद्दों के आसपास काम किया, संपीड़न से पहले लाल घटक को अल्फा चैनल में ले जाया गया और पिक्सेल शेडर में रेंडरिंग के दौरान इसे वापस ले जाया गया।[7] कई आधुनिक छवि संपीड़न एल्गोरिदम की तरह, S3TC केवल छवियों को डीकंप्रेस करने के लिए उपयोग की जाने वाली विधि को निर्दिष्ट करता है, जिससे कार्यान्वयनकर्ता अपनी विशिष्ट आवश्यकताओं के अनुरूप संपीड़न एल्गोरिदम को डिज़ाइन कर सकते हैं, हालांकि पेटेंट अभी भी संपीड़न एल्गोरिदम को कवर करता है। Nvidia GeForce 256 से लेकर GeForce 4 कार्ड तक DXT1 टेक्सचर को प्रस्तुत करने के लिए 16-बिट इंटरपोलेशन का भी उपयोग करते हैं, जिसके परिणामस्वरूप रंग ग्रेडिएंट्स के साथ टेक्सचर को अनपैक करते समय बैंडिंग होती है। फिर, इसने बनावट संपीड़न का एक प्रतिकूल प्रभाव पैदा किया, जो कोडेक के मूल सिद्धांतों से संबंधित नहीं था।
DXT1
DXT1 (ब्लॉक कंप्रेशन 1 या BC1 के रूप में भी जाना जाता है) S3TC का सबसे छोटा संस्करण है, जो 64 बिट आउटपुट में 16 इनपुट पिक्सल को संग्रहीत करता है, जिसमें दो 16-बिट RGB 5:6:5 रंग मान शामिल हैं। और , और एक 4×4 दो-बिट लुकअप तालिका।
अगर (इन रंगों की तुलना दो 16-बिट अहस्ताक्षरित संख्याओं के रूप में व्याख्या करके करें), फिर दो अन्य रंगों की गणना की जाती है, जैसे कि प्रत्येक घटक के लिए, और . यह मोड Apple वीडियो के मोड 0xC0 के समान काम करता है।[8] अन्यथा, यदि , तब और अल्फ़ा कंपोज़िटिंग के अनुरूप पारदर्शी काला है। जब रैखिक बनावट फ़िल्टरिंग और अल्फा परीक्षण का उपयोग किया जाता है, तो यह रंग कभी-कभी पारदर्शी क्षेत्र के चारों ओर एक काली सीमा का कारण बनता है, क्योंकि रंग अपारदर्शी टेक्सल और पड़ोसी काले पारदर्शी टेक्सल के रंग के बीच प्रक्षेपित होते हैं।
फिर प्रत्येक पिक्सेल के लिए रंग मान निर्धारित करने के लिए लुकअप तालिका से परामर्श लिया जाता है, जिसका मान 0 के अनुरूप होता है और इसके अनुरूप 3 का मान .
DXT2 और DXT3
DXT2 और DXT3 (सामूहिक रूप से ब्लॉक कंप्रेशन 2 या BC2 के रूप में भी जाना जाता है) 16 इनपुट पिक्सल (4x4 पिक्सेल ब्लॉक के अनुरूप) को 128 बिट आउटपुट में परिवर्तित करता है, जिसमें 64 बिट अल्फा चैनल डेटा (प्रत्येक पिक्सेल के लिए 4 बिट) और उसके बाद 64 बिट्स होते हैं। रंगीन डेटा के बिट्स, DXT1 के समान ही एन्कोड किए गए हैं (इस अपवाद के साथ कि DXT1 एल्गोरिदम का 4-रंग संस्करण हमेशा उपयोग किया जाता है, यह तय करने के बजाय कि किस संस्करण का उपयोग सापेक्ष मूल्यों के आधार पर किया जाए और ).
DXT2 में, रंग डेटा की व्याख्या अल्फा द्वारा पूर्वगुणित किए जाने के रूप में की जाती है, DXT3 में इसकी व्याख्या अल्फा द्वारा पूर्वगुणित नहीं किए जाने के रूप में की जाती है। आमतौर पर DXT2/3 पारभासी और अपारदर्शी क्षेत्रों के बीच तेज अल्फा बदलाव वाली छवियों के लिए उपयुक्त होते हैं।
DXT4 और DXT5
DXT4 और DXT5 (सामूहिक रूप से ब्लॉक कंप्रेशन 3 या BC3 के रूप में भी जाना जाता है) 16 इनपुट पिक्सल को 128 बिट आउटपुट में परिवर्तित करता है, जिसमें 64 बिट अल्फा चैनल डेटा (दो 8-बिट अल्फा मान और एक 4×4 3-बिट लुकअप टेबल) शामिल है। इसके बाद 64 बिट रंगीन डेटा (DXT1 की तरह ही एन्कोड किया गया)।
अगर , फिर छह अन्य अल्फ़ा मानों की गणना की जाती है, जैसे कि , , , , , और .
अन्यथा, यदि , चार अन्य अल्फ़ा मानों की गणना इस प्रकार की जाती है , , , और साथ और .
फिर प्रत्येक पिक्सेल के लिए अल्फा मान निर्धारित करने के लिए लुकअप तालिका से परामर्श लिया जाता है, जिसके अनुरूप मान 0 होता है और इसके अनुरूप 7 का मान . DXT4 का रंग डेटा अल्फा द्वारा पूर्वगुणित होता है, जबकि DXT5 का नहीं। क्योंकि DXT4/5 एक इंटरपोलेटेड अल्फा योजना का उपयोग करते हैं, वे आम तौर पर DXT2/3 की तुलना में अल्फा (पारदर्शिता) ग्रेडिएंट के लिए बेहतर परिणाम देते हैं।
आगे के प्रकार
BC4 और BC5
BC4 और BC5 (ब्लॉक कंप्रेशन 4 और 5) को Direct3D 10 में जोड़ा गया है। वे DXT4/5 (BC3) में पाए जाने वाले अल्फा चैनल एन्कोडिंग का पुन: उपयोग करते हैं।[9]
- BC4 16 इनपुट सिंगल-चैनल (जैसे ग्रेस्केल) पिक्सल को आउटपुट के 64 बिट्स में संग्रहीत करता है, जो लगभग एन्कोड किया गया है[10]BC3 अल्फ़ाज़ की तरह ही। विस्तारित पैलेट उच्च गुणवत्ता प्रदान करता है।
- BC5 आउटपुट के 128 बिट्स में 16 इनपुट डबल-चैनल (उदाहरण के लिए स्पर्शरेखा स्थान सामान्य मानचित्र) पिक्सेल संग्रहीत करता है, जिसमें BC4 की तरह एन्कोड किए गए प्रत्येक दो आधे भाग होते हैं।
BC6H और BC7
Direct3D 11 में BC6H (कभी-कभी BC6) और BC7 (ब्लॉक कम्प्रेशन 6H और 7) जोड़े जाते हैं।[9]* BC6H 16 इनपुट RGB HDR (फ्लोट16) पिक्सल को 128 बिट आउटपुट में एनकोड करता है। यह अनिवार्य रूप से फ्लोट16 को 16 चिह्न-परिमाण पूर्णांक मान के रूप में मानता है और ऐसे पूर्णांकों को रैखिक रूप से प्रक्षेपित करता है। यह बिना चिह्न परिवर्तन वाले ब्लॉकों के लिए अच्छा काम करता है। कुल 14 मोड परिभाषित किए गए हैं, हालांकि अधिकांश न्यूनतम रूप से भिन्न हैं: केवल दो भविष्यवाणी मोड वास्तव में उपयोग किए जाते हैं।[10]
- BC7 16 इनपुट RGB8/RGBA8 पिक्सल को 128 बिट आउटपुट में एन्कोड करता है। इसे अत्यधिक उन्नत BC3 के रूप में समझा जा सकता है।[10]
BC6H और BC7 में एन्कोडिंग मोड के चयन के साथ बहुत अधिक जटिल एल्गोरिदम है। परिणामस्वरूप गुणवत्ता काफी बेहतर है।[9]स्वीकृत विचलन की सीमाओं के साथ, ये दो मोड भी अधिक सटीक रूप से निर्दिष्ट हैं। पहले के बीसीएन मोड जीपीयू विक्रेताओं के बीच थोड़े अलग तरीके से डिकोड होते थे।[10]
S3TC प्रारूप तुलना
FOURCC | DX 10/11 name | Description | Alpha premultiplied? | Compression ratio | Texture type |
---|---|---|---|---|---|
DXT1 | BC1 | 1-bit alpha / opaque | Yes | 6:1 (for 24-bit source image) | Simple non-alpha |
DXT2 | BC2 | Explicit alpha | Yes | 4:1 | Sharp alpha |
DXT3 | BC2 | Explicit alpha | No | 4:1 | Sharp alpha |
DXT4 | BC3 | Interpolated alpha | Yes | 4:1 | Gradient alpha |
DXT5 | BC3 | Interpolated alpha | No | 4:1 | Gradient alpha |
— | BC4 | Interpolated greyscale | — | 2:1 | Gradient |
— | BC5 | Interpolated two-channel | — | 2:1 | Gradient |
— | BC6H | Interpolated HDR (no alpha) | — | 6:1 | Gradient |
— | BC7 | Interpolated alpha | ? | 4:1 | Gradient |
डेटा प्रीकंडीशनिंग
ऑन-डिस्क भंडारण और वितरण (बनावट सुपरकंप्रेशन) के लिए बीसीएन बनावट को और अधिक संपीड़ित किया जा सकता है। एक एप्लिकेशन इस अतिरिक्त परत को डीकंप्रेस करेगा और बीसीएन डेटा को हमेशा की तरह जीपीयू को भेजेगा।
बीसीएन को ऊडल टेक्सचर के साथ जोड़ा जा सकता है, जो एक हानिपूर्ण प्रीप्रोसेसर है जो इनपुट बनावट को संशोधित करता है ताकि बीसीएन आउटपुट एलजेड77 कंप्रेसर (दर-विरूपण अनुकूलन) द्वारा अधिक आसानी से संपीड़ित हो। BC7 विशेष रूप से bc7prep का भी उपयोग कर सकता है, जो बनावट को अधिक संपीड़ित रूप में फिर से एन्कोड करने के लिए एक दोषरहित पास है (डीकंप्रेसन में इसके व्युत्क्रम की आवश्यकता होती है)।[11] क्रंच एक अन्य उपकरण है जो आरडीओ करता है और वैकल्पिक रूप से आगे पुनः एन्कोडिंग करता है।[12] 2021 में, Microsoft ने विशेष रूप से BCn-संपीड़ित बनावट के लिए BCPack संपीड़न एल्गोरिथ्म का उत्पादन किया। Xbox श्रृंखला X और S में BCPack स्ट्रीम को डीकंप्रेस करने के लिए हार्डवेयर समर्थन है।[13]
यह भी देखें
- S2TC, पेटेंट रहित समाधान
- FXT1
- डायरेक्टड्रॉ सतह
- पीवीआरटीसी
- अनुकूली स्केलेबल बनावट संपीड़न (एएसटीसी)
- एरिक्सन बनावट संपीड़न (ETC1 और ETC2)
- रंग सेल संपीड़न
संदर्भ
- ↑ US 5956431 "Fixed-rate block-based image compression with inferred pixel values"
- ↑ US 5956431, Iourcha, Konstantine I.; Nayak, Krishna S. & Hong, Zhou, "अनुमानित पिक्सेल मानों के साथ निश्चित-दर ब्लॉक-आधारित छवि संपीड़न के लिए प्रणाली और विधि", published Sep 21, 1999
- ↑ "1990 IEEE Color Cell Compression Paper". Ieeexplore.ieee.org. doi:10.1109/TENCON.1990.152671. S2CID 62015990.
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ "S3TC situation on official DRI information page". Dri.freedesktop.org. Retrieved 2012-01-25.
- ↑ S2TC: A Possible Workaround For The S3TC Patent Situation on phoronix
- ↑ Yates, Tom (2017-02-15). "This is why I drink: a discussion of Fedora's legal state". LWN.net. Retrieved 2017-02-16.
... The patent on S3 texture compression expires on October 2, 2017, so Steam games might work better on Fedora after that date. ...
- ↑ Duffy, Robert (July 27, 2004). "DOOM 3 Video Requirements". Gamershell.com. Archived from the original on January 3, 2008. Retrieved 2012-01-25.
- ↑ Togni, Roberto, et al. "Apple RPZA". MultimediaWiki.
- ↑ 9.0 9.1 9.2 Reed, Nathan. "बीसीएन बनावट संपीड़न प्रारूप को समझना". Nathan Reed’s coding blog.
- ↑ 10.0 10.1 10.2 10.3 Giesen, Fabian “ryg” (4 October 2021). "जीपीयू बीसीएन डिकोडिंग". The ryg blog (in English). Retrieved 24 July 2023.
- ↑ "ऊडल बनावट संपीड़न". www.radgametools.com. Open source part mentioned: bc7enc_rdo
- ↑ "क्रंच ओपन सोर्स टेक्सचर कम्प्रेशन लाइब्रेरी". GitHub. Retrieved 2016-09-13.
- ↑ "डायरेक्टस्टोरेज अवलोकन - माइक्रोसॉफ्ट गेम डेवलपमेंट किट". 16 March 2023.