WebGPU (Chrome 135) এ নতুন কি আছে

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

প্রকাশিত: ২৬ মার্চ, ২০২৫

নাল বাইন্ড গ্রুপ লেআউট সহ পাইপলাইন লেআউট তৈরির অনুমতি দিন

পূর্বে, একটি খালি বাইন্ড গ্রুপ লেআউট তৈরি করার জন্য শূন্য বাইন্ডিং সহ একটি বাইন্ড গ্রুপ যোগ করতে হতো, যা অসুবিধাজনক ছিল। এখন আর এর প্রয়োজন নেই, কারণ পাইপলাইন লেআউট তৈরি করার সময় নাল বাইন্ড গ্রুপ লেআউটগুলো এখন অনুমোদিত এবং উপেক্ষা করা হয়। এতে ডেভেলপমেন্ট আরও সহজ হবে।

উদাহরণস্বরূপ, আপনি এমন একটি পাইপলাইন তৈরি করতে চাইতে পারেন যা শুধুমাত্র বাইন্ড গ্রুপ লেআউট ০ এবং ২ ব্যবহার করে। আপনি ফ্র্যাগমেন্ট ডেটাতে বাইন্ড গ্রুপ লেআউট ১ এবং ভার্টেক্স ডেটাতে বাইন্ড গ্রুপ লেআউট ২ অ্যাসাইন করতে পারেন, এবং তারপর ফ্র্যাগমেন্ট শেডার ছাড়াই রেন্ডার করতে পারেন। ইস্যু ৩৭৭৮৩৬৫২৪ দেখুন।

const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });

// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
  bindGroupLayouts: [bgl0, null, bgl2],
});

ভিউপোর্টগুলিকে রেন্ডার টার্গেটের সীমানা ছাড়িয়ে প্রসারিত করার অনুমতি দিন

ভিউপোর্ট ভ্যালিডেশনের শর্তাবলী শিথিল করা হয়েছে, যার ফলে ভিউপোর্টগুলো রেন্ডার টার্গেটের সীমানা অতিক্রম করতে পারবে। এটি বিশেষত UI-এর মতো 2D এলিমেন্ট আঁকার ক্ষেত্রে উপযোগী, যা বর্তমান ভিউপোর্টের বাইরেও বিস্তৃত হতে পারে। ইস্যু 390162929 দেখুন।

const passEncoder = myCommandEncoder.beginRenderPass({
  colorAttachments: [
    {
      view: myColorTexture.createView(),
      loadOp: "clear",
      storeOp: "store",
    },
  ],
});

// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
  /*x=*/ -8,
  /*y=*/ -8,
  /*width=*/ myColorTexture.width + 16,
  /*height=*/ myColorTexture.height + 16,
  /*minDepth=*/ 0,
  /*maxDepth=*/ 1,
);

// Draw geometry and complete the render pass as usual.

অ্যান্ড্রয়েডে পরীক্ষামূলক সামঞ্জস্য মোডে আরও সহজে প্রবেশ করা যায়

এখন শুধুমাত্র chrome://flags/#enable-unsafe-webgpu ফ্ল্যাগটিই অ্যান্ড্রয়েডে পরীক্ষামূলক WebGPU কম্প্যাটিবিলিটি মোডের জন্য প্রয়োজনীয় সমস্ত ক্ষমতা সক্রিয় করে। এর মাধ্যমে, আপনি featureLevel: "compatibility" অপশন ব্যবহার করে কম্প্যাটিবিলিটি মোডে একটি GPUAdapter-এর জন্য অনুরোধ করতে পারেন এবং এমনকি Vulkan সমর্থন নেই এমন ডিভাইসগুলিতেও OpenGL ES ব্যাকএন্ড অ্যাক্সেস করতে পারেন। নিম্নলিখিত উদাহরণ এবং ইস্যু dawn:389876644 দেখুন।

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
WebGPU রিপোর্ট পেজটি অ্যান্ড্রয়েড ডিভাইসে GPUAdapter-টিকে কম্প্যাটিবিলিটি মোডে দেখাচ্ছে।
webgpureport.org- এ কম্প্যাটিবিলিটি মোড অ্যাডাপ্টারের তথ্য।

maxInterStageShaderComponents সীমা অপসারণ করুন

পূর্বঘোষণা অনুযায়ী, একাধিক কারণের সমন্বয়ে maxInterStageShaderComponents সীমাটি তুলে দেওয়া হয়েছে:

  • maxInterStageShaderVariables এর সাথে পুনরাবৃত্তি: এই সীমাটি ইতিমধ্যেই একটি অনুরূপ উদ্দেশ্য পূরণ করে, যা শেডার পর্যায়গুলির মধ্যে প্রেরিত ডেটার পরিমাণ নিয়ন্ত্রণ করে।
  • সামান্য অমিল: যদিও দুটি সীমা গণনা করার পদ্ধতিতে সামান্য পার্থক্য রয়েছে, এই পার্থক্যগুলি নগণ্য এবং maxInterStageShaderVariables সীমার মধ্যে কার্যকরভাবে পরিচালনা করা যেতে পারে।
  • সরলীকরণ: maxInterStageShaderComponents অপসারণ করলে শেডার ইন্টারফেস সুবিন্যস্ত হয় এবং ডেভেলপারদের জন্য জটিলতা হ্রাস পায়। সূক্ষ্ম পার্থক্যযুক্ত দুটি পৃথক সীমা পরিচালনা করার পরিবর্তে, তারা আরও যথাযথভাবে নামকরণ করা এবং ব্যাপক maxInterStageShaderVariables উপর মনোযোগ দিতে পারে।

অপসারণের অভিপ্রায় এবং ইস্যু ৩৬৪৩৩৮৮১০ দেখুন।

ভোরের আপডেট

ফিল্টারিং স্যাম্পলার ব্যবহার করে ডেপথ টেক্সচার স্যাম্পল করা এখন আর সম্ভব নয়। মনে রাখবেন, একটি ডেপথ টেক্সচার শুধুমাত্র নন-ফিল্টারিং অথবা কম্প্যারিসন স্যাম্পলারের সাথেই ব্যবহার করা যায়। ইস্যু 379788112 দেখুন।

WGPURequiredLimits এবং WGPUSupportedLimits স্ট্রাকচারগুলোকে একীভূত করে WGPULimits করা হয়েছে। ইস্যু 374263404 দেখুন।

নিম্নলিখিত স্ট্রাক্টগুলোর নাম পরিবর্তন করা হয়েছে। ইস্যু ৪২২৪০৭৯৩ দেখুন।

  • WGPUImageCopyBuffer এখন WGPUTexelCopyBufferInfo
  • WGPUImageCopyTexture এখন WGPUTexelCopyTextureInfo
  • WGPUTextureDataLayout এখন WGPUTexelCopyBufferLayout

WGPUAdapterInfo স্ট্রাকচারে subgroupMinSize এবং subgroupMaxSize মেম্বারগুলো যোগ করা হয়েছে। webgpu-headers PR দেখুন।

আপনার প্রোগ্রামটি DAWN_TRACE_FILE_BASE এনভায়রনমেন্ট ভেরিয়েবল দিয়ে রান করলে এখন Metal-এ Dawn API-এর ব্যবহার ট্রেস করা সম্ভব। এটি একটি .gputrace ফাইল সেভ করে, যা পরে XCode-এর Metal Debugger-এ লোড করা যায়। Debugging Dawn ডকুমেন্টেশন দেখুন।

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

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

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

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

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩