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

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

প্রকাশিত: ২২ অক্টোবর, ২০২৫

টেক্সচার ফরম্যাট সমর্থনের সক্ষমতা প্রসারিত করা হয়েছে

নতুন "texture-formats-tier1" GPU ফিচারটি ডেভেলপারদেরকে WebGPU-এর নিম্ন ক্ষমতার জন্য বিদ্যমান কন্টেন্টকে নতুন করে না লিখেই ওয়েবে পোর্ট করার সুযোগ দেয়। এটি রেন্ডার অ্যাটাচমেন্ট, ব্লেন্ডেবল, মাল্টিস্যাম্পলিং ক্ষমতা এবং "read-only" " স্টোরেজ টেক্সচার অ্যাক্সেস সহ নতুন "r16unorm" , "r16snorm" "rg16unorm" , "rg16snorm" "rgba16unorm" , "rg16snorm", "rgba16unorm", এবং "rgba16snorm" " টেক্সচার ফরম্যাট সমর্থন করে। এটি রেন্ডার অ্যাটাচমেন্ট, ব্লেন্ডেবল, মাল্টিস্যাম্পলিং এবং রিজলভ ক্ষমতা সহ বিদ্যমান "r8snorm" , "rg8snorm" , "rgba8snorm" টেক্সচার ফরম্যাটগুলোকেও ব্যবহারের সুযোগ দেয়। আরও অনেক টেক্সচার ফরম্যাট "read-only" বা "write-only" "write-only" স্টোরেজ টেক্সচার অ্যাক্সেসের মাধ্যমেও ব্যবহার করা যেতে পারে।

নতুন 'texture-formats-tier2' GPU ফিচারটি নির্দিষ্ট ফরম্যাটের জন্য স্টোরেজ টেক্সচারে "read-write" অ্যাক্সেস সক্ষম করে, যা আনরিয়েল ইঞ্জিনকে ওয়েবে পোর্ট করার মতো প্রোজেক্টের জন্য অত্যন্ত গুরুত্বপূর্ণ। উল্লেখ্য যে, ডিভাইস তৈরির সময় "texture-formats-tier2" সক্রিয় করলে স্বয়ংক্রিয়ভাবে "texture-formats-tier1" সক্রিয় হয়ে যায়।

নিম্নলিখিত কোড স্নিপেট এবং chromestatus এন্ট্রিটি দেখুন।

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

const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
  requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
  requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });

// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
  // Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
  // Use "read-only" or "write-only" storage texture access...
} else {
  // Fallback: Use another texture format...
}

ইন্টেলের কর্মীদের তাদের কাজের জন্য অনেক ধন্যবাদ!

WGSL-এ আদিম সূচক

primitive_index হলো একটি বিল্ট-ইন WGSL ভ্যালু যা একটি ফ্র্যাগমেন্ট শেডার দ্বারা প্রসেস করা বর্তমান প্রিমিটিভকে (যেমন, একটি পয়েন্ট, লাইন বা ত্রিভুজ) অনন্যভাবে শনাক্ত করে। এর মান ০ থেকে শুরু হয়, প্রতিটি প্রিমিটিভ প্রসেস করার পর ১ করে বাড়ে এবং প্রতিটি ইনস্ট্যান্স আঁকার মাঝে এটি আবার ০-তে রিসেট হয়ে যায়।

যখন কোনো GPUAdapter-এ "primitive-index" ফিচারটি উপলব্ধ থাকে, তখন WGSL-এ প্রিমিটিভ ইনডেক্স সাপোর্ট পেতে এই ফিচারসহ একটি GPUDevice-এর জন্য অনুরোধ করুন, এবং আপনার WGSL কোডে enable primitive_index; ব্যবহার করে এই এক্সটেনশনটি স্পষ্টভাবে সক্রিয় করুন। একবার সক্রিয় হয়ে গেলে, উদাহরণস্বরূপ, রেন্ডার করা প্রতিটি স্বতন্ত্র জ্যামিতিক আকারের জন্য ভিন্ন ভিন্ন লজিক সম্পাদন করতে বা প্রতি-প্রিমিটিভ ডেটা অ্যাক্সেস করার জন্য আপনার ফ্র্যাগমেন্ট শেডারে primitive_index বিল্ট-ইন ইন্টিজার মানটি ব্যবহার করুন।

নিম্নলিখিত কোড স্নিপেটটি একটি ফ্র্যাগমেন্ট শেডার দেখায় যা দ্বিতীয় প্রিমিটিভটিকে লাল রঙে এবং অন্য সব প্রিমিটিভকে নীল রঙে রেন্ডার করে।

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
  throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
  requiredFeatures: ["primitive-index"],
});

const fragmentShaderModule = device.createShaderModule({ code: `
  enable primitive_index;

  @fragment
  fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
    if (i == 1) {
      return vec4f(1, 0, 0, 1);
    }
    return vec4f(0, 1, 0, 1);
  }`,
});
// Send the appropriate commands to the GPU...

Primitive Picking স্যাম্পলটি দেখে আরও অন্বেষণ করুন এবং chromestatus এন্ট্রিটি পর্যবেক্ষণ করুন।

ত্রিমাত্রিক চায়ের কেটলির মডেলের ত্রিভুজগুলোকে তাদের আদি সূচক মানের ওপর ভিত্তি করে রঙ করা হয়েছে।
'প্রিমিটিভ ইনডেক্স' মোডে প্রিমিটিভ পিকিং স্যাম্পল।

ভোরের আপডেট

কোন ধরনের মনোলিথিক লাইব্রেরি বিল্ড করা হবে তা নির্ধারণ করতে ব্যবহৃত DAWN_BUILD_MONOLITHIC_LIBRARY CMake ভেরিয়েবলটির ডিফল্ট মান OFF থেকে STATIC এ পরিবর্তন করা হয়েছে, যার ফলে ডিফল্টভাবে libwebgpu* ফাইলগুলো জেনারেট হবে।

wgpu::Surface কনফিগার করার সময় Wgpu:: wgpu::PresentMode::Undefined ডিফল্ট হওয়াকে Dawn এখন সঠিকভাবে পরিচালনা করে। ইস্যু 441410668 দেখুন।

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

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

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

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

ক্রোম ১৪৬

ক্রোম ১৪৫

ক্রোম ১৪৪

ক্রোম ১৪৩

ক্রোম ১৪২

ক্রোম ১৪১

ক্রোম ১৪০

ক্রোম ১৩৯

ক্রোম ১৩৮

ক্রোম ১৩৭

ক্রোম ১৩৬

ক্রোম ১৩৫

ক্রোম ১৩৪

ক্রোম ১৩৩

ক্রোম ১৩২

ক্রোম ১৩১

ক্রোম ১৩০

ক্রোম ১২৯

ক্রোম ১২৮

ক্রোম ১২৭

ক্রোম ১২৬

ক্রোম ১২৫

ক্রোম ১২৪

ক্রোম ১২৩

ক্রোম ১২২

ক্রোম ১২১

ক্রোম ১২০

ক্রোম ১১৯

ক্রোম ১১৮

ক্রোম ১১৭

ক্রোম ১১৬

ক্রোম ১১৫

ক্রোম ১১৪

ক্রোম ১১৩