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 की क्षमता को पहचाना. साथ ही, WebGPU को ब्राउज़र से अलग करके, स्टैंडअलोन इस्तेमाल की सुविधा चालू की.

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

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

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

wgpu के साथ Rust के लिए भी एक मिलता-जुलता नेटवर्क मौजूद है, जो 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 हेडर भी डेवलप कर रहे हैं. इसका इस्तेमाल डॉन, डब्ल्यूजीपीयू, और अन्य चीज़ों को टारगेट करने के लिए किया जा सकता है. इससे सी FFI का इस्तेमाल करके भाषाओं के लिए बाइंडिंग बनाने में मदद मिलती है.

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