WebGPU তে নতুন কী (Chrome 146)

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

প্রকাশিত: ২৫ ফেব্রুয়ারী, ২০২৬

OpenGL ES 3.1-এ WebGPU সামঞ্জস্য মোড সমর্থন করে

যদিও WebGPU আধুনিক গ্রাফিক্স API যেমন Vulkan, Metal, এবং D3D12 এর সাথে সামঞ্জস্যপূর্ণভাবে ডিজাইন করা হয়েছে, অনেক ব্যবহারকারীর কাছে পুরানো হার্ডওয়্যার রয়েছে যা এই মানগুলিকে সমর্থন করে না। এই ব্যবধান পূরণ করতে এবং ব্যাপক অ্যাক্সেসিবিলিটি নিশ্চিত করতে, Chrome একটি নতুন অপ্ট-ইন বৈশিষ্ট্য চালু করেছে যার নাম "কম্প্যাটিবিলিটি মোড"।

এই মোড আপনাকে OpenGL ES 3.1 এর মতো পুরোনো গ্রাফিক্স API গুলিতে WebGPU চালাতে দেয়। WebGPU স্পেসিফিকেশনের সামান্য সীমাবদ্ধ উপসেটকে লক্ষ্য করে, আপনি নিশ্চিত করেন যে আপনার ওয়েব অ্যাপটি সকলের কাছে অ্যাক্সেসযোগ্য, সর্বশেষ গেমিং রিগ থেকে শুরু করে পুরোনো ল্যাপটপ এবং মোবাইল ডিভাইস পর্যন্ত। অ্যান্ড্রয়েড দিয়ে শুরু করার সময়, দলটি অন্যান্য ডিভাইসের জন্য সমর্থন অন্বেষণ করছে, যেমন OpenGL ES 3.1 সহ ChromeOS এবং Direct3D 11 সহ Windows।

অনেক ওয়েব অ্যাপের ক্ষেত্রে, আপনি requestAdapter() কল করার সময় featureLevel: "compatibility" পাস করে সামঞ্জস্যতা মোড সক্ষম করতে পারেন। যদি আপনার ডিভাইসটি Core WebGPU সমর্থন করে, তাহলে Chrome একটি Core-সক্ষম অ্যাডাপ্টার ফিরিয়ে দেবে, কিন্তু আপনার ওয়েব অ্যাপটি "core-features-and-limits" বৈশিষ্ট্যটি সক্ষম না করলে (অথবা সমস্ত উপলব্ধ বৈশিষ্ট্য সক্ষম না করলে) সামঞ্জস্যতা সীমার মধ্যে থাকতে জানবে। আরও জটিল অ্যাপ্লিকেশনগুলির মোডের সীমাবদ্ধতার মধ্যে ফিট করার জন্য ছোটখাটো সমন্বয়ের প্রয়োজন হতে পারে।

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

এই মোডের নির্দিষ্ট স্থাপত্য সীমাবদ্ধতা সম্পর্কে বিস্তারিত তথ্যের জন্য WebGPU মৌলিক নির্দেশিকা দেখুন। উপরন্তু, সমস্ত WebGPU নমুনা এখন সামঞ্জস্য মোড সমর্থন করে। আপনি intent to ship -এও পড়তে পারেন।

ক্ষণস্থায়ী সংযুক্তি

মেমোরি-দক্ষ সংযুক্তি তৈরি করতে আপনি নতুন TRANSIENT_ATTACHMENT GPUTextureUsage ফ্ল্যাগ ব্যবহার করতে পারেন। এটি রেন্ডার পাস অপারেশনগুলিকে টাইল মেমোরিতে থাকতে দেয়, যা VRAM ট্র্যাফিক এড়ায় এবং টেক্সচারের জন্য VRAM বরাদ্দ এড়াতে পারে।

একটি টেক্সচারকে ক্ষণস্থায়ী (অথবা "স্মৃতিহীন") হিসেবে ঘোষণা করে, GPU জানে যে এটির কেবলমাত্র টেক্সচারের বিষয়বস্তু সাময়িকভাবে প্রয়োজন - বিশেষ করে, শুধুমাত্র বর্তমান রেন্ডার পাসের মধ্যে। তাছাড়া, যেহেতু রেন্ডার পাসের পরে টেক্সচারের বিষয়বস্তু বাতিল করা হয়, তাই ড্রাইভারকে এর জন্য VRAM বরাদ্দ করার প্রয়োজন নাও হতে পারে।

নিচের উদাহরণটি দেখায় কিভাবে একটি ক্ষণস্থায়ী টেক্সচার তৈরি করতে হয়।

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

হ্যালো ট্রায়াঙ্গেল MSAA - WebGPU নমুনা এবং পাঠানোর উদ্দেশ্য দেখুন।

WGSL টেক্সচার_এন্ড_স্যাম্পলার_লেট এক্সটেনশন

WGSL ল্যাঙ্গুয়েজ এক্সটেনশন texture_and_sampler_let আপনাকে WGSL শেডারের মধ্যে একটি let এ টেক্সচার বা স্যাম্পলার ভেরিয়েবল বরাদ্দ করতে দেয়। এই বৈশিষ্ট্যটি বর্তমানে একটি বিকল্প নামকরণ প্রক্রিয়া প্রদান করে এবং বাইন্ডলেস সাপোর্টের জন্য প্রস্তুত করে যেখানে টেক্সচার বা স্যাম্পলার ফেরত দেওয়ার পদ্ধতিগুলি সরাসরি স্থানীয় ভেরিয়েবলে সংরক্ষণ করা যেতে পারে।

নিম্নলিখিত উদাহরণ এবং পাঠানোর উদ্দেশ্য দেখুন।

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

ভোরের আপডেট

নিম্নলিখিত নতুন সীমা স্তরগুলি উপলব্ধ:

অতিরিক্ত নিরাপত্তা স্তর প্রদান এবং ত্রুটিপূর্ণ ইনপুট থেকে ড্রাইভারের অস্থিরতা রোধ করার জন্য Android-এ SPIR-V যাচাইকরণ ডিফল্টরূপে সক্রিয় থাকে। সমস্যা 473526182 দেখুন।

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

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

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

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩