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

François Beaufort
François Beaufort

প্রকাশিত: ৩০ জুলাই, ২০২৫

BC ও ASTC কম্প্রেসড ফর্ম্যাটের জন্য 3D টেক্সচার সাপোর্ট

"texture-compression-bc-sliced-3d" এবং "texture-compression-astc-sliced-3d" WebGPU ফিচার, ব্লক কম্প্রেশন (BC) ও অ্যাডাপ্টিভ স্কেলেবল টেক্সচার কম্প্রেশন (ASTC) ফর্ম্যাট ব্যবহার করে 3D টেক্সচারের জন্য সহায়তা যোগ করে। এটি আপনাকে ভলিউমেট্রিক টেক্সচার ডেটার জন্য BC এবং ASTC ফর্ম্যাটের দক্ষ কম্প্রেশন ক্ষমতার সুবিধা নিতে দেয়, যা ভিজ্যুয়াল কোয়ালিটিতে উল্লেখযোগ্য ক্ষতি ছাড়াই মেমরি ফুটপ্রিন্ট এবং ব্যান্ডউইথের প্রয়োজনীয়তা উল্লেখযোগ্যভাবে হ্রাস করে। বৈজ্ঞানিক ভিজ্যুয়ালাইজেশন, মেডিকেল ইমেজিং এবং উন্নত রেন্ডারিং টেকনিকের মতো ফিল্ডে এটি বিশেষভাবে গুরুত্বপূর্ণ।

নিচের কোড স্নিপেট চেক করে দেখে যে অ্যাডাপ্টার BC ও ASTC কম্প্রেসড ফর্ম্যাট সহ 3D টেক্সচার সাপোর্ট করে কিনা এবং এগুলি উপলভ্য থাকলে এইসব ফিচার সহ ডিভাইসের জন্য অনুরোধ করে।

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

const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-bc",
    "texture-compression-bc-sliced-3d",
  );
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
  requiredFeatures.push(
    "texture-compression-astc",
    "texture-compression-astc-sliced-3d",
  );
}
const device = await adapter?.requestDevice({ requiredFeatures });

// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
  // Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
  // Create a 3D texture using BC compression
} else {
  // Fallback: Create an uncompressed 3D texture
}

ভলিউম রেন্ডারিং - টেক্সচার 3D WebGPU স্যাম্পেল চেক করে 3D ব্রেন স্ক্যান এক্সপ্লোর করুন এবং chromestatus এন্ট্রি দেখুন।

WebGPU ব্যবহার করে রেন্ডার করা 3D ব্রেন স্ক্যান।
ASTC কম্প্রেসড ফর্ম্যাট সহ 3D টেক্সচার থেকে ব্রেন স্ক্যান ইমেজ।

নতুন "core-features-and-limits" ফিচার

আসন্ন WebGPU কম্প্যাটিবিলিটি মোডের জন্য একটি নতুন "core-features-and-limits" ফিচার চালু করা হচ্ছে। এই ফিচার থেকে বোঝা যায় যে অ্যাডাপ্টার বা ডিভাইসটি WebGPU স্পেসিফিকেশনের মূল ফিচার ও সীমা সাপোর্ট করে। "কোর" WebGPU হল বর্তমানে উপলভ্য একমাত্র ভার্সন, তাই সব WebGPU ইমপ্লিমেন্টেশনে অবশ্যই "core-features-and-limits" অন্তর্ভুক্ত থাকতে হবে।

ভবিষ্যতে, WebGPU মানানসই মোড রিলিজ করা হলে, কোনও অ্যাডাপ্টর বা ডিভাইসে এই ফিচার নাও থাকতে পারে, যাতে এটি মানানসই মোড অ্যাডাপ্টর বা ডিভাইস হিসেবে চিহ্নিত করা যায় এবং এটি কোর অ্যাডাপ্টর বা ডিভাইস নয়। কোনও ডিভাইসে এটি চালু করা হলে, এটি কম্প্যাটিবিলিটি মোড সংক্রান্ত সমস্ত বিধিনিষেধ (ফিচার ও সীমা) তুলে নেয়।

WebGPU কম্প্যাটিবিলিটি মোডে বিস্তারিত ব্যাখ্যা ও ব্যবহারের জন্য, ব্যাখ্যা ও নিম্নলিখিত বিভাগ দেখুন। issue 418025721 দেখুন।

WebGPU কম্প্যাটিবিলিটি মোডের জন্য অরিজিন ট্রায়াল

WebGPU হল আধুনিক গ্রাফিক্সের জন্য ডিজাইন করা একটি শক্তিশালী API যা Vulkan, Metal এবং Direct3D 12-এর মতো প্রযুক্তির সাথে সামঞ্জস্যপূর্ণ। তবে, এখনও অনেক ডিভাইসে এই নতুন API কাজ করে না। যেমন, Windows-এ, ৩১% Chrome ব্যবহারকারীর Direct3D 11.1 বা তার পরের যেকোনও ভার্সন নেই। Android-এ, ১৫% Android ব্যবহারকারীর কাছে Vulkan 1.1 নেই, এর মধ্যে ১০% ব্যবহারকারীর কাছে Vulkan একেবারেই নেই।

এটি সেইসব ডেভেলপারদের জন্য একটি চ্যালেঞ্জ তৈরি করে যারা তাদের অ্যাপ্লিকেশনের রিচ সর্বাধিক করতে চান। তাদের প্রায়শই একাধিক ইমপ্লিমেন্টেশন (যেমন, WebGPU ও WebGL) ডেভেলপ করতে হয়, মূল WebGPU-এর সাথে আরও সীমিত সংখ্যক দর্শক গ্রহণ করতে হয় অথবা WebGL-এ আটকে থাকতে হয়, যার ফলে GPU কম্পিউটের মতো WebGPU-এর উন্নত ফিচার তারা ব্যবহার করতে পারেন না।

WebGPU কম্প্যাটিবিলিটি মোডের ভিজ্যুয়াল উপস্থাপনা।
WebGPU কম্প্যাটিবিলিটি মোডের পরিধি বাড়ানো হয়েছে।

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

কারণ, কম্প্যাটিবিলিটি মোড হল WebGPU-এর একটি সাবসেট, এটি দিয়ে তৈরি অ্যাপ্লিকেশনও বৈধ WebGPU "কোর" অ্যাপ্লিকেশন। এর অর্থ হল, যেসব ব্রাউজারে কম্প্যাটিবিলিটি মোড কাজ করে না সেগুলিতেও এগুলি নির্বিঘ্নে চলবে।

অনেক সাধারণ অ্যাপ্লিকেশনের ক্ষেত্রে, requestAdapter() কল করার সময় featureLevel: "compatibility" পাস করার মতোই সহজভাবে মানানসই মোড চালু করা যায়। আরও জটিল অ্যাপ্লিকেশনকে মোডের বিধিনিষেধের মধ্যে ফিট করার জন্য সামান্য পরিবর্তন করার প্রয়োজন হতে পারে। Generate Mipmap WebGPU sample হল একটি ভালো উদাহরণ।

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

const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
  requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});

if (device?.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions will apply
}

ফিচার চালু করুন

ডিফল্ট হিসেবে, Chrome-এ WebGPU কম্প্যাটিবিলিটি মোড চালু করা থাকে না, তবে Chrome 139-এ এই ফাংশনালিটি স্পষ্টভাবে চালু করে এটি নিয়ে পরীক্ষা করা যেতে পারে। আপনি chrome://flags/#enable-experimental-web-platform-features-এ "পরীক্ষামূলক ওয়েব প্ল্যাটফর্ম ফিচার" ফ্ল্যাগ চালু করে এটি লোকালি অ্যাক্টিভেট করতে পারবেন।

আপনার অ্যাপের সব ভিজিটরদের জন্য এটি চালু করতে, একটি অরিজিন ট্রায়াল চলছে এবং Chrome 145 (২১ এপ্রিল, ২০২৬)-এ এটি শেষ হবে বলে সেট করা হয়েছে। ট্রায়ালে অংশগ্রহণ করতে, অরিজিন ট্রায়াল শুরু করা পোস্ট দেখুন।

ভোরের আপডেট

WGPUQueueWorkDoneCallback ফাংশনে একটি message আর্গুমেন্ট যোগ করা হয়েছে যাতে এটি অন্যান্য কলব্যাক ফাংশনের সাথে আরও বেশি সামঞ্জস্যপূর্ণ হয় যেগুলি স্ট্যাটাসও নেয়। webgpu-headers PR দেখুন।

emdawnwebgpu, -sSHARED_MEMORY-এর সাথে লিঙ্ক করা হলে, এর webgpu.cpp ফাইলটিও এই ফ্ল্যাগ দিয়ে কম্পাইল করা হয়। Dawn CL 244075 দেখুন।

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

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