कैसे पृथ्वी पर आप 2BPP से सभ्य रंग प्राप्त करते हैं?


11

मैं PowerVR बनावट में देख रहा हूं, और कई बनावटों में चला गया है जो स्पष्ट रूप से प्रति पिक्सेल 2 बिट्स हैं। यह, स्पष्ट रूप से, मेरे दिमाग को चोट पहुँचाता है। जब आप केवल पिक्सेल प्रति 4 संभावित अवस्थाएँ रखते हैं, तो किसी को आधे रंग का सभ्य रंग कैसे मिलता है? मुझे इस तरह के करतब के पीछे संपीड़न के बारे में बात करने वाले किसी भी संसाधन से प्यार है। धन्यवाद!


JPG के साथ, आप 1BPP के साथ एक सभ्य रंग प्राप्त कर सकते हैं :)
इवान कुकिर

जवाबों:


13

PVRTC 2BPP एन्कोडिंग, जैसा कि इस पत्र में पेश किया गया है, एक छवि को 8x4-टेक्सल ब्लॉक में विभाजित करता है, और प्रत्येक ब्लॉक को संकुचित करता है जैसे कि प्रत्येक बत्तीस टेक्सल ब्लॉक के लिए केवल दो RGB रंग जमा होते हैं।

बत्तीस टेक्सस में से कोई भी अपने स्वयं के एक रंग को संग्रहीत नहीं करता है - प्रत्येक टेक्सल केवल जानकारी देता है कि अपने 8x4-टेक्सल ब्लॉक के दो आरजीबी रंगों के बीच कैसे मिश्रण किया जाए।

यदि स्रोत छवि में 32 रंगों के इंद्रधनुष के साथ 8x4 टेक्सल ब्लॉक है, तो पीवीआरटीसी 2 बीपीपी संपीड़न इसकी गुणवत्ता बनाए रखने का बहुत खराब काम करेगा, क्योंकि पीवीआरटीसी 2 बीपीपी में प्रत्येक 8x4 टेक्सल ब्लॉक को मिश्रण करने के लिए केवल दो आरजीबी रंग हैं।


चित्त आकर्षण करनेवाला! आपका बहुत बहुत धन्यवाद। अफसोस की बात है, मुझे आपके द्वारा लिंक किए गए पेपर को लोड करने में बहुत परेशानी हो रही है। शायद यह अमेज़ॅन के ईसी 2 पर होस्ट किया गया है? ;)
तोजी

6

बनावट संपीड़न पिक्सेल को संपीड़ित नहीं करता है। यह पिक्सल के ब्लॉक को कंप्रेस करता है। जब एक व्यक्तिगत पिक्सेल को संदर्भित किया जाता है, तो GPU यह गणना करता है कि कौन सा पिक्सेल पिक्सेल का प्रतिनिधित्व करता है। फिर यह उस पिक्सेल का रंग प्राप्त करने के लिए पूरे ब्लॉक को संसाधित करता है।

एक उदाहरण

आरजीबी बनावट पर ब्लॉक आकार 4x4 पिक्सल है मान लें। असम्पीडित, प्रत्येक ब्लॉक 4x4x3 = 48बनावट मेमोरी में बाइट्स का उपभोग करता है ।
अब संपीड़न एल्गोरिदम प्रत्येक चैनल (RGB) के लिए औसत की गणना करेगा और इसे ब्लॉक (3 बाइट्स) के साथ संग्रहीत करेगा। अब प्रत्येक पिक्सेल को औसत समायोजित करने के लिए 2 बिट देता है ताकि पिक्सेल अपने मूल रंग के करीब हो। एक और 4x4x2x3/8 = 12बाइट्स।
इस नए आविष्कार किए गए कंप्रेसर द्वारा उपयोग किए जाने वाले कुल बाइट्स 15 बाइट्स प्रति ब्लॉक, 31.25% का संपीड़न अनुपात है।

मेरे पौराणिक कंप्रेसर 7.5 बीपीपी का उपयोग करता है। यह उतना अच्छा नहीं है जितना कि 2 bpp pvrtc हासिल कर सकता है, लेकिन अब आपको इस बात का अंदाजा है कि 2 बीपीपी कैसे प्राप्त किया जा सकता है।

अद्यतन:
मैं सिर्फ pvrtc के लिए विकिपीडिया पृष्ठ को देखा । ऐसा लगता है कि pvrtc पारंपरिक ब्लॉक आधारित संपीड़न का उपयोग नहीं करता है। यहां कागज है जो ब्लॉक आधारित संपीड़न कार्यों का वर्णन करता है और कैसे pvrtc भिन्न होता है। विशेष ध्यान दें: ब्लॉक आधारित फिल्टर 4bpp (कोई अल्फा) का उपयोग करके सभ्य दिखने वाली छवियों का उत्पादन कर सकते हैं, जबकि nvrtc 2 जीबीपी के साथ ऐसा कर सकते हैं।


1

@ तोजी, जिस साइट पर पेपर चल रहा है वह थोड़ा मनमौजी है लेकिन इसने आज सुबह मेरे लिए काम किया। असफल होने पर, यदि आपके पास ACM / SIGGRAPH तक पहुँच है, तो इसे यहाँ होस्ट किया गया है । अजीब बात है, यह IMG / PowerVR डेवलपर वेबसाइट (मुफ्त पंजीकरण) पर भी था , लेकिन मुझे सही अनुभाग नहीं मिल रहा है। :-(

[अद्यतन] यह अभी भी यहाँ आईएमजी साइट पर है [/ अद्यतन]

@bmcnet: PVRTC, ब्लॉक, जैसे, ETC या S3TC में बनावट को नहीं तोड़ता है। एफडब्ल्यूआईडब्ल्यू, मैंने ब्लॉक-आधारित बनावट के साथ प्रयोग किया, लेकिन मुझे आत्म-निहित ब्लॉकों में पर्याप्त डेटा पैक करने का तरीका नहीं मिला और अभी भी मुझे जो परिणाम चाहिए थे। इसके बजाय, यह एक 'वैश्विक' बनावट संपीड़न प्रणाली का थोड़ा अधिक है। इसमें 2 कम रिज़ॉल्यूशन की छवियां हैं, जो इसे लक्ष्य रेस तक बिलिनियरली अपस्केल करती हैं, और फिर इन्हें टेक्स-बाय-टेक्सल आधार पर एक साथ मिलाती हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.