दो सोर्स को ब्लेंड करना
दो फ़्रैगमेंट शेडर आउटपुट को एक फ़्रेमबफ़र में जोड़ने को ड्यूअल सोर्स ब्लेंडिंग कहा जाता है. यह तकनीक खास तौर पर उन ऐप्लिकेशन के लिए फ़ायदेमंद है जिनमें ब्लेंड करने के जटिल ऑपरेशन की ज़रूरत होती है. जैसे, Porter-Duff ब्लेंड मोड पर आधारित ऐप्लिकेशन. बाद में रेंडर होने वाले पास की जगह, एक रेंडर पास का इस्तेमाल करने से ड्यूअल सोर्स ब्लेंडिंग की सुविधा, परफ़ॉर्मेंस और सुविधा को बेहतर बना सकती है.
"dual-source-blending"
WebGPU की नई सुविधा की मदद से, @location(0)
पर WGSL @blend_src
एट्रिब्यूट का इस्तेमाल किया जा सकता है. इससे ब्लेंडिंग सोर्स इंडेक्स और इन ब्लेंड फ़ैक्टर को दिखाया जा सकता है: "src1"
, "one-minus-src1"
, "src1-alpha"
, और "one-minus-src1-alpha"
. नीचे दिया गया स्निपेट, chromestatus एंट्री, और समस्या 341973423 देखें.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("dual-source-blending")) {
throw new Error("Dual source blending support is not available");
}
// Explicitly request dual source blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["dual-source-blending"],
});
const code = `
enable dual_source_blending;
struct FragOut {
@location(0) @blend_src(0) color : vec4f,
@location(0) @blend_src(1) blend : vec4f,
}
@fragment fn main() -> FragOut {
var output : FragOut;
output.color = vec4f(1.0, 1.0, 1.0, 1.0);
output.blend = vec4f(0.5, 0.5, 0.5, 0.5);
return output;
}
`;
const shaderModule = device.createShaderModule({ code });
// Create a render pipeline with this shader module
// and run the shader on the GPU...
मेटल पर शेडर को कम करने के समय में किए गए सुधार
Chrome की टीम, WebGPU शेडर लैंग्वेज कंपाइलर Tint को बेहतर बना रही है. इसके लिए, Metal बैकएंड के साथ WebGPU की सुविधा वाले डिवाइसों के लिए इंटरमीडिएट रिप्रज़ेंटेशन (आईआर) को लॉन्च किया जा रहा है. यह IR, Tint के एब्स्ट्रैक्ट सिंटैक्स ट्री (AST) और Metal बैकएंड लेखक के बीच होता है. इससे कंपाइलर ज़्यादा बेहतर और मैनेज करने लायक बन जाएगा. इससे डेवलपर और उपयोगकर्ता, दोनों को फ़ायदा मिलेगा. शुरुआती टेस्ट से पता चला है कि Unity के WGSL शेडर का एमएसएल में अनुवाद करने पर, Tint का नया वर्शन ज़्यादा से ज़्यादा 10 गुना ज़्यादा तेज़ काम करता है.
ये सुधार, Android और ChromeOS पर पहले से ही उपलब्ध हैं. अब इन्हें macOS डिवाइसों पर भी उपलब्ध कराया जा रहा है. हालांकि, इसके लिए ज़रूरी है कि वे डिवाइस, Metal बैकएंड के साथ WebGPU का इस्तेमाल कर पाएं. समस्या 42251016 देखें.
GPUAdapter requestAdapterInfo() का इस्तेमाल बंद किया जा रहा है
जीपीयू अडैप्टर requestAdapterInfo()
एसिंक्रोनस तरीका गैर-ज़रूरी है, क्योंकि डेवलपर जीपीयू अडैप्टर info
एट्रिब्यूट का इस्तेमाल करके पहले से ही जीपीयूAdapterInfo सिंक कर सकते हैं. इसलिए, अब नॉन-स्टैंडर्ड जीपीयू दिए गए requestAdapterInfo()
तरीके का इस्तेमाल नहीं किया जा सकता. इस्तेमाल बंद करने का इंटेंट देखें.
Dawn के बारे में अपडेट
webgpu.h C API ने एक्सटेंशन स्ट्रक्चर के लिए, नाम रखने के कुछ तरीके तय किए हैं. नाम में हुए ये बदलाव देखें और समस्या 42241174 देखें.
WGPURenderPassDescriptor एक्सटेंशन
|
|
WGPURenderPassDescriptorMaxDrawCount ->
|
WGPURenderPassMaxDrawCount
|
WGPUShaderModuleDescriptor एक्सटेंशन
|
|
WGPUShaderModuleSPIRVDescriptor ->
|
WGPUShaderSourceSPIRV
|
WGPUShaderModuleWGSLDescriptor ->
|
WGPUShaderSourceWGSL
|
WGPUSurfaceDescriptor एक्सटेंशन
|
|
WGPUSurfaceDescriptorFromMetalLayer ->
|
WGPUSurfaceSourceMetalLayer
|
WGPUSurfaceDescriptorFromWindowsHWND ->
|
WGPUSurfaceSourceWindowsHWND
|
WGPUSurfaceDescriptorFromXlibWindow ->
|
WGPUSurfaceSourceXlibWindow
|
WGPUSurfaceDescriptorFromWaylandSurface ->
|
WGPUSurfaceSourceWaylandSurface
|
WGPUSurfaceDescriptorFromAndroidNativeWindow ->
|
WGPUSurfaceSourceAndroidNativeWindow
|
WGPUSurfaceDescriptorFromXcbWindow ->
|
WGPUSurfaceSourceXCBWindow
|
WGPUSurfaceDescriptorFromCanvasHTMLSelector ->
|
WGPUSurfaceSourceCanvasHTMLSelector_Emscripten
|
WGPUDepthStencilState
के depthWriteEnabled
एट्रिब्यूट टाइप को बूलियन से WGPUOptionalBool
पर स्विच किया जाता है, ताकि JavaScript API की तरह ही इसकी तीन संभावित स्थितियों (सही, गलत, और तय नहीं की गई) को बेहतर तरीके से दिखाया जा सके. ज़्यादा जानने के लिए, यहां दिया गया कोड स्निपेट और webgpu-headers PR देखें.
wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default
इसमें सिर्फ़ कुछ अहम हाइलाइट के बारे में बताया गया है. कमिट की पूरी सूची देखें.
WebGPU में नया क्या है
WebGPU में नया क्या है सीरीज़ में शामिल सभी चीज़ों की सूची.
Chrome 131
- WGSL में क्लिप की दूरी
- GPUCanvasContext getConfiguration()
- पॉइंट और लाइन प्रिमिटिव में डेप्थ बाय नहीं होना चाहिए
- सबग्रुप के लिए, सभी को ध्यान में रखकर स्कैन करने की सुविधा के साथ पहले से मौजूद फ़ंक्शन
- मल्टी-ड्रॉ इनडायरेक्ट के लिए एक्सपेरिमेंटल सपोर्ट
- शडर मॉड्यूल कंपाइलेशन विकल्प स्ट्रिक्ट मैथ
- GPAdapter requestAdapterInfo() हटाएं
- Dawn से जुड़े अपडेट
Chrome 130
- दो सोर्स को ब्लेंड करना
- मेटल पर शेडर को कम करने के समय में किए गए सुधार
- GPUAdapter requestAdapterInfo() का इस्तेमाल बंद करना
- Dawn से जुड़े अपडेट
Chrome 129
Chrome 128
- सबग्रुप के साथ प्रयोग करना
- रेखाओं और बिंदुओं के लिए, डेप्थ बायस की सेटिंग को बंद करना
- preventDefault का इस्तेमाल करने पर, DevTools में गड़बड़ी की चेतावनी न दिखाएं
- WGSL, पहले सैंपलिंग को इंटरपोलेट करता है और दोनों में से किसी एक
- Dawn से जुड़े अपडेट
Chrome 127
- Android पर OpenGL ES के लिए एक्सपेरिमेंटल सपोर्ट
- GPUAdapter info एट्रिब्यूट
- WebAssembly के इंटरऑपरेबिलिटी में सुधार
- कमांड एन्कोडर से जुड़ी गड़बड़ियों को बेहतर बनाया गया
- Dawn से जुड़े अपडेट
Chrome 126
- maxTextureArrayLayers की सीमा बढ़ाना
- Vulkan बैकएंड के लिए, बफ़र अपलोड को ऑप्टिमाइज़ करना
- समय को बेहतर बनाने के लिए शेडर इस्तेमाल करने की सुविधा
- सबमिट किए गए निर्देश के बफ़र, यूनीक होने चाहिए
- डॉन से जुड़े अपडेट
Chrome 125
Chrome 124
- रीड-ओनली और रीड-राइट स्टोरेज टेक्सचर
- सर्विस वर्कर और शेयर किए गए कर्मचारियों के लिए सहायता
- अडैप्टर की जानकारी देने वाले नए एट्रिब्यूट
- गड़बड़ियां ठीक की गईं
- डॉन से जुड़े अपडेट
Chrome 123
- WGSL में DP4a के बिल्ट-इन फ़ंक्शन के साथ काम करने की सुविधा
- WGSL में बिना पाबंदी वाले पॉइंटर पैरामीटर
- WGSL में कॉम्पोज़िट को डीरेफ़रंस करने के लिए सिंटैक्स शुगर
- स्टेंसल और डेप्थ के पहलुओं के लिए, रीड-ओनली स्टेटस अलग करना
- डॉन से जुड़े अपडेट
Chrome 122
- कंपैटबिलिटी मोड की मदद से रीच बढ़ाना (यह सुविधा डेवलप की जा रही है)
- maxVertexAttributes की सीमा बढ़ाना
- Dawn से जुड़े अपडेट
Chrome 121
- Android पर WebGPU की सुविधा
- Windows पर शेडर को कंपाइल करने के लिए, FXC के बजाय DXC का इस्तेमाल करना
- कंप्यूट और रेंडर पास में टाइमस्टैंप क्वेरी
- शेडर मॉड्यूल के लिए डिफ़ॉल्ट एंट्री पॉइंट
- GPUExternalTexture कलर स्पेस के तौर पर display-p3 का इस्तेमाल करना
- मेमोरी हीप की जानकारी
- डॉन से जुड़े अपडेट
Chrome 120
- WGSL में 16-बिट फ़्लोटिंग-पॉइंट वैल्यू के साथ काम करता है
- सीमाओं को पार करना
- डेप्थ-स्टेंसिल स्टेटस में बदलाव
- अडैप्टर की जानकारी से जुड़े अपडेट
- टाइमस्टैंप क्वेरी को क्वांटाइज़ करना
- समय-समय पर साफ़-सफ़ाई करने की सुविधाएं
Chrome 119
- फ़िल्टर किए जा सकने वाले 32-बिट फ़्लोट टेक्सचर
- unorm10-10-10-2 वर्टिक्स फ़ॉर्मैट
- rgb10a2uint टेक्सचर फ़ॉर्मैट
- डॉन से जुड़े अपडेट
Chrome 118
copyExternalImageToTexture()
में HTMLImageElement और ImageData की सुविधा- रीड-राइट और रीड-ओनली स्टोरेज टेक्स्चर के लिए, एक्सपेरिमेंट के तौर पर उपलब्ध सहायता
- Dawn से जुड़े अपडेट
Chrome 117
- वर्टेक्स बफ़र को अनसेट करें
- बाइंड किए गए ग्रुप को अनसेट करें
- डिवाइस खो जाने पर, असाइनमेंट के लिए असाइनमेंट पाइपलाइन बनाने से जुड़ी गड़बड़ियों को रोकना
- SPIR-V शेडर मॉड्यूल बनाने से जुड़े अपडेट
- डेवलपर के अनुभव को बेहतर बनाना
- अपने-आप जनरेट हुए लेआउट की मदद से, पाइपलाइन को कैश मेमोरी में सेव करना
- डॉन से जुड़े अपडेट
Chrome 116
- WebCodecs इंटिग्रेशन
- GPUAdapter
requestDevice()
से खोया हुआ डिवाइस वापस मिलना importExternalTexture()
को कॉल करने पर, वीडियो चलाने की सुविधा को बिना रुकावट के जारी रखना- स्पेसिफ़िकेशन के मुताबिक होना
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn से जुड़े अपडेट
Chrome 115
- WGSL भाषा के इस्तेमाल किए जा सकने वाले एक्सटेंशन
- Direct3D 11 के लिए एक्सपेरिमेंटल सपोर्ट
- AC पावर पर डिफ़ॉल्ट रूप से डिसक्रेट जीपीयू पाना
- डेवलपर के अनुभव को बेहतर बनाना
- Dawn से जुड़े अपडेट
Chrome 114
- JavaScript को ऑप्टिमाइज़ करना
- बिना कॉन्फ़िगर किए गए कैनवस पर getCurrentTexture() से InvalidStateError मिलता है
- WGSL से जुड़े अपडेट
- डॉन से जुड़े अपडेट