ऐसा हो सकता है कि WebGPU की सुविधाओं की संख्या में कमी आई हो, लेकिन कुछ बड़े सुधार आने वाले हैं! आने वाले समय में रिलीज़ होने वाले अपडेट में, शेडर कंपाइलेशन स्पीड में सुधार करने जैसी सुविधाएं शामिल होंगी. इसके अलावा, WGPUFuture की मदद से, इसे लागू करने के एक साथ काम न करने वाले मॉडल में बदलाव किए जाएंगे.
सबग्रुप (डेवलपमेंट की सुविधा)
सबग्रुप की सुविधा, सिमडी-लेवल पर पैरललिज़्म को चालू करती है. इससे किसी ग्रुप के थ्रेड, कम्यूनिकेट करने और गणित के फ़ॉर्मूले (जैसे, 16 संख्याओं को जोड़कर) करने में मदद करते हैं. इससे, क्रॉस-थ्रेड डेटा शेयर करने का बेहतर तरीका मिलता है.
सबग्रुप की कार्रवाइयां, मॉडर्न जीपीयू एपीआई के साथ काम करती हैं. हालांकि, इसका नाम और उन्हें लागू करने की जानकारी अलग-अलग हो सकती है. Chrome टीम ने समानताओं की पहचान कर ली है और अब इस सुविधा के मानक तय करने पर काम कर रहा है. अगर आपका कोई सवाल है, तो सुझाव देखें और टिप्पणी करें.
chrome://flags/#enable-experimental-web-platform-features
पर "प्रयोग के तौर पर उपलब्ध वेब प्लैटफ़ॉर्म की सुविधाएं" फ़्लैग के पीछे सबग्रुप को सामान्य और गैर-मानक तरीके से लागू किया गया है, ताकि डेवलपर इसे आज़मा सकें और अपने सुझाव शेयर कर सकें. ऐसा इसलिए है, क्योंकि WebGPU के हिसाब से, अभी तक यह साबित नहीं हो पाया है कि असल दुनिया में आपको कितना फ़ायदा मिलेगा.
जब GPUAdapter
में "chromium-experimental-subgroups"
सुविधा उपलब्ध हो, तो WGSL में प्रयोग के तौर पर सबग्रुप से जुड़ी सहायता पाने के लिए, इस सुविधा वाले GPUDevice
का अनुरोध करें. साथ ही, इसकी minSubgroupSize
और maxSubgroupSize
की सीमाएं देखें.
आपको enable chromium_experimental_subgroups
के साथ, अपने WGSL कोड में इस एक्सटेंशन को साफ़ तौर पर चालू करना भी होगा. इस सुविधा के चालू होने पर, आपको इन सुविधाओं का ऐक्सेस मिलता है:
subgroup_invocation_id
: सबग्रुप में थ्रेड की इंडेक्स के लिए पहले से मौजूद वैल्यू.subgroup_size
: सबग्रुप के साइज़ के ऐक्सेस के लिए पहले से मौजूद वैल्यू.subgroupBallot(value):
, बिट फ़ील्ड का सेट दिखाता है, जहांsubgroup_invocation_id
से जुड़ा बिट 1 होता है. अगरvalue
उस ऐक्टिव बातचीत के लिए सही है, तो वैल्यू 0 होती है.subgroupBroadcast(value, id)
: शुरू करने वालेvalue
कोid
से मेल खाने वालेsubgroup_invocation_id
के साथ सबग्रुप में मौजूद सभी बातचीत को ब्रॉडकास्ट करता है. ध्यान दें:id
, कंपाइल-टाइम कॉन्स्टेंट होना चाहिए.
नीचे दिया गया कोड स्निपेट, सबग्रुप की क्षमता के बारे में जानने और उसे समझने में मदद करता है.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_subgroups;
@compute @workgroup_size(64) fn main(
@builtin(global_invocation_id) global_id : vec3u,
@builtin(subgroup_size) sg_size : u32,
@builtin(subgroup_invocation_id) sg_id : u32) {
// TODO: Use subgroupBallot() and subgroupBroadcast().
}`,
});
3D टेक्सचर के टुकड़े को रेंडर करें
अब रेंडर पास में, 3D टेक्सचर के स्लाइस को सीधे तौर पर रेंडर किया जा सकता है. इससे, सामान्य 2D टेक्सचर रेंडरिंग से ज़्यादा सुविधाएं मिलती हैं. ऐसा GPURenderPassColorAttachment
में नए depthSlice
सदस्य के साथ होता है. उदाहरण के लिए, इस जोड़ से आपको सीधे 3D टेक्सचर वॉल्यूम में रेंडर करके वॉक्सेल आधारित सीन और इफ़ेक्ट बनाने की सुविधा मिलती है. जारी है सुबह:1020 देखें.
Dawn के अपडेट
कमियों की पूरी सूची देखें.
WebGPU में नया क्या है
WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.
Chrome 125
Chrome 124
- रीड-ओनली और रीड-राइट स्टोरेज टेक्सचर
- सर्विस वर्कर और कर्मचारियों से जुड़ी सहायता
- अडैप्टर की जानकारी से जुड़े नए एट्रिब्यूट
- गड़बड़ियां ठीक करना
- Dawn के बारे में अपडेट
Chrome 123
- DP4a में पहले से मौजूद फ़ंक्शन, WGSL में काम करते हैं
- WGSL में बिना पाबंदी वाले पॉइंटर पैरामीटर
- WGSL में डिफ़रेंसिंग कंपोज़िट के लिए सिंटैक्स शुगर
- स्टेंसिल और गहराई के पहलुओं के लिए अलग-अलग रीड-ओनली मोड
- Dawn के बारे में अपडेट
Chrome 122
- कपैसिटी मोड की मदद से पहुंच बढ़ाना (यह सुविधा अभी डेवलप की जा रही है)
- maxVertexAttributes की सीमा बढ़ाएं
- Dawn के बारे में अपडेट
Chrome 121
- Android पर WebGPU की मदद करना
- Windows पर शेडर कंपाइलेशन के लिए, FXC के बजाय DXC का इस्तेमाल करना
- कंप्यूट और रेंडर पास में टाइमस्टैंप क्वेरी
- शेडर मॉड्यूल के लिए डिफ़ॉल्ट एंट्री पॉइंट
- Display-p3 को जीपीयूएक्सटर्नल टेक्सचर कलर स्पेस के तौर पर इस्तेमाल करें
- मेमोरी के हीप की जानकारी
- Dawn के बारे में अपडेट
Chrome 120
- WGSL में 16-बिट फ़्लोटिंग-पॉइंट वैल्यू के साथ काम करता है
- सीमाएं पूरी करें
- डेप्थ-स्टेंसिल के स्टेटस में बदलाव
- अडैप्टर की जानकारी से जुड़े अपडेट
- टाइमस्टैंप क्वेरी को कैलकुलेट करना
- वसंत की सफ़ाई से जुड़ी सुविधाएं
Chrome 119
- फ़िल्टर की जा सकने वाली 32-बिट फ़्लोट टेक्सचर
- unorm10-10-10-2 वर्टेक्स फ़ॉर्मैट
- debug10a2uint टेक्सचर फ़ॉर्मैट
- Dawn के बारे में अपडेट
Chrome 118
copyExternalImageToTexture()
में HTMLImageElement और ImageData से जुड़ी सहायता- रीड-राइट और रीड-ओनली स्टोरेज टेक्सचर के लिए एक्सपेरिमेंट के तौर पर काम करने की सुविधा
- Dawn के बारे में अपडेट
Chrome 117
- वर्टेक्स बफ़र को अनसेट करें
- बाइंड ग्रुप को अनसेट करें
- डिवाइस खो जाने पर, एक साथ काम नहीं करने वाली पाइपलाइन बनने से जुड़ी गड़बड़ियों की आवाज़ बंद करना
- SPIR-V शेडर मॉड्यूल बनाने के बारे में अपडेट
- डेवलपर के अनुभव को बेहतर बनाना
- अपने-आप जनरेट हुए लेआउट की मदद से पाइपलाइन को कैश मेमोरी में सेव करना
- Dawn के बारे में अपडेट
Chrome 116
- WebCodecs इंटिग्रेशन
- जीपीयू अडैप्टर
requestDevice()
से मिला खोया हुआ डिवाइस - अगर
importExternalTexture()
कॉल किया जा रहा है, तो वीडियो बिना किसी रुकावट के चलाएं - खास जानकारी का पालन
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn के बारे में अपडेट
Chrome 115
- इसके साथ काम करने वाले WGSL भाषा एक्सटेंशन
- Direct3D 11 के लिए एक्सपेरिमेंटल सहायता
- एसी पावर पर डिफ़ॉल्ट रूप से डिस्क्रीट जीपीयू पाएं
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn के बारे में अपडेट
Chrome 114
- JavaScript को ऑप्टिमाइज़ करना
- कॉन्फ़िगर नहीं किए गए कैनवस पर getCurrentTexture(), अमान्य राज्य गड़बड़ी देता है
- WGSL से जुड़े अपडेट
- Dawn के बारे में अपडेट