WebGPU नेटवर्क को कैप्चर करना

François Beaufort
François Beaufort

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

हालांकि, WebGPU सिर्फ़ JavaScript API की सीमाओं से परे है. यह WebAssembly की तरह ही एक बुनियादी बिल्डिंग ब्लॉक है. इसके बढ़ते हुए नेटवर्क की वजह से, इसका असर वेब के अलावा दूसरे प्लैटफ़ॉर्म पर भी पड़ता है. Chrome की टीम, WebGPU को सिर्फ़ वेब टेक्नोलॉजी के तौर पर नहीं देखती. यह एक मुख्य टेक्नोलॉजी के आस-पास मौजूद एक बेहतरीन इकोसिस्‍टम है.

मौजूदा ईकोसिस्टम को एक्सप्लोर करना

यह सफ़र JavaScript स्पेसिफ़िकेशन से शुरू होता है. यह कई संगठनों के सहयोग से तैयार किया गया है. जैसे, Apple, Google, Intel, Mozilla, और Microsoft. सभी मुख्य वेब ब्राउज़र ने WebGPU को लागू कर दिया है या लागू करने की प्रोसेस में हैं.

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

Chrome के लिए, इसे Dawn के तौर पर लॉन्च किया गया है. यह एक C/C++ लाइब्रेरी है, जो WebGPU कॉल को GPU ड्राइवर के निर्देशों में बदलती है. Dawn की मदद से, C और C++ ऐप्लिकेशन, WebGPU का नेटिव तौर पर इस्तेमाल कर सकते हैं. साथ ही, वे ब्राउज़र वेंडर की विशेषज्ञता का इस्तेमाल करके, पोर्टेबल और बेहतर GPU एब्स्ट्रैक्शन भी पा सकते हैं.

WebGPU: आने वाले समय का क्रॉस-प्लैटफ़ॉर्म ग्राफ़िक्स एपीआई ब्लॉग पोस्ट में बताया गया है कि किसी प्लैटफ़ॉर्म के हिसाब से बनाए गए WebGPU ऐप्लिकेशन को वेब पर पोर्ट करना आसान है. C++ WebAssembly टूलचेन, Emscripten पहले से ही WebGPU के साथ काम करता है. इसे वेब पर पोर्ट करने के लिए, इसमें सिर्फ़ कुछ बदलाव करने की ज़रूरत होती है.

Node.js JavaScript रनटाइम की मदद से, ब्राउज़र के बाहर भी JavaScript WebGPU कोड चलाया जा सकता है. इसकी वजह यह है कि इसमें Dawn पर आधारित WebGPU मॉड्यूल शामिल है. इससे, आपको सर्वर साइड या प्लैटफ़ॉर्म के हिसाब से किए गए बदलावों के बिना अपना कोड चलाने में मदद मिलती है.

Rust के लिए भी ऐसा ही एक इको सिस्टम मौजूद है. इसमें wgpu का इस्तेमाल किया जाता है, जो Firefox में WebGPU को लागू करता है. Wgpu को सीधे Rust ऐप्लिकेशन में इंटिग्रेट किया जा सकता है. इसके बाद, web-sys का इस्तेमाल करके, उन्हें वेब पर पोर्ट किया जा सकता है. इसके अलावा, Deno JavaScript रनटाइम, wgpu की मदद से WebGPU के साथ काम करता है. Deno के साथ wgpu अलायंस ब्लॉग पोस्ट देखें.

इससे Rust और C++ के बीच एक पैरलल (समान) नेटवर्क बनता है, जैसा कि नीचे दिए गए डायग्राम में दिखाया गया है.

साल 2023 में WebGPU नेटवर्क का डायग्राम.
2023 में WebGPU इकोसिस्टम.

उभरते हुए होराइज़न

WebGPU का इकोसिस्टम, JavaScript, C++, और Rust के दायरे से बाहर भी है.

ऐसा हो सकता है कि आपकी पसंदीदा प्रोग्रामिंग भाषा में, WebGPU के लिए पहले से ही बाइंडिंग मौजूद हों. ऐसा इसलिए, क्योंकि WebGPU को लागू करने पर काम करने वाले इंजीनियर, WebGPU के लिए सामान्य C हेडर भी डेवलप कर रहे हैं. इसका इस्तेमाल, Dawn, wgpu वगैरह को टारगेट करने के लिए किया जा सकता है. इससे C FFI का इस्तेमाल करके, भाषाओं के लिए बाइंडिंग बनाना आसान हो जाता है.

Chrome की टीम, ब्राउज़र के सभी यूज़र इंटरफ़ेस (यूआई) एलिमेंट के लिए, रेंडरिंग के डिफ़ॉल्ट बैकएंड के तौर पर Dawn का इस्तेमाल करने पर भी विचार कर रही है. इन एलिमेंट में मेन्यू, टूलबार, डेवलपर टूल, और वेब कॉन्टेंट शामिल हैं. इससे हर नेटिव एपीआई के लिए, रेंडरिंग को अलग से लागू करने की ज़रूरत नहीं होगी. इससे डेवलपमेंट की प्रोसेस आसान हो जाएगी. यह सुविधा, macOS और Windows पर एक्सपेरिमेंट के तौर पर उपलब्ध है. इसे इस्तेमाल करने के लिए, chrome://flags/#skia-graphite फ़्लैग को चालू करना होगा.