WebGPU (Chrome 137) তে নতুন কি, WebGPU তে নতুন কি (Chrome 137)

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

প্রকাশিত: 26 মে, 2025

বাহ্যিক টেক্সচার বাইন্ডিংয়ের জন্য টেক্সচার ভিউ ব্যবহার করুন

একটি সামঞ্জস্যপূর্ণ GPUTextureView (2D, একক সাবরিসোর্স) এখন একটি GPUBindGroup তৈরি করার সময় একটি GPUExternalTexture বাইন্ডিংয়ের জায়গায় ব্যবহার করার অনুমতি দেওয়া হয়েছে।

এটি ভিডিও ইফেক্ট পাইপলাইনগুলিতে শেডার লজিককে সরল করে যেখানে GPUExternalTexture (উৎস ভিডিওর জন্য) এবং GPUTextureView (মধ্যবর্তী প্রক্রিয়াকরণের জন্য) উভয়ই পরিচালনা করতে হবে। এটি টেক্সচার কোথা থেকে আসে তার উপর নির্ভর করে গতিশীলভাবে শেডার কম্পাইল করার প্রয়োজনীয়তাও হ্রাস করে। জাহাজের উদ্দেশ্য দেখুন: WebGPU: GPUTextureView বহিরাগত টেক্সচার বাইন্ডিংয়ের জন্য

const texture = myDevice.createTexture({
  size: [42, 42],
  format: navigator.gpu.getPreferredCanvasFormat(),
  usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});

const code = `
@group(0) @binding(0) var texture : texture_external;
@group(0) @binding(1) var<storage, read_write> buffer: vec2u;
    
@compute @workgroup_size(1) fn main() {
  buffer = textureDimensions(texture);
}`;

const pipeline = myDevice.createComputePipeline({
  layout: "auto",
  compute: { module: myDevice.createShaderModule({ code }) },
});

const bindGroup = myDevice.createBindGroup({
  layout: pipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: texture.createView() }, // Use texture view for an externalTexture binding
    { binding: 1, resource: { buffer: myBuffer } },
  ],
});

অফসেট এবং আকার নির্দিষ্ট না করেই বাফার কপি করে

একটি নতুন GPUCommandEncoder পদ্ধতি ওভারলোড ডেভেলপারদের সম্পূর্ণ বাফারের অনুলিপি সহজ করতে copyBufferToBuffer() ব্যবহার করার সময় অফসেট এবং আকারের প্যারামিটারগুলি বাদ দিতে দেয়৷ শিপ করার উদ্দেশ্য দেখুন: WebGPU: copyBufferToBuffer ওভারলোড

const size = 42;
const srcBuffer = myDevice.createBuffer({
  size,
  usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const dstBuffer = myDevice.createBuffer({
  size,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});

// Copy entire buffer.
myCommandEncoder.copyBufferToBuffer(srcBuffer, dstBuffer);

// This is the same as the following.
// myCommandEncoder.copyBufferToBuffer(srcBuffer, 0, dstBuffer, 0, size);

পরমাণু থেকে পয়েন্টার ব্যবহার করে WGSL ওয়ার্কগ্রুপ ইউনিফর্ম লোড

ডেভেলপারদের সুবিধার জন্য WGSL-এ একটি নতুন workgroupUniformLoad(ptr) ওভারলোড যোগ করা হয়েছে। এটি পারমাণবিকভাবে ptr দ্বারা নির্দেশিত মান লোড করে এবং ওয়ার্কগ্রুপের সমস্ত আমন্ত্রণে এটি ফেরত দেয়, যেখানে ptr একটি ওয়ার্কগ্রুপ ভেরিয়েবলের ভিতরে একটি পয়েন্টার-টু-পারমাণবিক। সংখ্যা 408241039 দেখুন।

@group(0) @binding(0) var<storage, read_write> buffer : array<u32, 1>;

var<workgroup> wgvar : atomic<u32>;

@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_index) lid: u32) {
  if (lid == 0) {
    atomicStore(&(wgvar), 42u);
  }
  buffer[lid] = workgroupUniformLoad(&wgvar);
}

GPUAdapterInfo powerPreference অ্যাট্রিবিউট

যখন ব্যবহারকারী chrome://flags/#enable-webgpu-developer-features এ "WebGPU বিকাশকারী বৈশিষ্ট্য" ফ্ল্যাগ সক্ষম করে তখন অ-মানক powerPreference GPUAdapterInfo স্ট্রিং বৈশিষ্ট্যটি এখন উপলব্ধ। যদি সমর্থিত হয়, GPURequestAdapterOptions- এ ব্যবহৃত GPUPowerPreference মানের উপর নির্ভর করে powerPreference মান হয় "low-power" বা "high-performance" হতে পারে। CL 6438860 দেখুন।

function checkPowerPreferenceForGpuDevice(device) {
  const powerPreference = device.adapterInfo.powerPreference;
  if (powerPreference === "high-performance") {
    // High-performance GPU detected. Enabling enhanced graphics settings.
  } else if (powerPreference === "low-power") {
    // Low-power GPU detected. Optimizing for battery life.
  }
}

GPURequestAdapterOptions compatibilityMode বৈশিষ্ট্য সরান

পরীক্ষামূলক GPURequestAdapterOptions compatibilityMode অ্যাট্রিবিউটটি Chrome 133-এ যোগ করা স্ট্যান্ডার্ডাইজড featureLevel অ্যাট্রিবিউটের পক্ষে সরানো হয়েছে। সংখ্যা 366151404 দেখুন।

ভোরের আপডেট

ডেভেলপাররা WebGPU.h ব্যবহার করে C++ এর মতো ভাষায় WebGPU প্রোজেক্ট তৈরি করতে পারে WebAssembly এবং নির্দিষ্ট প্ল্যাটফর্ম উভয়কেই টার্গেট করতে। Dawn-এর সদ্য-প্রকাশিত "emdawnwebgpu" ("Emscripten Dawn WebGPU") ব্রাউজার এপিআই-এর উপর সর্বশেষ প্রমিত webgpu.h প্রয়োগ করে৷

Emdawnwebgpu হল Emscripten এর (এখন অপরিবর্তিত) অন্তর্নির্মিত বাইন্ডিং ( USE_WEBGPU ) এর একটি (রক্ষণাবেক্ষণ করা) কাঁটা। সমস্ত নতুন ডেভেলপমেন্ট emdawnwebgpu-তে করা হচ্ছে, এবং ডেভেলপাররা emdawnwebgpu-তে স্থানান্তরিত হলে Emscripten-এর অন্তর্নির্মিত বাইন্ডিংগুলি সরানো হবে। Emdawnwebgpu-এর C শিরোনামটি Dawn-এর খুব কাছাকাছি, যেখানে বিল্ট-ইন বাইন্ডিংগুলি উল্লেখযোগ্যভাবে পুরানো৷

ডনের গিটহাব রিলিজ পৃষ্ঠা থেকে emdawnwebgpu ডাউনলোড করুন এবং এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে তথ্যের জন্য প্যাকেজের README.md পড়ুন। সোর্স ফাইলগুলি ডন রিপোজিটরিতে পাওয়া যাবে।

একটি সম্পূর্ণ গাইডের জন্য, WebGPU ডকুমেন্টেশন সহ আপডেট করা একটি অ্যাপ তৈরি করুন দেখুন।

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

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

ওয়েবজিপিইউ সিরিজে নতুন কী কভার করা হয়েছে তার একটি তালিকা।

ক্রোম 138

ক্রোম 137

ক্রোম 136

ক্রোম 135

ক্রোম 134

ক্রোম 133

ক্রোম 132

ক্রোম 131

ক্রোম 130

ক্রোম 129

ক্রোম 128

ক্রোম 127

ক্রোম 126

ক্রোম 125

ক্রোম 124

ক্রোম 123

ক্রোম 122

ক্রোম 121

ক্রোম 120

ক্রোম 119

ক্রোম 118

ক্রোম 117

ক্রোম 116

ক্রোম 115

ক্রোম 114

ক্রোম 113