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

François Beaufort
François Beaufort

প্রকাশিত: ১৭ জুন, ২০২৬

Immediates

ইমিডিয়েট, যা পুশ কনস্ট্যান্ট বা রুট কনস্ট্যান্ট নামেও পরিচিত, আপনাকে শেডারগুলিতে সরাসরি ঘন ঘন পরিবর্তন হওয়া ডেটার ছোট ছোট অংশ পাস করতে দেয়। এই প্রসেস GPU বাফার তৈরি করা এবং বাইন্ড গ্রুপ ম্যানেজ করার ওভারহেডকে বাইপাস করে।

প্রতিটি ড্র কলে পরিবর্তিত ডেটার জন্য ইউনিফর্ম বাফার বাইন্ডিং আপডেট করা—যেমন, অনন্য অবজেক্ট আইডি বা শত শত অবজেক্টের জন্য 3D ট্রান্সফর্মেশন ম্যাট্রিক্স—CPU ওভারহেড তৈরি করে। মেমরিতে ডেটা লেখা এবং GPU লুক-আপ ম্যানেজ করা এড়াতে, সরাসরি পাস এনকোডারে র ভ্যালু ইনজেক্ট করুন।

ইমিডিয়েট, খুব ছোট ও অত্যন্ত ডায়নামিক ভেরিয়েবলের জন্য দ্রুত পাথ প্রদান করে। ডেটার বড় অ্যারে, জটিল আলোকের গঠন বা বিশাল ম্যাট্রিক্সের জন্য ইউনিফর্ম বাফার বা স্টোরেজ বাফার ব্যবহার করুন।

আপনার WGSL শেডারে, <immediate> অ্যাড্রেস স্পেস আপনাকে এমন তাৎক্ষণিক ডেটা নির্ধারণ করতে দেয় যা সরাসরি পাস এনকোডারে পাস করা যেতে পারে। কোনও গ্রুপ বাইন্ড না করেই এই ডেটা প্রদান করতে, ড্র কল করার আগে JavaScript-এ setImmediates() কল করুন। কাজ করে কিনা তা চেক করতে, navigator.gpu.wgslLanguageFeatures-এর মাধ্যমে immediate_address_space WGSL ল্যাঙ্গুয়েজ এক্সটেনশন ফিচার-ডিটেক্ট করুন। নিচের উদাহরণ ও শিপ করার উদ্দেশ্য দেখুন।

if (!navigator.gpu.wgslLanguageFeatures.has('immediate_address_space')) {
   throw new Error(`WGSL immediate address space is not available`);
}

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

const module = device.createShaderModule({ code: `
  requires immediate_address_space;

  var<immediate> color: vec4f;

  @vertex fn vertexMain(@builtin(vertex_index) i : u32) -> @builtin(position) vec4f {
    const pos = array(vec2f(0, 1), vec2f(-1, -1), vec2f(1, -1));
    return vec4f(pos[i], 0, 1);
  }

  @fragment fn fragmentMain() -> @location(0) vec4f {
    return color;
  }`,
});

// Create render pass encoder (omitted)...

// By using layout: 'auto', WebGPU will automatically infer the `immediateSize`
// required by the pipeline layout from the WGSL module.
const pipeline = device.createRenderPipeline({
  layout: 'auto',
  vertex: { module },
  fragment: { module, targets: [{ format }] },
});
myRenderPassEncoder.setPipeline(pipeline);

// Send immediate data to the GPU, then issue a draw call
myRenderPassEncoder.setImmediates(/*rangeOffset=*/0, new Float32Array([255, 0, 0, 255]));
myRenderPassEncoder.draw(3);
myRenderPassEncoder.end();

এই ফিচারের ব্যাপারে আরও জানতে, WebGPUFundamentals Immediates দেখুন।

Microsoft-এর টিমকে তাদের অবদানের জন্য ধন্যবাদ!

ক্ষণস্থায়ী অ্যাটাচমেন্টের জন্য আরও কঠোর যাচাইকরণ

WebGPU সম্প্রতি TRANSIENT_ATTACHMENT GPUTextureUsage ফ্ল্যাগ চালু করেছে, যা ডেভেলপারদের ডেপথ-স্টেনসিল বা মাল্টিস্যাম্পেল টার্গেটের মতো অস্থায়ী রেন্ডার অ্যাটাচমেন্ট তৈরি করতে দেয়। এইসব অ্যাটাচমেন্ট মূল VRAM বরাদ্দ না করেই দ্রুত, অন-চিপ টাইল মেমরিতে থাকে।

সাম্প্রতিক আপডেট (#6248 ও #6267) এই মেমরি-দক্ষ টেক্সচার অ্যাটাচমেন্টের অপব্যবহার প্রতিরোধ করতে যাচাইকরণ সংক্রান্ত নিয়মকে আরও উন্নত করে:

  • প্ল্যাটফর্মের সীমাবদ্ধতার কারণে, ট্রানজিয়েন্ট টেক্সচার তৈরি করার সময় viewFormats খালি অ্যারে হতে হবে। বিকল্প ভিউ ফর্ম্যাটের প্রয়োজন নেই কারণ ক্ষণস্থায়ী টেক্সচার শুধুমাত্র রেন্ডার করার জন্য ব্যবহার করা হয়।
  • টেক্সচার ভিউ তৈরি করলে, ব্যবহারের ফ্ল্যাগ কমে যায় না। ট্রানজিয়েন্ট টেক্সচারে createView() কল করলে, ভিউ সেটির ব্যবহার পরিবর্তন করতে পারবে না।
  • ট্রানজিয়েন্ট অ্যাটাচমেন্টকে রেন্ডার পাসের resolveTarget হিসেবে ব্যবহার করা যায় না।

ভোরের আপডেট

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

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