WebGPU-তে নতুন কী কী রয়েছে (Chrome 130)

François Beaufort
François Beaufort

দুটি সোর্স একসাথে ব্যবহার করা

দুটি ফ্র্যাগমেন্ট শেডার আউটপুটকে একটি ফ্রেমবাফারে একত্রিত করাকে ডুয়াল সোর্স ব্লেন্ডিং বলা হয়। এই টেকনিকটি বিশেষত সেইসব অ্যাপ্লিকেশনের জন্য উপযোগী যেগুলিতে জটিল ব্লেন্ডিং অপারেশন প্রয়োজন হয়, যেমন Porter-Duff ব্লেন্ড মোডের উপর ভিত্তি করে তৈরি হওয়া অ্যাপ্লিকেশন। পরপর রেন্ডার পাসের পরিবর্তে একটি রেন্ডার পাস ব্যবহার করলে, ডুয়াল সোর্স ব্লেন্ডিং পারফর্ম্যান্স ও ফ্লেক্সিবিলিটি উন্নত করতে পারে।

নতুন "dual-source-blending" WebGPU ফিচার আপনাকে @location(0)-এ WGSL @blend_src অ্যাট্রিবিউট ব্যবহার করে ব্লেন্ডিং সোর্স ইনডেক্স এবং নিম্নলিখিত ব্লেন্ড ফ্যাক্টর দেখাতে দেয়: "src1", "one-minus-src1", "src1-alpha" এবং "one-minus-src1-alpha"। নিম্নলিখিত স্নিপেট, chromestatus এন্ট্রি এবং issue 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...

Metal-এ শেডার কম্পাইলেশন টাইম সংক্রান্ত উন্নতি

Chrome টিম, WebGPU-এর সাথে কাজ করে এমন ডিভাইসের জন্য Metal ব্যাকএন্ড সহ ইন্টারমিডিয়েট রিপ্রেজেন্টেশন (IR) চালু করার মাধ্যমে WebGPU শেডার ল্যাঙ্গুয়েজ কম্পাইলার Tint-কে আরও উন্নত করছে। Tint-এর অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) ও Metal ব্যাকএন্ড রাইটারের মধ্যে থাকা এই IR, কম্পাইলারকে আরও বেশি দক্ষ ও ম্যানেজ করার উপযুক্ত করে তুলবে, যার ফলে ডেভেলপার ও ব্যবহারকারী, দু'জনেরই সুবিধা হবে। প্রাথমিক পরীক্ষা থেকে দেখা গেছে যে Unity-র WGSL শেডারকে MSL-এ অনুবাদ করার সময় Tint-এর নতুন ভার্সন ১০ গুণ পর্যন্ত দ্রুত কাজ করে।

ফ্লোচার্ট থেকে WGSL শেডার কোডকে লো-লেভেল GPU নির্দেশাবলীতে কনভার্ট করার প্রসেসটি বোঝা যায়।
macOS-এ রেন্ডার পাইপলাইন তৈরি করা।

Android ও ChromeOS-এ আগে থেকেই অ্যাক্সেস করা যায় এমন এইসব উন্নতি, ধীরে ধীরে macOS ডিভাইসেও উপলভ্য করা হচ্ছে যেগুলি Metal ব্যাকএন্ডের সাথে WebGPU-তে কাজ করে। সমস্যা ৪২২৫১০১৬ দেখুন।

GPUAdapter requestAdapterInfo() বন্ধ হয়ে যাওয়া

GPUAdapter requestAdapterInfo() অ্যাসিঙ্ক্রোনাস পদ্ধতিটি অপ্রয়োজনীয় কারণ ডেভেলপাররা ইতিমধ্যেই GPUAdapter info অ্যাট্রিবিউট ব্যবহার করে সিঙ্ক্রোনাস পদ্ধতিতে GPUAdapterInfo পেতে পারেন। তাই, নন-স্ট্যান্ডার্ড GPUAdapter requestAdapterInfo() পদ্ধতি এখন বন্ধ করে দেওয়া হয়েছে। বন্ধ করার উদ্দেশ্য দেখুন।

DevTools কনসোলে requestAdapterInfo() সংক্রান্ত অবচলের বিজ্ঞপ্তি দেখানো হয়।
Chrome DevTools-এ requestAdapterInfo()-এর জন্য বাতিল করা ফিচার সংক্রান্ত সতর্কতা।

ভোরের আপডেট

webgpu.h C API এক্সটেনশন স্ট্রাক্টের জন্য কিছু নামকরণ সংক্রান্ত নিয়মাবলী নির্ধারণ করেছে। নিম্নলিখিত নাম পরিবর্তন ও issue 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

JavaScript API-তে দেখানো তিনটি সম্ভাব্য স্টেট (true, false ও undefined) আরও ভালোভাবে রিফ্লেক্ট করতে, WGPUDepthStencilState-এর depthWriteEnabled অ্যাট্রিবিউট টাইপ বুলিয়ান থেকে WGPUOptionalBool-এ পরিবর্তন করা হয়েছে। আরও জানতে, নিম্নলিখিত কোড স্নিপেট ও webgpu-headers PR দেখুন।

wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default

এতে শুধু কিছু গুরুত্বপূর্ণ হাইলাইট কভার করা হয়েছে। কমিটের বিস্তারিত তালিকা দেখুন।

WebGPU-তে নতুন কী কী আছে

WebGPU-তে নতুন কী কী আছে সিরিজে যা যা কভার করা হয়েছে তার একটি তালিকা।

Chrome 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113