बिट ब्लिट

बिट ब्लिट (जिसे BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt आदि भी लिखा जाता है, जो बिट ब्लॉक ट्रांसफर के लिए है) एक डेटा ऑपरेशन है जो आमतौर पर कंप्यूटर चित्रलेख में उपयोग किया जाता है जिसमें कई बिटमैप्स को एक का उपयोग करके एक में जोड़ा जाता है। Truth_table#Binary_operations.

ऑपरेशन में कम से कम दो बिटमैप शामिल होते हैं: एक स्रोत (या अग्रभूमि) और एक गंतव्य (या पृष्ठभूमि), और संभवतः एक तीसरा जिसे मुक्त स्टैंसिल कहा जाता है। परिणाम चौथे बिटमैप पर लिखा जा सकता है, हालांकि अक्सर यह गंतव्य को बदल देता है। निर्दिष्ट रास्टर ऑपरेशन (आरओपी) के अनुसार प्रत्येक के पिक्सल को बिटवाइज़ संयोजित किया जाता है और फिर परिणाम को गंतव्य पर लिखा जाता है। आरओपी अनिवार्य रूप से एक बूलियन तर्क फॉर्मूला है। सबसे स्पष्ट आरओपी स्रोत के साथ गंतव्य को अधिलेखित कर देता है। अन्य आरओपी में लॉजिकल संयोजन, तार्किक संयोजन, एक्सओआर, और नकारात्मक संचालन शामिल हो सकते हैं। कमोडोर अमिगा के ग्राफिक्स चिपसेट (और अन्य) तीन इनपुट के साथ 256 संभावित बूलियन कार्यों में से किसी का उपयोग करके तीन स्रोत बिटमैप्स को जोड़ सकते हैं।

आधुनिक ग्राफ़िक्स सॉफ़्टवेयर ने लगभग पूरी तरह से बिटवाइज़ ऑपरेशंस को अल्फा रचना जैसे प्रभावों के लिए उपयोग किए जाने वाले अधिक सामान्य गणितीय ऑपरेशंस के साथ बदल दिया है। ऐसा इसलिए है क्योंकि रंग डिस्प्ले पर बिटवाइज़ ऑपरेशन आमतौर पर ऐसे परिणाम नहीं देते हैं जो रोशनी या स्याही के भौतिक संयोजन के समान होते हैं। कुछ सॉफ़्टवेयर अभी भी इंटरएक्टिव हाइलाइट आयतों या क्षेत्र की सीमाओं को आकर्षित करने के लिए XOR का उपयोग करते हैं; जब यह छवियों को रंगने के लिए किया जाता है, तो असामान्य परिणामी रंग आसानी से देखे जा सकते हैं।

उत्पत्ति
बिट-बाउंड्री ब्लॉक ट्रांसफर के लिए खड़े ज़ेरॉक्स ऑल्टो कंप्यूटर के लिए नाम BitBLT रूटीन से निकला है। डैन इंगल्स, लैरी टेस्लर, बॉब स्प्राउल और डायना मीरा ने स्मॉलटाक -72 सिस्टम के लिए नवंबर 1975 में ज़ेरॉक्स PARC में इस ऑपरेशन को प्रोग्राम किया। डैन इंगल्स ने बाद में माइक्रोकोड में एक नया डिज़ाइन किया गया संस्करण लागू किया।

विभिन्न बिट ब्लिट ऑपरेशंस के लिए तेज़ तरीकों के विकास ने कैरेक्टर ग्राफिक्स (टेक्स्ट मोड) का उपयोग करने से लेकर हर चीज के लिए रास्टर ग्राफिक्स (बिटमैप) का उपयोग करने के लिए कंप्यूटर डिस्प्ले के विकास को प्रोत्साहन दिया। मशीनें जो 2डी कंप्यूटर ग्राफिक्स (जैसे विडियो गेम कंसोल) के प्रदर्शन पर बहुत अधिक निर्भर करती हैं, अक्सर विशेष-उद्देश्य सर्किट्री होती हैं जिसे बन जाता है कहा जाता है।

नकाबपोश ब्लिट कार्यान्वयन का उदाहरण
ब्लिटिंग के लिए एक क्लासिक उपयोग एक पृष्ठभूमि पर (कंप्यूटर ग्राफिक्स) पारदर्शी स्प्राइट (कंप्यूटर ग्राफिक्स) को प्रस्तुत करना है। इस उदाहरण में एक पृष्ठभूमि छवि, स्प्राइट और 1-बिट मास्क का उपयोग किया जाता है। चूंकि मास्क 1-बिट है, इसलिए अल्फा कंपोज़िटिंग#Alpha ब्लेंडिंग के माध्यम से आंशिक पारदर्शिता की कोई संभावना नहीं है।

एक लूप जो मास्क में प्रत्येक बिट की जांच करता है और मास्क सेट होने पर ही पिक्सेल को स्प्राइट से कॉपी करता है, हार्डवेयर की तुलना में बहुत धीमा होगा जो प्रत्येक पिक्सेल पर ठीक उसी ऑपरेशन को लागू कर सकता है। इसके बजाय एक नकाबपोश ब्लिट को AND और OR रास्टर संचालन का उपयोग करके दो नियमित BitBlit संचालन के साथ लागू किया जा सकता है।

इसे उत्पन्न करने के लिए छवि पर स्प्राइट को विभिन्न स्थितियों में खींचा जाता है:

तकनीक
स्प्राइट तैयार करते समय रंगों का बहुत महत्व होता है। मास्क पिक्सेल 0 (काला) होते हैं जहाँ भी संबंधित स्प्राइट पिक्सेल प्रदर्शित किया जाना है, और 1 (सफ़ेद) जहाँ भी पृष्ठभूमि को संरक्षित करने की आवश्यकता होती है। स्प्राइट 0 (काला) कहीं भी होना चाहिए जहां इसे पारदर्शी माना जाता है, लेकिन ध्यान दें कि गैर-पारदर्शी क्षेत्रों में काले रंग का उपयोग किया जा सकता है।

पहले ब्लिट में, रास्टर ऑपरेटर बिटवाइज़ ऑपरेशन#AND का उपयोग करके मास्क को बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान ANDed 0 के बराबर है, और 1 के साथ कोई भी मान अपरिवर्तित है, काले क्षेत्र बनाए जाते हैं जहां वास्तविक स्प्राइट दिखाई देंगे, जबकि शेष पृष्ठभूमि को अकेला छोड़ देंगे।

दूसरे ब्लिट में, स्प्राइट को बिटवाइज़ ऑपरेशन #OR के रास्टर ऑपरेटर का उपयोग करके नए परिवर्तित बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान अपरिवर्तित है, पृष्ठभूमि अप्रभावित है और काले क्षेत्र वास्तविक स्प्राइट छवि से भरे हुए हैं।

सफेद पृष्ठभूमि और सफेद-पर-काले मास्क के साथ स्प्राइट का उपयोग करके समान प्रभाव प्राप्त करना भी संभव है। इस मामले में, मास्क पहले ओरेड होगा, और स्प्राइट एंडेड होगा।

ब्लिटिंग बनाम हार्डवेयर स्प्राइट्स
ब्लिटिंग हार्डवेयर-स्प्राइट (कंप्यूटर ग्राफिक्स) ड्राइंग के समान है, जिसमें दोनों सिस्टम स्क्रीन पर अलग-अलग स्थानों पर एक पैटर्न, आमतौर पर एक वर्ग क्षेत्र को पुन: पेश करते हैं। हार्डवेयर स्प्राइट्स को अलग मेमोरी में संग्रहीत होने का लाभ मिलता है, और इसलिए मुख्य डिस्प्ले मेमोरी को परेशान नहीं करता है। इससे उन्हें बिना किसी प्रभाव के, पृष्ठभूमि को कवर करते हुए प्रदर्शन के चारों ओर ले जाने की अनुमति मिलती है।

ब्लिटिंग स्क्रीन के बारे में उसी प्रकार के पैटर्न को स्थानांतरित करता है, लेकिन बाकी डिस्प्ले के समान मेमोरी में लिखकर ऐसा करता है। इसका मतलब यह है कि हर बार जब स्क्रीन पर एक अग्रभूमि पैटर्न रखा जाता है, तो नीचे कोई भी पृष्ठभूमि पिक्सेल अधिलेखित या क्षतिग्रस्त हो जाता है। यह सॉफ्टवेयर पर निर्भर है कि वह दो बार ब्लिटिंग करके इस क्षति की मरम्मत करे, एक बार बदले गए पिक्सेल को पुनर्स्थापित करने के लिए, और फिर अग्रभूमि पैटर्न को अपने नए स्थान पर रखने के लिए। इसे करने का एक तरीका यह है कि वीआरएएम ऑफस्क्रीन में आवश्यक पैटर्न को स्टोर किया जाए और प्रभावित डिस्प्ले सेक्शन को अस्थायी रूप से स्टोर करने के लिए स्टैक के रूप में दूसरे क्षेत्र को ऑफस्क्रीन आरक्षित किया जाए। यह मानते हुए कि ग्राफिक्स चिप में वीआरएएम समर्पित है, यह सिस्टम रैम पर तनाव को कम करने के लिए उपयोगी है, लेकिन पुराने पीसी सिस्टम पर बैंडविड्थ सीमित आईएसए विस्तार स्लॉट भी है।

हालाँकि, इसे अनुकूलित करने के कई तरीके हैं। यदि स्क्रीन के बड़े क्षेत्रों को पैटर्न द्वारा ले लिया जाता है, तो प्रत्येक पैटर्न को व्यक्तिगत रूप से मिटाने के बजाय पृष्ठभूमि को स्क्रीन पर ब्लिट करना अधिक कुशल हो सकता है। भिन्नता में स्क्रीन को खंडों में विभाजित करना और केवल उन खंडों को मिटाना शामिल है, जिन पर पैटर्न बनाए गए हैं। इस तकनीक को गंदे आयत के रूप में जाना जाता है।

यह भी देखें

 * अल्फा रचना
 * मास्क (कंप्यूटिंग), यहां स्टैंसिल के रूप में उपयोग किया जाता है
 * ब्लिटर

बाहरी संबंध

 * Performance demonstration coded in Flash/AS3
 * Xerox Inter-Office Memorandum 19 November 1975