ویژگی‌های جدید WebGPU (‏Chrome 142)

François Beaufort
François Beaufort

منتشرشده: ۲۲ اکتبر ۲۰۲۵

قابلیت‌های پشتیبانی از قالب بافت گسترش یافت

ویژگی جدید GPU با نام «texture-formats-tier1» به توسعه‌دهندگان امکان می‌دهد محتوای موجود را بدون نیاز به بازنویسی آن برای قابلیت‌های پایین‌تر WebGPU به وب منتقل کنند. از قالب‌های بافت جدید "r16unorm"،‏ "r16snorm"،‏ "rg16unorm"،‏ "rg16snorm"،‏ "rgba16unorm"، و "rgba16snorm" با قابلیت‌های پیوست رندر، ترکیب‌پذیری، نمونه‌برداری چندگانه، و دسترسی به بافت ذخیره‌سازی "read-only" یا "write-only" پشتیبانی می‌کند. همچنین از قالب‌های بافت "r8snorm"، "rg8snorm"، "rgba8snorm" موجود با قابلیت‌های پیوست رندر، ترکیب‌پذیری، نمونه‌برداری چندگانه، و وضوح پشتیبانی می‌کند. همچنین می‌توان از قالب‌های بافت بیشتری با دسترسی به بافت ذخیره‌سازی "read-only" یا "write-only" استفاده کرد.

ویژگی جدید GPU با نام «texture-formats-tier2» "read-write"دسترسی به بافت ذخیره‌سازی را برای قالب‌های خاص فعال می‌کند که برای پروژه‌هایی مثل انتقال Unreal Engine به وب حیاتی است. توجه داشته باشید که فعال کردن "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...
}

از افراد Intel به‌خاطر کارشان بسیار سپاس‌گزاریم!

نمایه اولیه در WGSL

primitive_index یک مقدار WGSL داخلی است که عنصر اولیه فعلی (برای مثال، نقطه، خط، یا مثلث) را که توسط سایه‌زن قطعه درحال پردازش است به‌طور منحصربه‌فرد شناسایی می‌کند. از ۰ شروع می‌شود، پس‌از پردازش هر عنصر اولیه ۱ واحد افزایش می‌یابد، و بین هر نمونه رسم‌شده به ۰ بازنشانی می‌شود.

وقتی ویژگی "primitive-index" در GPUAdapter دردسترس است، GPUDevice را با این ویژگی درخواست کنید تا از شاخص اولیه در WGSL پشتیبانی کنید و این افزونه را به‌طور صریح در کد 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...

با بررسی نمونه انتخاب اولیه و دیدن ورودی chromestatus، بیشتر کاوش کنید.

مثلث‌های مدل قوری سه‌بعدی براساس مقادیر شاخص اولیه آن‌ها رنگ‌آمیزی شده‌اند.
نمونه «انتخاب اولیه» در حالت «شاخص‌های اولیه».

به‌روزرسانی‌های سپیده‌دم

متغیر DAWN_BUILD_MONOLITHIC_LIBRARY CMake که برای مدیریت نوع کتابخانه یکپارچه برای ساختن استفاده می‌شود، مقدار پیش‌فرض خود را از OFF به STATIC تغییر داده است، به‌طوری‌که به‌طور پیش‌فرض فایل‌های libwebgpu* تولید خواهد شد.

اکنون Dawn به‌درستی wgpu::PresentMode::Undefined پیش‌فرض را هنگام پیکربندی wgpu::Surface مدیریت می‌کند. مشکل ۴۴۱۴۱۰۶۶۸ را ببینید.

این فقط برخی‌از نکات برجسته کلیدی را پوشش می‌دهد. فهرست کامل تعهدات را بررسی کنید.

ویژگی‌های جدید WebGPU

فهرستی از همه مواردی که در مجموعه ویژگی‌های جدید WebGPU پوشش داده شده است.

‫۱۵۵-۱۵۶ Chrome

‫۱۵۳-۱۵۴ Chrome

Chrome 151-152

‫۱۴۹-۱۵۰ Chrome

‫۱۴۷-۱۴۸ Chrome

‫۱۴۶ Chrome

‫Chrome 145

‫۱۴۴ Chrome

‫۱۴۳ Chrome

‫۱۴۲ Chrome

Chrome 141

‫۱۴۰ Chrome

Chrome 139

‫Chrome 138

Chrome 137

‫Chrome 136

‫۱۳۵ Chrome

‫۱۳۴ Chrome

‫Chrome 133

‫۱۳۲ Chrome

‫۱۳۱ Chrome

‫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