WebGPU-তে নতুন কী আছে (Chrome 130)

ফ্রাঁসোয়া বিউফোর্ট
François Beaufort

ডুয়াল সোর্স ব্লেন্ডিং

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

নতুন "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-কে উন্নত করছে, মেটাল ব্যাকএন্ডের সাথে WebGPU সাপোর্ট করে এমন ডিভাইসগুলির জন্য একটি ইন্টারমিডিয়েট রিপ্রেজেন্টেশন (IR) প্রবর্তন করে। Tint-এর অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) এবং মেটাল ব্যাকএন্ড রাইটারের মধ্যে অবস্থিত এই IR কম্পাইলারটিকে আরও দক্ষ এবং রক্ষণাবেক্ষণযোগ্য করে তুলবে, যা শেষ পর্যন্ত ডেভেলপার এবং ব্যবহারকারী উভয়কেই উপকৃত করবে। প্রাথমিক পরীক্ষাগুলি দেখায় যে ইউনিটির WGSL শেডারগুলিকে MSL-এ অনুবাদ করার সময় Tint-এর নতুন সংস্করণটি 10 ​​গুণ পর্যন্ত দ্রুত।

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

এই উন্নতিগুলি, যা ইতিমধ্যেই অ্যান্ড্রয়েড এবং ChromeOS-এ অ্যাক্সেসযোগ্য, ধীরে ধীরে মেটাল ব্যাকএন্ড সহ WebGPU সমর্থন করে এমন macOS ডিভাইসগুলিতে সম্প্রসারিত হচ্ছে। সংখ্যা 42251016 দেখুন।

GPUAdapter requestAdapterInfo() এর অবচয়

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

DevTools কনসোল requestAdapterInfo() এর জন্য একটি অবচয় রোধের সতর্কতা প্রদর্শন করে।
Chrome DevTools-এ requestAdapterInfo() এর জন্য বন্ধ করা বৈশিষ্ট্য সতর্কতা।

ভোরের আপডেট

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 এ স্যুইচ করে, যা জাভাস্ক্রিপ্ট API এর মতো তিনটি সম্ভাব্য অবস্থা (true, false, এবং undefined) আরও ভালভাবে প্রতিফলিত করে। আরও জানতে, নিম্নলিখিত কোড স্নিপেট এবং webgpu-headers PR দেখুন।

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

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

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

" What's New in WebGPU" সিরিজে যা যা আলোচনা করা হয়েছে তার একটি তালিকা।

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩