S3 बनावट संपीड़न: Difference between revisions
No edit summary |
(→DXT1) |
||
Line 1: | Line 1: | ||
'''S3 [[बनावट संपीड़न|टेक्सचर कम्प्रेशन]]''' (S3TC) (कभी-कभी ''' | '''S3 [[बनावट संपीड़न|टेक्सचर कम्प्रेशन]]''' (S3TC) (कभी-कभी '''डीएक्सटीएन''', '''डीएक्सटीसी''', या '''बीसीएन''' भी कहा जाता है) संबंधित लोस्सी [[बनावट संपीड़न|कम्प्रेशन]] [[हानिपूर्ण संपीड़न|(हानिपूर्ण कम्प्रेशन)]] टेक्सचर कम्प्रेशन [[कलन विधि|एल्गोरिथ्म]] का एक समूह है जो मूल रूप से इउर्चा एट अल (Iourcha et al) S3 ग्राफ़िक्स| द्वारा विकसित किया गया हैl S3 ग्राफ़िक्स, लिमिटेड<ref>{{patent|US|5956431|"Fixed-rate block-based image compression with inferred pixel values"}}</ref><ref>{{cite patent|title=अनुमानित पिक्सेल मानों के साथ निश्चित-दर ब्लॉक-आधारित छवि संपीड़न के लिए प्रणाली और विधि|pubdate=Sep 21, 1999|inventor-last=Iourcha|inventor2-last=Nayak|inventor3-last=Hong|inventor-first=Konstantine I.|inventor2-first=Krishna S.|inventor3-first=Zhou|country=US|number=5956431}}</ref> उनके [[सैवेज 3डी]] [[कंप्यूटर ग्राफ़िक्स त्वरक|कंप्यूटर ग्राफ़िक्स एक्सेलरेटर]] में उपयोग के लिए है। कम्प्रेशन की विधि पहले प्रकाशित कलर सेल कम्प्रेशन के समान ही है,<ref>{{cite journal|title=1990 IEEE Color Cell Compression Paper|last=|first=|date=|publisher=Ieeexplore.ieee.org|doi=10.1109/TENCON.1990.152671|s2cid=62015990}}</ref> जो बदले में 1970 के दशक के अंत में प्रकाशित [[ ट्रंकेशन कोडिंग को ब्लॉक करें ]] का रूपांतरण है। कुछ इमेज कम्प्रेशन एल्गोरिदम (उदाहरण के लिए [[JPEG]]) के विपरीत, S3TC के निश्चित-दर डेटा कम्प्रेशन ने एकल मेमोरी एक्सेस (cf. कलर सेल कम्प्रेशन और कुछ [[वेक्टर परिमाणीकरण]] योजनाओं) के साथ मिलकर इसे हार्डवेयर में टेक्सचरमैपिंग को कम्प्रेशन करने में उपयोग के लिए उपयुक्त बना दिया- त्वरित [[3डी कंप्यूटर ग्राफिक्स]] इसके बाद [[माइक्रोसॉफ्ट]] के [[DirectX]] 6.0 और OpenGL 1.3 (जीएल_ईएक्सटी_'''[[बनावट संपीड़न|टेक्सचर]]'''_'''[[बनावट संपीड़न|कम्प्रेशन]]'''_s3tc ओपनजीएल डेवलपमेंट के माध्यम से) में सम्मिलित किए जाने से हार्डवेयर और सॉफ्टवेयर निर्माताओं के बीच प्रौद्योगिकी को व्यापक रूप से अपनाया गया है। जबकि S3 ग्राफ़िक्स अब ग्राफ़िक्स एक्सेलेरेटर बाज़ार में प्रतिस्पर्धी नहीं है, उदाहरण के लिए [[गेम कंसोल]] और ग्राफ़िक्स कार्ड में, अक्टूबर 2017 तक S3TC तकनीक के उपयोग के लिए लाइसेंस शुल्क लगाया और एकत्र किया गया है। S3TC के व्यापक उपयोग ने ओपनजीएल (OpenGL) ड्राइवर्स के लिए इसका समर्थन करने की वास्तविक आवश्यकता को जन्म दिया है, लेकिन S3TC की पेटेंट-भारित स्थिति ने [[ओपन]]-सोर्स सॉफ़्टवेयर कार्यान्वयन में एक बड़ी बाधा प्रस्तुत की है,<ref>{{cite web|url=http://dri.freedesktop.org/wiki/S3TC |title=S3TC situation on official DRI information page |publisher=Dri.freedesktop.org |date= |accessdate=2012-01-25}}</ref> जबकि कार्यान्वयन दृष्टिकोण जो पेटेंट किए गए भागों से बचने की कोशिश करते थे, उपस्थित थे।<ref>[https://www.phoronix.com/scan.php?page=article&item=s2tc_s3tc_fix S2TC: A Possible Workaround For The S3TC Patent Situation] on [[phoronix]]</ref> | ||
== पेटेंट == | == पेटेंट == | ||
S3 टेक्सचर कंप्रेशन पर कई यूएसपीटीओ पेटेंट में से कुछ (जैसे यूएस 5956431 ए) 2 अक्टूबर, 2017 को समाप्त हो गए।<ref name="lwn-714524">{{Cite magazine |last=Yates |first=Tom |date=2017-02-15 |title=This is why I drink: a discussion of Fedora's legal state |url=https://lwn.net/Articles/714524/ |magazine=[[LWN.net]] |access-date=2017-02-16 |quote=... The patent on S3 texture compression expires on October 2, 2017, so Steam games might work better on Fedora after that date. ...}}</ref> कम से कम एक निरंतरता पेटेंट, [https://docs.google.com/viewer?url=patentimages.storage.googleapis.com/pdfs/US6775417.pdf US6,775,417], में 165 दिन का विस्तार था। यह निरंतरता पेटेंट 16 मार्च, 2018 को समाप्त हो गया। | S3 टेक्सचर कंप्रेशन पर कई यूएसपीटीओ पेटेंट में से कुछ (जैसे यूएस 5956431 ए) 2 अक्टूबर, 2017 को समाप्त हो गए।<ref name="lwn-714524">{{Cite magazine |last=Yates |first=Tom |date=2017-02-15 |title=This is why I drink: a discussion of Fedora's legal state |url=https://lwn.net/Articles/714524/ |magazine=[[LWN.net]] |access-date=2017-02-16 |quote=... The patent on S3 texture compression expires on October 2, 2017, so Steam games might work better on Fedora after that date. ...}}</ref> कम से कम एक निरंतरता पेटेंट, [https://docs.google.com/viewer?url=patentimages.storage.googleapis.com/pdfs/US6775417.pdf US6,775,417], में 165 दिन का विस्तार था। यह निरंतरता पेटेंट 16 मार्च, 2018 को समाप्त हो गया। | ||
== कोडेक्स == | == कोडेक्स == | ||
S3TC एल्गोरिथ्म के पांच रूप हैं (''' | S3TC एल्गोरिथ्म के पांच रूप हैं ('''डीएक्सटी1''' से '''डीएक्सटी5''' नामित, प्रत्येक प्रारूप के लिए Microsoft द्वारा निर्दिष्ट फोरसीसी कोड को संदर्भित करते हुए), प्रत्येक को विशिष्ट प्रकार के इमेज डेटा के लिए डिज़ाइन किया गया है। सभी [[पिक्सेल]] के 4×4 ब्लॉक को 64-[[ अंश ]] या 128-बिट मात्रा में परिवर्तित करते हैं, जिसके परिणामस्वरूप 24-बिट [[ आरजीबी रंग स्थान |आरजीबी कलर स्थान]] इनपुट डेटा के साथ 6:1 या 32-बिट [[ आरजीबीए रंग स्थान |आरजीबीए कलर स्थान]] इनपुट डेटा के साथ 4:1 का कम्प्रेशन अनुपात होता है। S3TC एक [[हानिपूर्ण डेटा संपीड़न|लोस्सी डेटा कम्प्रेशन]] कम्प्रेशन एल्गोरिदम है, जिसके परिणामस्वरूप इमेज गुणवत्ता में गिरावट आती है, एक प्रभाव जो समान मेमोरी आवश्यकताओं को बनाए रखते हुए टेक्सचररिज़ॉल्यूशन को बढ़ाने की क्षमता से कम हो जाता है। हाथ से खींची गई कार्टून जैसी छवियां अच्छी तरह से कम्प्रेशन नहीं होती हैं, न ही सामान्य मैपिंग डेटा, दोनों ही सामान्यतः [[संपीड़न कलाकृतियाँ|कम्प्रेशन कलाकृतियाँ]] उत्पन्न करते हैं। [[ATI Technologies|एटीआई टेक्नोलॉजी]] का [[3Dc]] कंप्रेशन एल्गोरिदम डीएक्सटी5 का एक संशोधन है जिसे सामान्य मानचित्रों के संबंध में S3TC की कमियों को दूर करने के लिए डिज़ाइन किया गया है। [[आईडी सॉफ्टवेयर]] ने [[कयामत 3|डूम 3]] में सामान्यमैप कम्प्रेशन मुद्दों के आसपास काम किया, कम्प्रेशन से पहले लाल घटक को अल्फा चैनल में ले जाया गया और [[पिक्सेल शेडर]] में रेंडरिंग के दौरान इसे वापस ले जाया गया।<ref>{{cite web|url=http://www.gamershell.com/news/14362.html|title=DOOM 3 Video Requirements|last=Duffy|first=Robert|date=July 27, 2004|website=|publisher=Gamershell.com|url-status=dead|archive-url=https://web.archive.org/web/20080103155922/http://www.gamershell.com/news/14362.html|archive-date=January 3, 2008|accessdate=2012-01-25}}</ref> | ||
== | कई आधुनिक इमेज कम्प्रेशन एल्गोरिदम की तरह, S3TC केवल इमेज को डीकंप्रेस करने के लिए उपयोग की जाने वाली विधि को निर्दिष्ट करता है, जिससे कार्यान्वयनकर्ता अपनी विशिष्ट आवश्यकताओं के अनुरूप कम्प्रेशन एल्गोरिदम को डिज़ाइन कर सकते हैं, हालांकि पेटेंट अभी भी कम्प्रेशन एल्गोरिदम को कवर करता है। एनवीडिया जीफोर्स 256 से लेकर जीफोर्स 4 कार्ड तक DXT1 टेक्सचर को प्रस्तुत करने के लिए 16-बिट इंटरपोलेशन का भी उपयोग करते हैं, जिसके परिणामस्वरूप कलर ग्रेडिएंट्स के साथ टेक्सचर को अनपैक करते समय बैंडिंग होती है। फिर, इसने टेक्सचर कम्प्रेशन का एक प्रतिकूल प्रभाव उत्पन्न किया, जो कोडेक के मूल सिद्धांतों से संबंधित नहीं था। | ||
== डीएक्सटी1 == | |||
डीएक्सटी1 (ब्लॉक कंप्रेशन 1 या '''बीसी'''1 के रूप में भी जाना जाता है) S3TC का सबसे छोटा संस्करण है, जो 64 बिट आउटपुट में 16 इनपुट पिक्सल को संग्रहीत करता है, जिसमें दो 16-बिट आरजीबी 5:6:5 कलर मान सम्मिलित हैं। <math>c_0</math> और <math>c_1</math>, और एक 4×4 दो-बिट लुकअप टेबल। | |||
अगर <math>c_0 > c_1</math>(इन रंगों की तुलना दो 16-बिट अहस्ताक्षरित संख्याओं के रूप में व्याख्या करके करें), फिर दो अन्य रंगों की गणना की जाती है, जैसे कि प्रत्येक घटक के लिए, <math display="inline">c_2 = {2 \over 3} c_0 + {1 \over 3} c_1</math> और <math display="inline">c_3 = {1 \over 3} c_0 + {2 \over 3} c_1</math>. | अगर <math>c_0 > c_1</math>(इन रंगों की तुलना दो 16-बिट अहस्ताक्षरित संख्याओं के रूप में व्याख्या करके करें), फिर दो अन्य रंगों की गणना की जाती है, जैसे कि प्रत्येक घटक के लिए, <math display="inline">c_2 = {2 \over 3} c_0 + {1 \over 3} c_1</math> और <math display="inline">c_3 = {1 \over 3} c_0 + {2 \over 3} c_1</math>. | ||
यह मोड एप्पल वीडियो के मोड 0xC0 के समान काम करता है।<ref>Togni, Roberto, et al. "[http://wiki.multimedia.cx/index.php?title=Apple_RPZA Apple RPZA]". MultimediaWiki.</ref> | यह मोड एप्पल वीडियो के मोड 0xC0 के समान काम करता है।<ref>Togni, Roberto, et al. "[http://wiki.multimedia.cx/index.php?title=Apple_RPZA Apple RPZA]". MultimediaWiki.</ref> | ||
अन्यथा, यदि <math>c_0 \le c_1</math>, तब <math display="inline">c_2 = {1 \over 2} c_0 + {1 \over 2} c_1</math> और <math>c_3</math> [[ अल्फ़ा कंपोज़िटिंग | अल्फ़ा कंपोज़िटिंग]] के अनुरूप पारदर्शी काला है। जब रैखिक टेक्सचरफ़िल्टरिंग और अल्फा परीक्षण का उपयोग किया जाता है, तो यह कलर कभी-कभी पारदर्शी क्षेत्र के चारों ओर एक काली सीमा का कारण बनता है, क्योंकि कलर अपारदर्शी टेक्सल और पड़ोसी काले पारदर्शी टेक्सल के कलर के बीच प्रक्षेपित होते हैं। | |||
फिर प्रत्येक पिक्सेल के लिए कलर मान निर्धारित करने के लिए लुकअप टेबल से परामर्श लिया जाता है, जिसका मान 0 के अनुरूप होता है <math>c_0</math> और इसके अनुरूप 3 का मान <math>c_3</math>. | |||
== डीएक्सटी2 और डीएक्सटी3 == | |||
डीएक्सटी2 और डीएक्सटी3 (सामूहिक रूप से ब्लॉक कंप्रेशन 2 या बीसी2 के रूप में भी जाना जाता है) 16 इनपुट पिक्सल (4x4 पिक्सेल ब्लॉक के अनुरूप) को 128 बिट आउटपुट में परिवर्तित करता है, जिसमें 64 बिट [[अल्फा चैनल]] डेटा (प्रत्येक पिक्सेल के लिए 4 बिट) और उसके बाद 64 बिट्स होते हैं। कलर डेटा के बिट्स, डीएक्सटी1 के समान ही एन्कोड किए गए हैं (इस अपवाद के साथ कि डीएक्सटी1 एल्गोरिदम का 4-कलर संस्करण हमेशा उपयोग किया जाता है, यह तय करने के बजाय कि किस संस्करण का उपयोग सापेक्ष मूल्यों के आधार पर किया जाए <math>c_0</math> और <math>c_1</math>). | |||
== | डीएक्सटी2 में, कलर डेटा की व्याख्या [[अल्फा द्वारा पूर्वगुणित]] किए जाने के रूप में की जाती है, डीएक्सटी3 में इसकी व्याख्या अल्फा द्वारा पूर्वगुणित नहीं किए जाने के रूप में की जाती है। सामान्यतः डीएक्सटी2/3 पारभासी और अपारदर्शी क्षेत्रों के बीच तेज अल्फा बदलाव वाली इमेज के लिए उपयुक्त होते हैं। | ||
== डीएक्सटी4 और डीएक्सटी5 == | |||
डीएक्सटी4 और डीएक्सटी5 (सामूहिक रूप से ब्लॉक कंप्रेशन 3 या बीसी3 के रूप में भी जाना जाता है) 16 इनपुट पिक्सल को 128 बिट आउटपुट में परिवर्तित करता है, जिसमें 64 बिट अल्फा चैनल डेटा (दो 8-बिट अल्फा मान और एक 4×4 3-बिट लुकअप टेबल) सम्मिलित है। इसके बाद 64 बिट कलर डेटा (डीएक्सटी1 की तरह ही एन्कोड किया गया)। | |||
अगर <math>\alpha_0 > \alpha_1</math>, फिर छह अन्य अल्फ़ा मानों की गणना की जाती है, जैसे कि <math display="inline">\alpha_2 = {{6\alpha_0 + 1\alpha_1} \over 7}</math>, <math display="inline">\alpha_3 = {{5\alpha_0 + 2\alpha_1} \over 7}</math>, <math display="inline">\alpha_4 = {{4\alpha_0 + 3\alpha_1} \over 7}</math>, <math display="inline">\alpha_5 = {{3\alpha_0 + 4\alpha_1} \over 7}</math>, <math display="inline">\alpha_6 = {{2\alpha_0 + 5\alpha_1} \over 7}</math>, और <math display="inline">\alpha_7 = {{1\alpha_0 + 6\alpha_1} \over 7}</math>. | अगर <math>\alpha_0 > \alpha_1</math>, फिर छह अन्य अल्फ़ा मानों की गणना की जाती है, जैसे कि <math display="inline">\alpha_2 = {{6\alpha_0 + 1\alpha_1} \over 7}</math>, <math display="inline">\alpha_3 = {{5\alpha_0 + 2\alpha_1} \over 7}</math>, <math display="inline">\alpha_4 = {{4\alpha_0 + 3\alpha_1} \over 7}</math>, <math display="inline">\alpha_5 = {{3\alpha_0 + 4\alpha_1} \over 7}</math>, <math display="inline">\alpha_6 = {{2\alpha_0 + 5\alpha_1} \over 7}</math>, और <math display="inline">\alpha_7 = {{1\alpha_0 + 6\alpha_1} \over 7}</math>. | ||
Line 28: | Line 30: | ||
अन्यथा, यदि <math display="inline">\alpha_0 \le \alpha_1</math>, चार अन्य अल्फ़ा मानों की गणना इस प्रकार की जाती है <math display="inline">\alpha_2 = {{4\alpha_0 + 1\alpha_1} \over 5}</math>, <math display="inline">\alpha_3 = {{3\alpha_0 + 2\alpha_1} \over 5}</math>, <math display="inline">\alpha_4 = {{2\alpha_0 + 3\alpha_1} \over 5}</math>, और <math display="inline">\alpha_5 = {{1\alpha_0 + 4\alpha_1} \over 5}</math> साथ <math>\alpha_6 = 0</math> और <math>\alpha_7 = 255</math>. | अन्यथा, यदि <math display="inline">\alpha_0 \le \alpha_1</math>, चार अन्य अल्फ़ा मानों की गणना इस प्रकार की जाती है <math display="inline">\alpha_2 = {{4\alpha_0 + 1\alpha_1} \over 5}</math>, <math display="inline">\alpha_3 = {{3\alpha_0 + 2\alpha_1} \over 5}</math>, <math display="inline">\alpha_4 = {{2\alpha_0 + 3\alpha_1} \over 5}</math>, और <math display="inline">\alpha_5 = {{1\alpha_0 + 4\alpha_1} \over 5}</math> साथ <math>\alpha_6 = 0</math> और <math>\alpha_7 = 255</math>. | ||
फिर प्रत्येक पिक्सेल के लिए अल्फा मान निर्धारित करने के लिए लुकअप | फिर प्रत्येक पिक्सेल के लिए अल्फा मान निर्धारित करने के लिए लुकअप टेबल से परामर्श लिया जाता है, जिसके अनुरूप मान 0 होता है <math>\alpha_0</math> और इसके अनुरूप 7 का मान <math>\alpha_7</math>. डीएक्सटी4 का कलर डेटा अल्फा द्वारा पूर्वगुणित होता है, जबकि डीएक्सटी5 का नहीं। क्योंकि डीएक्सटी4/5 एक इंटरपोलेटेड अल्फा योजना का उपयोग करते हैं, वे सामान्यतः डीएक्सटी2/3 की तुलना में अल्फा (पारदर्शिता) ग्रेडिएंट के लिए बेहतर परिणाम देते हैं। | ||
== आगे के प्रकार == | == आगे के प्रकार == | ||
=== | === बीसी4 और बीसी5 === | ||
{{main|3Dc}} | {{main|3Dc}} | ||
बीसी4 और बीसी5 (ब्लॉक कंप्रेशन 4 और 5) को डायरेक्ट3D 10 में जोड़ा गया है। वे डीएक्सटी4/5 (बीसी3) में पाए जाने वाले अल्फा चैनल एन्कोडिंग का पुन: उपयोग करते हैं।<ref name="reed">{{cite web |last1=Reed |first1=Nathan |title=बीसीएन बनावट संपीड़न प्रारूप को समझना|url=http://www.reedbeta.com/blog/understanding-bcn-texture-compression-formats/ |website=Nathan Reed’s coding blog}}</ref> | |||
* | * बीसी4 16 इनपुट सिंगल-चैनल (जैसे ग्रेस्केल) पिक्सल को आउटपुट के 64 बिट्स में संग्रहीत करता है, जो लगभग एन्कोड किया गया है<ref name=ryg/>बीसी3 अल्फा की तरह ही। विस्तारित पैलेट उच्च गुणवत्ता प्रदान करता है। | ||
* | * बीसी5 आउटपुट के 128 बिट्स में 16 इनपुट डबल-चैनल (उदाहरण के लिए स्पर्शरेखा स्थान सामान्य मानचित्र) पिक्सेल संग्रहीत करता है, जिसमें बीसी4 की तरह एन्कोड किए गए प्रत्येक दो आधे भाग होते हैं। | ||
=== | === बीसी6एच और बीसी7 === | ||
डायरेक्ट3डी 11 में बीसी6एच (कभी-कभी बीसी6) और बीसी7 (ब्लॉक कम्प्रेशन 6एच और 7) जोड़े जाते हैं।<ref name="reed"/>* बीसी6एच 16 इनपुट आरजीबी एचडीआर (फ्लोट16) पिक्सल को 128 बिट आउटपुट में एनकोड करता है। यह अनिवार्य रूप से फ्लोट16 को 16 चिह्न-परिमाण पूर्णांक मान के रूप में मानता है और ऐसे पूर्णांकों को रैखिक रूप से प्रक्षेपित करता है। यह बिना चिह्न परिवर्तन वाले ब्लॉकों के लिए अच्छा काम करता है। कुल 14 मोड परिभाषित किए गए हैं, हालांकि अधिकांश न्यूनतम रूप से भिन्न हैं: केवल दो भविष्यवाणी मोड वास्तव में उपयोग किए जाते हैं।<ref name=ryg>{{cite web |last1=Giesen |first1=Fabian “ryg” |title=जीपीयू बीसीएन डिकोडिंग|url=https://fgiesen.wordpress.com/2021/10/04/gpu-bcn-decoding/ |website=The ryg blog |access-date=24 July 2023 |language=en |date=4 October 2021}}</ref> | |||
* | * बीसी7 16 इनपुट [[ आरजीबीए रंग स्थान |आरजीबी]]8/[[ आरजीबीए रंग स्थान |आरजीबीए]] 8 पिक्सल को 128 बिट आउटपुट में एन्कोड करता है। इसे अत्यधिक उन्नत बीसी3 के रूप में समझा जा सकता है।<ref name=ryg/> | ||
बीसी6एच और बीसी7 में एन्कोडिंग मोड के चयन के साथ बहुत अधिक जटिल एल्गोरिदम है। परिणामस्वरूप गुणवत्ता काफी बेहतर है।<ref name="reed"/>स्वीकृत विचलन की सीमाओं के साथ, ये दो मोड भी अधिक सटीक रूप से निर्दिष्ट हैं। पहले के बीसीएन मोड जीपीयू विक्रेताओं के बीच थोड़े अलग तरीके से डिकोड होते थे।<ref name=ryg/> | |||
== S3टीसी प्रारूप तुलना == | |||
== | |||
{| class="wikitable" style="text-align:center;" | {| class="wikitable" style="text-align:center;" | ||
|- | |- | ||
Line 76: | Line 77: | ||
== डेटा प्रीकंडीशनिंग == | == डेटा प्रीकंडीशनिंग == | ||
ऑन-डिस्क भंडारण और वितरण (टेक्सचरसुपरकंप्रेशन) के लिए बीसीएन | ऑन-डिस्क भंडारण और वितरण (टेक्सचरसुपरकंप्रेशन) के लिए बीसीएन टेक्सचर को और अधिक कम्प्रेशन किया जा सकता है। एक एप्लिकेशन इस अतिरिक्त परत को डीकंप्रेस करेगा और बीसीएन (BCn) डेटा को हमेशा की तरह जीपीयू को भेजेगा। | ||
बीसीएन को ऊडल टेक्सचर के साथ जोड़ा जा सकता है, जो एक लोस्सी प्रीप्रोसेसर है जो इनपुट टेक्सचर को संशोधित करता है ताकि बीसीएन आउटपुट एलजेड77 कंप्रेसर ([[दर-विरूपण अनुकूलन]]) द्वारा अधिक आसानी से कम्प्रेशन हो। बीसी7 विशेष रूप से <nowiki>''बीसी7प्रेप''</nowiki> का भी उपयोग कर सकता है, जो टेक्सचरको अधिक कम्प्रेशन रूप में फिर से एन्कोड करने के लिए एक दोषरहित पास है (डीकंप्रेसन में इसके व्युत्क्रम की आवश्यकता होती है)।<ref>{{cite web |title=ऊडल बनावट संपीड़न|url=http://www.radgametools.com/oodletexture.htm |website=www.radgametools.com}} Open source part mentioned: [https://github.com/richgel999/bc7enc_rdo bc7enc_rdo]</ref> | |||
क्रंच एक अन्य उपकरण है जो आरडीओ करता है और वैकल्पिक रूप से आगे पुनः एन्कोडिंग करता है।<ref>{{Cite web|url=https://github.com/BinomialLLC/crunch|title=क्रंच ओपन सोर्स टेक्सचर कम्प्रेशन लाइब्रेरी|website=GitHub|access-date=2016-09-13}}</ref> | क्रंच एक अन्य उपकरण है जो आरडीओ करता है और वैकल्पिक रूप से आगे पुनः एन्कोडिंग करता है।<ref>{{Cite web|url=https://github.com/BinomialLLC/crunch|title=क्रंच ओपन सोर्स टेक्सचर कम्प्रेशन लाइब्रेरी|website=GitHub|access-date=2016-09-13}}</ref> | ||
2021 में, माइक्रोसॉफ्ट ने विशेष रूप से बीसीएन-कम्प्रेशन टेक्सचर के लिए बीसी पैक कम्प्रेशन एल्गोरिथ्म का उत्पादन किया। एक्सबॉक्स (Xbox) श्रृंखला X और S में बीसीपैक (BCPack) स्ट्रीम को डीकंप्रेस करने के लिए हार्डवेयर समर्थन है।<ref>{{cite web | url=https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/system/overviews/directstorage/directstorage-overview | title=डायरेक्टस्टोरेज अवलोकन - माइक्रोसॉफ्ट गेम डेवलपमेंट किट| date=16 March 2023 }}</ref> | |||
== यह भी देखें == | == यह भी देखें == | ||
* [[S2TC]], पेटेंट रहित समाधान | * [[S2TC]], पेटेंट रहित समाधान | ||
Line 90: | Line 91: | ||
* [[अनुकूली स्केलेबल बनावट संपीड़न|अनुकूली स्केलेबल टेक्सचर कम्प्रेशन]] (एएसटीसी) | * [[अनुकूली स्केलेबल बनावट संपीड़न|अनुकूली स्केलेबल टेक्सचर कम्प्रेशन]] (एएसटीसी) | ||
* [[एरिक्सन बनावट संपीड़न|एरिक्सन टेक्सचर कम्प्रेशन]] (ETC1 और ETC2) | * [[एरिक्सन बनावट संपीड़न|एरिक्सन टेक्सचर कम्प्रेशन]] (ETC1 और ETC2) | ||
* | * कलर सेल कम्प्रेशन | ||
== संदर्भ == | == संदर्भ == |
Revision as of 15:35, 13 December 2023
S3 टेक्सचर कम्प्रेशन (S3TC) (कभी-कभी डीएक्सटीएन, डीएक्सटीसी, या बीसीएन भी कहा जाता है) संबंधित लोस्सी कम्प्रेशन (हानिपूर्ण कम्प्रेशन) टेक्सचर कम्प्रेशन एल्गोरिथ्म का एक समूह है जो मूल रूप से इउर्चा एट अल (Iourcha et al) S3 ग्राफ़िक्स| द्वारा विकसित किया गया हैl S3 ग्राफ़िक्स, लिमिटेड[1][2] उनके सैवेज 3डी कंप्यूटर ग्राफ़िक्स एक्सेलरेटर में उपयोग के लिए है। कम्प्रेशन की विधि पहले प्रकाशित कलर सेल कम्प्रेशन के समान ही है,[3] जो बदले में 1970 के दशक के अंत में प्रकाशित ट्रंकेशन कोडिंग को ब्लॉक करें का रूपांतरण है। कुछ इमेज कम्प्रेशन एल्गोरिदम (उदाहरण के लिए JPEG) के विपरीत, S3TC के निश्चित-दर डेटा कम्प्रेशन ने एकल मेमोरी एक्सेस (cf. कलर सेल कम्प्रेशन और कुछ वेक्टर परिमाणीकरण योजनाओं) के साथ मिलकर इसे हार्डवेयर में टेक्सचरमैपिंग को कम्प्रेशन करने में उपयोग के लिए उपयुक्त बना दिया- त्वरित 3डी कंप्यूटर ग्राफिक्स इसके बाद माइक्रोसॉफ्ट के DirectX 6.0 और OpenGL 1.3 (जीएल_ईएक्सटी_टेक्सचर_कम्प्रेशन_s3tc ओपनजीएल डेवलपमेंट के माध्यम से) में सम्मिलित किए जाने से हार्डवेयर और सॉफ्टवेयर निर्माताओं के बीच प्रौद्योगिकी को व्यापक रूप से अपनाया गया है। जबकि S3 ग्राफ़िक्स अब ग्राफ़िक्स एक्सेलेरेटर बाज़ार में प्रतिस्पर्धी नहीं है, उदाहरण के लिए गेम कंसोल और ग्राफ़िक्स कार्ड में, अक्टूबर 2017 तक S3TC तकनीक के उपयोग के लिए लाइसेंस शुल्क लगाया और एकत्र किया गया है। S3TC के व्यापक उपयोग ने ओपनजीएल (OpenGL) ड्राइवर्स के लिए इसका समर्थन करने की वास्तविक आवश्यकता को जन्म दिया है, लेकिन S3TC की पेटेंट-भारित स्थिति ने ओपन-सोर्स सॉफ़्टवेयर कार्यान्वयन में एक बड़ी बाधा प्रस्तुत की है,[4] जबकि कार्यान्वयन दृष्टिकोण जो पेटेंट किए गए भागों से बचने की कोशिश करते थे, उपस्थित थे।[5]
पेटेंट
S3 टेक्सचर कंप्रेशन पर कई यूएसपीटीओ पेटेंट में से कुछ (जैसे यूएस 5956431 ए) 2 अक्टूबर, 2017 को समाप्त हो गए।[6] कम से कम एक निरंतरता पेटेंट, US6,775,417, में 165 दिन का विस्तार था। यह निरंतरता पेटेंट 16 मार्च, 2018 को समाप्त हो गया।
कोडेक्स
S3TC एल्गोरिथ्म के पांच रूप हैं (डीएक्सटी1 से डीएक्सटी5 नामित, प्रत्येक प्रारूप के लिए Microsoft द्वारा निर्दिष्ट फोरसीसी कोड को संदर्भित करते हुए), प्रत्येक को विशिष्ट प्रकार के इमेज डेटा के लिए डिज़ाइन किया गया है। सभी पिक्सेल के 4×4 ब्लॉक को 64-अंश या 128-बिट मात्रा में परिवर्तित करते हैं, जिसके परिणामस्वरूप 24-बिट आरजीबी कलर स्थान इनपुट डेटा के साथ 6:1 या 32-बिट आरजीबीए कलर स्थान इनपुट डेटा के साथ 4:1 का कम्प्रेशन अनुपात होता है। S3TC एक लोस्सी डेटा कम्प्रेशन कम्प्रेशन एल्गोरिदम है, जिसके परिणामस्वरूप इमेज गुणवत्ता में गिरावट आती है, एक प्रभाव जो समान मेमोरी आवश्यकताओं को बनाए रखते हुए टेक्सचररिज़ॉल्यूशन को बढ़ाने की क्षमता से कम हो जाता है। हाथ से खींची गई कार्टून जैसी छवियां अच्छी तरह से कम्प्रेशन नहीं होती हैं, न ही सामान्य मैपिंग डेटा, दोनों ही सामान्यतः कम्प्रेशन कलाकृतियाँ उत्पन्न करते हैं। एटीआई टेक्नोलॉजी का 3Dc कंप्रेशन एल्गोरिदम डीएक्सटी5 का एक संशोधन है जिसे सामान्य मानचित्रों के संबंध में S3TC की कमियों को दूर करने के लिए डिज़ाइन किया गया है। आईडी सॉफ्टवेयर ने डूम 3 में सामान्यमैप कम्प्रेशन मुद्दों के आसपास काम किया, कम्प्रेशन से पहले लाल घटक को अल्फा चैनल में ले जाया गया और पिक्सेल शेडर में रेंडरिंग के दौरान इसे वापस ले जाया गया।[7]
कई आधुनिक इमेज कम्प्रेशन एल्गोरिदम की तरह, S3TC केवल इमेज को डीकंप्रेस करने के लिए उपयोग की जाने वाली विधि को निर्दिष्ट करता है, जिससे कार्यान्वयनकर्ता अपनी विशिष्ट आवश्यकताओं के अनुरूप कम्प्रेशन एल्गोरिदम को डिज़ाइन कर सकते हैं, हालांकि पेटेंट अभी भी कम्प्रेशन एल्गोरिदम को कवर करता है। एनवीडिया जीफोर्स 256 से लेकर जीफोर्स 4 कार्ड तक DXT1 टेक्सचर को प्रस्तुत करने के लिए 16-बिट इंटरपोलेशन का भी उपयोग करते हैं, जिसके परिणामस्वरूप कलर ग्रेडिएंट्स के साथ टेक्सचर को अनपैक करते समय बैंडिंग होती है। फिर, इसने टेक्सचर कम्प्रेशन का एक प्रतिकूल प्रभाव उत्पन्न किया, जो कोडेक के मूल सिद्धांतों से संबंधित नहीं था।
डीएक्सटी1
डीएक्सटी1 (ब्लॉक कंप्रेशन 1 या बीसी1 के रूप में भी जाना जाता है) S3TC का सबसे छोटा संस्करण है, जो 64 बिट आउटपुट में 16 इनपुट पिक्सल को संग्रहीत करता है, जिसमें दो 16-बिट आरजीबी 5:6:5 कलर मान सम्मिलित हैं। और , और एक 4×4 दो-बिट लुकअप टेबल।
अगर (इन रंगों की तुलना दो 16-बिट अहस्ताक्षरित संख्याओं के रूप में व्याख्या करके करें), फिर दो अन्य रंगों की गणना की जाती है, जैसे कि प्रत्येक घटक के लिए, और . यह मोड एप्पल वीडियो के मोड 0xC0 के समान काम करता है।[8]
अन्यथा, यदि , तब और अल्फ़ा कंपोज़िटिंग के अनुरूप पारदर्शी काला है। जब रैखिक टेक्सचरफ़िल्टरिंग और अल्फा परीक्षण का उपयोग किया जाता है, तो यह कलर कभी-कभी पारदर्शी क्षेत्र के चारों ओर एक काली सीमा का कारण बनता है, क्योंकि कलर अपारदर्शी टेक्सल और पड़ोसी काले पारदर्शी टेक्सल के कलर के बीच प्रक्षेपित होते हैं।
फिर प्रत्येक पिक्सेल के लिए कलर मान निर्धारित करने के लिए लुकअप टेबल से परामर्श लिया जाता है, जिसका मान 0 के अनुरूप होता है और इसके अनुरूप 3 का मान .
डीएक्सटी2 और डीएक्सटी3
डीएक्सटी2 और डीएक्सटी3 (सामूहिक रूप से ब्लॉक कंप्रेशन 2 या बीसी2 के रूप में भी जाना जाता है) 16 इनपुट पिक्सल (4x4 पिक्सेल ब्लॉक के अनुरूप) को 128 बिट आउटपुट में परिवर्तित करता है, जिसमें 64 बिट अल्फा चैनल डेटा (प्रत्येक पिक्सेल के लिए 4 बिट) और उसके बाद 64 बिट्स होते हैं। कलर डेटा के बिट्स, डीएक्सटी1 के समान ही एन्कोड किए गए हैं (इस अपवाद के साथ कि डीएक्सटी1 एल्गोरिदम का 4-कलर संस्करण हमेशा उपयोग किया जाता है, यह तय करने के बजाय कि किस संस्करण का उपयोग सापेक्ष मूल्यों के आधार पर किया जाए और ).
डीएक्सटी2 में, कलर डेटा की व्याख्या अल्फा द्वारा पूर्वगुणित किए जाने के रूप में की जाती है, डीएक्सटी3 में इसकी व्याख्या अल्फा द्वारा पूर्वगुणित नहीं किए जाने के रूप में की जाती है। सामान्यतः डीएक्सटी2/3 पारभासी और अपारदर्शी क्षेत्रों के बीच तेज अल्फा बदलाव वाली इमेज के लिए उपयुक्त होते हैं।
डीएक्सटी4 और डीएक्सटी5
डीएक्सटी4 और डीएक्सटी5 (सामूहिक रूप से ब्लॉक कंप्रेशन 3 या बीसी3 के रूप में भी जाना जाता है) 16 इनपुट पिक्सल को 128 बिट आउटपुट में परिवर्तित करता है, जिसमें 64 बिट अल्फा चैनल डेटा (दो 8-बिट अल्फा मान और एक 4×4 3-बिट लुकअप टेबल) सम्मिलित है। इसके बाद 64 बिट कलर डेटा (डीएक्सटी1 की तरह ही एन्कोड किया गया)।
अगर , फिर छह अन्य अल्फ़ा मानों की गणना की जाती है, जैसे कि , , , , , और .
अन्यथा, यदि , चार अन्य अल्फ़ा मानों की गणना इस प्रकार की जाती है , , , और साथ और .
फिर प्रत्येक पिक्सेल के लिए अल्फा मान निर्धारित करने के लिए लुकअप टेबल से परामर्श लिया जाता है, जिसके अनुरूप मान 0 होता है और इसके अनुरूप 7 का मान . डीएक्सटी4 का कलर डेटा अल्फा द्वारा पूर्वगुणित होता है, जबकि डीएक्सटी5 का नहीं। क्योंकि डीएक्सटी4/5 एक इंटरपोलेटेड अल्फा योजना का उपयोग करते हैं, वे सामान्यतः डीएक्सटी2/3 की तुलना में अल्फा (पारदर्शिता) ग्रेडिएंट के लिए बेहतर परिणाम देते हैं।
आगे के प्रकार
बीसी4 और बीसी5
बीसी4 और बीसी5 (ब्लॉक कंप्रेशन 4 और 5) को डायरेक्ट3D 10 में जोड़ा गया है। वे डीएक्सटी4/5 (बीसी3) में पाए जाने वाले अल्फा चैनल एन्कोडिंग का पुन: उपयोग करते हैं।[9]
- बीसी4 16 इनपुट सिंगल-चैनल (जैसे ग्रेस्केल) पिक्सल को आउटपुट के 64 बिट्स में संग्रहीत करता है, जो लगभग एन्कोड किया गया है[10]बीसी3 अल्फा की तरह ही। विस्तारित पैलेट उच्च गुणवत्ता प्रदान करता है।
- बीसी5 आउटपुट के 128 बिट्स में 16 इनपुट डबल-चैनल (उदाहरण के लिए स्पर्शरेखा स्थान सामान्य मानचित्र) पिक्सेल संग्रहीत करता है, जिसमें बीसी4 की तरह एन्कोड किए गए प्रत्येक दो आधे भाग होते हैं।
बीसी6एच और बीसी7
डायरेक्ट3डी 11 में बीसी6एच (कभी-कभी बीसी6) और बीसी7 (ब्लॉक कम्प्रेशन 6एच और 7) जोड़े जाते हैं।[9]* बीसी6एच 16 इनपुट आरजीबी एचडीआर (फ्लोट16) पिक्सल को 128 बिट आउटपुट में एनकोड करता है। यह अनिवार्य रूप से फ्लोट16 को 16 चिह्न-परिमाण पूर्णांक मान के रूप में मानता है और ऐसे पूर्णांकों को रैखिक रूप से प्रक्षेपित करता है। यह बिना चिह्न परिवर्तन वाले ब्लॉकों के लिए अच्छा काम करता है। कुल 14 मोड परिभाषित किए गए हैं, हालांकि अधिकांश न्यूनतम रूप से भिन्न हैं: केवल दो भविष्यवाणी मोड वास्तव में उपयोग किए जाते हैं।[10]
- बीसी7 16 इनपुट आरजीबी8/आरजीबीए 8 पिक्सल को 128 बिट आउटपुट में एन्कोड करता है। इसे अत्यधिक उन्नत बीसी3 के रूप में समझा जा सकता है।[10]
बीसी6एच और बीसी7 में एन्कोडिंग मोड के चयन के साथ बहुत अधिक जटिल एल्गोरिदम है। परिणामस्वरूप गुणवत्ता काफी बेहतर है।[9]स्वीकृत विचलन की सीमाओं के साथ, ये दो मोड भी अधिक सटीक रूप से निर्दिष्ट हैं। पहले के बीसीएन मोड जीपीयू विक्रेताओं के बीच थोड़े अलग तरीके से डिकोड होते थे।[10]
S3टीसी प्रारूप तुलना
FOURCC | DX 10/11 name | विवरण | अल्फ़ा पूर्वगुणित? | कम्प्रेशन रेश्यो | टेक्सचर टाइप |
---|---|---|---|---|---|
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 |
डेटा प्रीकंडीशनिंग
ऑन-डिस्क भंडारण और वितरण (टेक्सचरसुपरकंप्रेशन) के लिए बीसीएन टेक्सचर को और अधिक कम्प्रेशन किया जा सकता है। एक एप्लिकेशन इस अतिरिक्त परत को डीकंप्रेस करेगा और बीसीएन (BCn) डेटा को हमेशा की तरह जीपीयू को भेजेगा।
बीसीएन को ऊडल टेक्सचर के साथ जोड़ा जा सकता है, जो एक लोस्सी प्रीप्रोसेसर है जो इनपुट टेक्सचर को संशोधित करता है ताकि बीसीएन आउटपुट एलजेड77 कंप्रेसर (दर-विरूपण अनुकूलन) द्वारा अधिक आसानी से कम्प्रेशन हो। बीसी7 विशेष रूप से ''बीसी7प्रेप'' का भी उपयोग कर सकता है, जो टेक्सचरको अधिक कम्प्रेशन रूप में फिर से एन्कोड करने के लिए एक दोषरहित पास है (डीकंप्रेसन में इसके व्युत्क्रम की आवश्यकता होती है)।[11]
क्रंच एक अन्य उपकरण है जो आरडीओ करता है और वैकल्पिक रूप से आगे पुनः एन्कोडिंग करता है।[12]
2021 में, माइक्रोसॉफ्ट ने विशेष रूप से बीसीएन-कम्प्रेशन टेक्सचर के लिए बीसी पैक कम्प्रेशन एल्गोरिथ्म का उत्पादन किया। एक्सबॉक्स (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.