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

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

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

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

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

এই মোডটি আপনাকে OpenGL ES 3.1-এর মতো পুরোনো গ্রাফিক্স এপিআই-গুলোতে 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 Fundamentals গাইডটি দেখুন। এছাড়াও, সমস্ত WebGPU স্যাম্পল এখন কম্প্যাটিবিলিটি মোড সমর্থন করে। আপনি এটি প্রকাশের অভিপ্রায়ও পড়তে পারেন।

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

আপনি নতুন TRANSIENT_ATTACHMENT GPUTextureUsage ফ্ল্যাগ ব্যবহার করে মেমরি-সাশ্রয়ী অ্যাটাচমেন্ট তৈরি করতে পারেন। এর ফলে রেন্ডার পাস অপারেশনগুলো টাইল মেমরিতেই থাকে, যা VRAM ট্র্যাফিক এড়ায় এবং টেক্সচারের জন্য 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',
  });
}

Hello Triangle 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);
}

ভোরের আপডেট

নিম্নলিখিত নতুন লিমিট টিয়ারগুলো উপলব্ধ:

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

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

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

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

ক্রোম ১৪৭-১৪৮

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩