एक .xmp फ़ाइल से उस तस्वीर तक जो आप रखते हैं।

प्रीसेट एक ही बार पढ़ा जाकर पैरामीटरों का समूह बनता है, व्यूफ़ाइंडर के लिए 3D लुकअप टेबल में ढाल दिया जाता है, और शटर दबते ही बिना संपीड़न वाले सेंसर फ़्रेम पर पूरी फ़्लोटिंग-पॉइंट सटीकता के साथ दोबारा चलता है। Rust में लिखा एक ही इंप्लीमेंटेशन दोनों रास्ते चलाता है — इसी वजह से प्रीव्यू और तस्वीर आपस में मेल खाते हैं।

अंतिम अद्यतन:

एक तस्वीर जिस रास्ते से गुज़रती है

  1. फ़ाइल पढ़ी जाती है

    .xmp प्रीसेट दरअसल XML है। उसमें मौजूद हर Camera Raw एट्रिब्यूट एक ही पैरामीटर-समूह में पढ़ लिया जाता है: व्हाइट बैलेंस और एक्सपोज़र, टोन और कर्व, HSL, कलर ग्रेडिंग, डिटेल, इफ़ेक्ट, और अगर मास्क हों तो मास्क भी। जो एट्रिब्यूट इंजन नहीं पहचानता उन्हें त्रुटि मानने के बजाय अनदेखा कर दिया जाता है, इसलिए किसी नए Lightroom से निर्यात किया प्रीसेट भी वह सब लेकर लोड होता है जो वह समझ पाता है।

  2. प्रीसेट एक पाइपलाइन बन जाता है

    वे पैरामीटर एक तय क्रम वाली प्रक्रियाओं की श्रृंखला बन जाते हैं — पहले व्हाइट बैलेंस और एक्सपोज़र, फिर टोन और कर्व, फिर रंग, फिर स्थानिक काम: क्लैरिटी, धुंध हटाना, शार्पनिंग, मास्क, विनेट और ग्रेन। क्रम तय है, क्योंकि वही समायोजन दूसरे क्रम में लगाने पर वही तस्वीर नहीं बनती।

  3. व्यूफ़ाइंडर को लुकअप टेबल मिलती है

    जो कुछ सिर्फ़ पिक्सल के अपने रंग पर निर्भर है — कर्व, HSL, कलर ग्रेडिंग, पॉइंट कलर — वह प्रीसेट बदलते ही एक बार 3D लुकअप टेबल में ढाल दिया जाता है। उसके बाद GPU वही टेबल हर फ़्रेम पर बिना अतिरिक्त लागत के लगाता रहता है, और इसी वजह से लुक लाइव कैमरा फ़ीड के साथ चल पाता है।

  4. शटर असली प्रक्रिया चलाता है

    शटर दबाते ही वही पाइपलाइन पूरे बिना-संपीड़न सेंसर फ़्रेम पर फ़्लोटिंग पॉइंट में दोबारा चलती है, जिसमें लुकअप टेबल का कोई अनुमान शामिल नहीं होता। हेलेशन और ग्रेन दोनों रास्तों पर एक ही कोड इस्तेमाल करते हैं, इसलिए जो बनावट आपने फ़्रेम में देखी वही आपको मिलती है।

  5. मूल फ़्रेम बचा रहता है

    प्रीसेट लगी तस्वीर के साथ एक अनछुई कॉपी डिफ़ॉल्ट रूप से सहेजी जाती है, और RAW मोड में बिना छेड़ा सेंसर डेटा अपने अलग ProRAW DNG में लिखा जाता है। लुक लगाना एक फ़ाइल हटाकर पलटा जा सकता है; बिना पूछे कुछ भी तस्वीर में पक्का नहीं किया जाता।

प्रीव्यू और तस्वीर मेल क्यों खाते हैं

लाइव फ़िल्टर देने वाले ज़्यादातर कैमरे प्रीव्यू के लिए एक कोड चलाते हैं और फ़ाइल के लिए दूसरा, और दोनों धीरे-धीरे अलग होते जाते हैं — «सपाट शूट करो, बाद में ग्रेड कर लेना» वाली आम सलाह यहीं से आती है।

यहाँ दोनों रास्ते एक ही पैरामीटरों के साथ एक ही Rust इंप्लीमेंटेशन को बुलाते हैं। प्रीव्यू सिर्फ़ सटीकता के बदले रफ़्तार लेता है, और कुछ नहीं: हर पिक्सल पर गणना करने के बजाय ग्रिड पर लिए गए नमूनों की एक टेबल। कौन-सी प्रक्रिया, किस क्रम में, किस मान के साथ — यह सब साझा है।

लुकअप टेबल जो नहीं संभाल सकती

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

यही वजह है कि कई मास्क वाला प्रीसेट व्यूफ़ाइंडर में बिना मास्क वाले से भारी पड़ता है: हर मास्क का मतलब है हर फ़्रेम पर पूरे परदे के कई GPU पास, जबकि उसका रंग वाला काम टेबल में मुफ़्त में समा चुका था।

अनुमान नहीं, Lightroom से मिलान

HSL के सैचुरेशन और ल्यूमिनेंस ऑपरेटर सूत्र का अंदाज़ा लगाकर दोबारा नहीं बनाए गए, बल्कि Lightroom के अपने आउटपुट से मिलाकर तय किए गए हैं — इसलिए Lightroom में बना प्रीसेट वहीं उतरता है जहाँ उसके रचयिता ने उसे रखा था।

जहाँ कोई नियंत्रण सचमुच लागू नहीं है, वहाँ इंजन उसे तटस्थ मानकर रेंडर करता है और यह बता भी सकता है, बजाय इसके कि लगभग मिलती-जुलती कोई चीज़ रख दे। प्रीसेट किसी के जान-बूझकर चुने हुए अंकों का समूह है; चुपचाप दूसरे अंक रेंडर करना कुछ भी न रेंडर करने से बुरा है।

कुछ भी फ़ोन से बाहर नहीं जाता

कोई सर्वर है ही नहीं। पढ़ना, रेंडर करना, तस्वीर लेना और निर्यात — सब फ़ोन पर होता है, और तस्वीरें सीधे आपकी लाइब्रेरी में लिखी जाती हैं।

प्रीसेट लाने के लिए Google Drive या OneDrive में साइन इन करने पर उसका टोकन iOS Keychain में रखा जाता है और सिर्फ़ .xmp फ़ाइलें पढ़ने के काम आता है।