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

ফ্রাঁসোয়া বোফোর্ট
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
}

Volume Rendering - Texture 3D WebGPU স্যাম্পলটি দেখে এবং chromestatus এন্ট্রিটি পর্যবেক্ষণ করে 3D ব্রেন স্ক্যান সম্পর্কে জানুন।

WebGPU ব্যবহার করে রেন্ডার করা 3D ব্রেন স্ক্যান।
ASTC কম্প্রেসড ফরম্যাটে একটি 3D টেক্সচার থেকে প্রাপ্ত মস্তিষ্কের স্ক্যান চিত্র।

নতুন 'কোর-ফিচার-অ্যান্ড-লিমিটস' ফিচার

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

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

WebGPU কম্প্যাটিবিলিটি মোডে বিস্তারিত ব্যাখ্যা ও ব্যবহারের জন্য, ব্যাখ্যামূলক অংশ এবং পরবর্তী অনুচ্ছেদটি দেখুন। ইস্যু 418025721 দেখুন।

WebGPU সামঞ্জস্য মোডের জন্য Origin ট্রায়াল

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

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

WebGPU সামঞ্জস্য মোডের চাক্ষুষ উপস্থাপনা।
WebGPU সামঞ্জস্য মোডের পরিধি প্রসারিত হয়েছে।

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

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

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

// 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://flags/#enable-experimental-web-platform-features "Experimental Web Platform Features" ফ্ল্যাগটি সক্রিয় করে এটিকে স্থানীয়ভাবে চালু করতে পারেন।

আপনার অ্যাপের সকল ভিজিটরের জন্য এটি চালু করতে, একটি অরিজিন ট্রায়াল চলছে যা ক্রোম ১৪৫ (২১শে এপ্রিল, ২০২৬)-এ শেষ হবে। ট্রায়ালে অংশগ্রহণ করতে, ‘ Get started with origin trials’ পোস্টটি দেখুন।

ভোরের আপডেট

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

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

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

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

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

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

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩