हार्डवेयर से तेज़ी से चलने वाले ऐनिमेशन की क्षमताओं में अपडेट

खास जानकारी: Chromium, एसवीजी ऐनिमेशन, प्रतिशत पर आधारित ट्रांसफ़ॉर्मेशन, और जल्द ही बैकग्राउंड-रंग और क्लिप-पाथ ऐनिमेशन के लिए, हार्डवेयर-ऐक्सेलरेशन की सुविधाओं को अपने-आप अपडेट कर रहा है.

वेब ऐनिमेशन की परफ़ॉर्मेंस के बारे में बात करते समय, "हार्डवेयर से तेज़ किए गए" और "जीपीयू से तेज़ किए गए" ऐनिमेशन के शब्द दिख सकते हैं. लेकिन इनका क्या मतलब है? हार्डवेयर से तेज़ किए गए स्टाइल, ऐसे स्टाइल होते हैं जो विज़ुअल स्टाइल को रेंडर करने के लिए, सीपीयू (सेंट्रल प्रोसेसिंग यूनिट) के बजाय जीपीयू (ग्राफ़िकल प्रोसेसिंग यूनिट) का इस्तेमाल करते हैं. इसकी वजह यह है कि सीपीयू की तुलना में जीपीयू, वेब पेज पर विज़ुअल में होने वाले बदलावों को तेज़ी से रेंडर कर सकता है.

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

हार्डवेयर से ऐनिमेशन की परफ़ॉर्मेंस बेहतर करने की सुविधा चालू करना

हार्डवेयर से तेज़ किए गए ऐनिमेशन, लेयर के तौर पर कॉम्पोज़ किए जाते हैं. इससे डेवलपर को विज़ुअल रेंडरिंग की परफ़ॉर्मेंस को बेहतर बनाने के लिए, 60 FPS (फ़्रेम प्रति सेकंड) के ऐनिमेशन बनाने में मदद मिलती है. फ़िलहाल, वेब पर हार्डवेयर से तेज़ी लाने वाले ऐनिमेशन और ट्रांज़िशन की जानकारी देने और उन्हें चालू करने के कुछ तरीके हैं:

  • सीएसएस transform फ़ंक्शन का इस्तेमाल करें या opacity या filter वैल्यू को ट्रांज़िशन करें
  • अपने एलिमेंट में will-change प्रॉपर्टी जोड़ें.
  • OffscreenCanvas की मदद से, ऐनिमेशन वाली कैनवस ड्रॉइंग बनाना
  • WebGL 3D ड्रॉइंग बनाना
Chromium की रेंडरिंग टीम, सबसे ज़्यादा ऐनिमेशन वाली प्रॉपर्टी के इस्तेमाल को लगातार ट्रैक कर रही है. इससे यह तय किया जा सकेगा कि हार्डवेयर से तेज़ी लाने की सुविधा को चालू करने के लिए, आगे क्या करना चाहिए. फ़िलहाल, डिफ़ॉल्ट रूप से हार्डवेयर से तेज़ की गई मौजूदा सीएसएस प्रॉपर्टी में सिर्फ़ opacity, filter, और transform शामिल हैं. हालांकि, background-color और clip-path जल्द ही इस सूची में शामिल हो जाएंगी.

Chromium में डिफ़ॉल्ट रूप से, हार्डवेयर से तेज़ी लाने की सुविधा किन और चीज़ों के लिए चालू की जा रही है? आने वाले समय में, कुछ और सुविधाएं भी उपलब्ध होंगी. इनमें एसवीजी ऐनिमेशन भी शामिल हैं. डेवलपर लंबे समय से इन सुविधाओं का अनुरोध कर रहे थे.

हार्डवेयर की मदद से तेज़ी से चलने वाले SVG ऐनिमेशन

SVG, किसी भी वेबसाइट के लिए एक बेहतरीन विकल्प है. अब SVG के साथ इंटरैक्शन बेहतर तरीके से काम कर सकते हैं. Chromium 89 से, Chrome भी Firefox की तरह SVG ऐनिमेशन पर डिफ़ॉल्ट रूप से हार्डवेयर से तेज़ी लाने की सुविधा चालू करेगा. डेवलपर के तौर पर, आपको क्या करना होगा? कुछ नहीं—यह Chromium 89 और उसके बाद के वर्शन में, SVG ऐनिमेशन के लिए अपने-आप लागू हो जाएगा.

उदाहरण

चलिए, हार्डवेयर से तेज़ी लाने की सुविधा चालू होने और न होने पर, एसवीजी ऐनिमेशन के बीच के अंतर पर नज़र डालते हैं. लोडिंग इंडिकेटर, आम तौर पर इस्तेमाल होने वाले यूज़र इंटरफ़ेस (यूआई) एलिमेंट होते हैं. जैसे, facebook.com पर दिखने वाला यह इंडिकेटर. ये इंडिकेटर, सर्वर पर किए जा रहे काम के बारे में बताते हैं. इस दौरान, उपयोगकर्ता रिस्पॉन्स का इंतज़ार करता है. यहां दिए गए उदाहरण में, साइडबार में ज़्यादा नतीजे लोड करने का जवाब दिया जाएगा.

Facebook के साइडबार यूज़र इंटरफ़ेस (यूआई) में, ज़्यादा कॉन्टेंट लोड करते समय सर्कुलर लोडर दिखता है.

DevTools खोलने पर, हम प्रोफ़ाइलिंग शुरू कर सकते हैं और सीपीयू और जीपीयू के ज़रिए ऐनिमेशन के अनुभव में अंतर देख सकते हैं.

परफ़ॉर्मेंस पैनल, जिसमें पेंट फ़्लैश करने की सुविधा चालू है
बाईं ओर: Chromium 88. दाईं ओर: SVG ऐनिमेशन के लिए हार्डवेयर से तेज़ी लाने की सुविधा के साथ Chromium 89. JSFiddle पर, बेनोइट गिरार्ड का डेमो देखें.

आप देख सकते हैं कि बाईं ओर (Chromium 87), स्पिनर के ऐनिमेशन होने पर (जो लगातार होता है) हर बार पेज फिर से बनता है. दाईं ओर, पेज को फिर से पेंट नहीं किया गया है (Chromium 89 और Firefox). इसकी जांच करने के लिए, DevTools के रेंडरिंग पैनल में जाकर, पेंट फ़्लैशिंग की सुविधा चालू करें.

रेंडरिंग दिखाने वाला परफ़ॉर्मेंस पैनल
बाईं ओर: Chromium 88. दाईं ओर: SVG ऐनिमेशन के लिए हार्डवेयर से तेज़ी लाने की सुविधा के साथ Chromium 89. JSFiddle पर, बेनोइट गिरार्ड का डेमो देखें.

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

प्रतिशत के ऐनिमेशन

इंटरैक्शन टीम, Chromium 89 में प्रतिशत ट्रांसफ़ॉर्म ऐनिमेशन के लिए भी सहायता उपलब्ध करा रही है. प्रतिशत के हिसाब से ऐनिमेशन, उन इंटरैक्शन के बारे में बताते हैं जिनमें प्रतिशत के हिसाब से गति शामिल होती है. उदाहरण के लिए, किसी आइटम को 20% तक बड़ा किया जा सकता है या translateX: -100% जैसे किसी आइकॉन का इस्तेमाल करके, रिस्पॉन्सिव साइडबार मेन्यू को स्क्रीन से बाहर से स्लाइड किया जा सकता है.

waze.com के नेविगेशन का उदाहरण, जो छोटी स्क्रीन साइज़ पर मेन्यू को खोलने और छिपाने के लिए, प्रतिशत ट्रांसफ़ॉर्म का इस्तेमाल करता है.

इस तरह के यूज़र इंटरफ़ेस (यूआई) ऐनिमेशन काफ़ी आम हैं. हालांकि, फ़िलहाल इनमें हार्डवेयर ऐक्सेलरेशन का फ़ायदा नहीं लिया जाता, क्योंकि पहले हम ऐसे ऐनिमेशन को कंपोज नहीं कर पाते थे. ट्रांसफ़ॉर्म में प्रतिशत, बॉक्स साइज़ (यानी लेआउट) पर निर्भर करते हैं. हालांकि, अब जब तक हर फ़्रेम में लेआउट साइज़ नहीं बदलता, तब तक ब्राउज़र, ट्रांसफ़ॉर्म की असल वैल्यू का पहले से हिसाब लगा सकता है और उन्हें इस तरह चला सकता है जैसे डेवलपर ने पिक्सल वैल्यू दी हो. अच्छी बात यह है कि Chromium टीम इस सुविधा पर काम कर रही है. जल्द ही, इस तरह के ऐनिमेशन अपने-आप कॉम्पोज़ हो जाएंगे और हार्डवेयर की मदद से तेज़ी से चलेंगे.

आगे क्या होगा?

अपडेट किए गए इन ऐनिमेशन की मदद से, वेब स्टाइलिंग को आसानी से किया जा सकेगा. जैसा कि ऊपर बताया गया है, हमारी टीम हमेशा यह देखती रहती है कि आने वाले समय में वेब की क्या ज़रूरतें होंगी. फ़िलहाल, हम background-color और clip-path को बदलने जा रहे हैं, ताकि Chromium के आने वाले वर्शन में हार्डवेयर-ऐक्सेलरेशन का इस्तेमाल अपने-आप किया जा सके.

ट्रांज़िशन और इफ़ेक्ट के लिए background-color का इस्तेमाल बहुत ज़्यादा होने की वजह से, इसे प्राथमिकता दी जाती है. साथ ही, clip-path की मदद से वेब पर ज़्यादा बेहतर परफ़ॉर्म करने वाले ट्रांज़िशन इफ़ेक्ट इस्तेमाल किए जा सकते हैं. जब परफ़ॉर्मेंस और इंटरैक्टिविटी एक साथ मिलती है, तो सभी को फ़ायदा मिलता है!

transition.style: एडम अर्गल की बनाई गई, सीएसएस ट्रांज़िशन इफ़ेक्ट को हाइलाइट करने वाली डेमो साइट.

कवर इमेज: Unsplash के लिए Siora Photography.