موارد جدید در WebGPU (Chrome 139)

فرانسوا بوفور
François Beaufort

منتشر شده: ۳۰ ژوئیه ۲۰۲۵

پشتیبانی از بافت سه‌بعدی برای فرمت‌های فشرده BC و ASTC

ویژگی‌های WebGPU با نام‌های "texture-compression-bc-sliced-3d" و "texture-compression-astc-sliced-3d" پشتیبانی از بافت‌های سه‌بعدی با استفاده از فرمت‌های Block Compression (BC) و Adaptive Scalable Texture Compression (ASTC) را فراهم می‌کنند. این قابلیت به شما امکان می‌دهد از قابلیت‌های فشرده‌سازی کارآمد فرمت‌های BC و ASTC برای داده‌های بافت حجمی بهره‌مند شوید و کاهش قابل توجهی در فضای حافظه و پهنای باند مورد نیاز بدون افت قابل توجه کیفیت بصری ارائه دهید. این قابلیت به ویژه در زمینه‌هایی مانند مصورسازی علمی، تصویربرداری پزشکی و تکنیک‌های رندر پیشرفته ارزشمند است.

قطعه کد زیر بررسی می‌کند که آیا آداپتور از بافت‌های سه‌بعدی با فرمت‌های فشرده BC و ASTC پشتیبانی می‌کند یا خیر و در صورت وجود، دستگاهی با این ویژگی‌ها را درخواست می‌کند.

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 ، اسکن‌های سه‌بعدی مغز را بررسی کنید.

اسکن‌های مغزی سه‌بعدی که با استفاده از WebGPU رندر شده‌اند.
تصویر اسکن مغز از یک بافت سه‌بعدی با فرمت فشرده ASTC.

ویژگی جدید «ویژگی‌های اصلی و محدودیت‌ها»

یک ویژگی جدید "core-features-and-limits" برای حالت سازگاری WebGPU که به زودی عرضه می‌شود، معرفی شده است. این ویژگی نشان می‌دهد که آداپتور یا دستگاه از ویژگی‌ها و محدودیت‌های اصلی مشخصات WebGPU پشتیبانی می‌کند. WebGPU «هسته» تنها نسخه موجود در حال حاضر است، بنابراین همه پیاده‌سازی‌های WebGPU باید "core-features-and-limits" در ویژگی‌های پشتیبانی‌شده خود داشته باشند.

در آینده، هنگامی که حالت سازگاری WebGPU منتشر شود، ممکن است یک آداپتور یا دستگاه این ویژگی را نداشته باشد تا نشان دهد که یک آداپتور یا دستگاه حالت سازگاری است و نه یک آداپتور یا دستگاه اصلی. وقتی این ویژگی در یک دستگاه فعال شود، تمام محدودیت‌های حالت سازگاری (ویژگی‌ها و محدودیت‌ها) برداشته می‌شود.

برای توضیح دقیق و نحوه‌ی استفاده در حالت سازگاری WebGPU، به توضیح‌دهنده و بخش بعدی مراجعه کنید. به شماره‌ی ۴۱۸۰۲۵۷۲۱ مراجعه کنید.

نسخه آزمایشی Origin برای حالت سازگاری با WebGPU

WebGPU یک API قدرتمند است که برای گرافیک مدرن طراحی شده و با فناوری‌هایی مانند Vulkan، Metal و Direct3D 12 هماهنگ است. با این حال، تعداد قابل توجهی از دستگاه‌ها هنوز از این APIهای جدیدتر پشتیبانی نمی‌کنند. به عنوان مثال، در ویندوز، ۳۱٪ از کاربران کروم Direct3D 11.1 یا بالاتر ندارند. در اندروید، ۱۵٪ از کاربران اندروید Vulkan 1.1 را ندارند، از جمله ۱۰٪ که اصلاً Vulkan ندارند.

این موضوع برای توسعه‌دهندگانی که می‌خواهند دامنه‌ی کاربرد برنامه‌ی خود را به حداکثر برسانند، چالشی ایجاد می‌کند. آن‌ها اغلب مجبور می‌شوند پیاده‌سازی‌های متعددی (مثلاً WebGPU و WebGL) توسعه دهند، مخاطبان محدودتری را با WebGPU اصلی بپذیرند، یا به WebGL پایبند بمانند و از ویژگی‌های پیشرفته‌ی WebGPU مانند محاسبات GPU بی‌بهره بمانند.

نمایش بصری حالت سازگاری WebGPU.
حالت سازگاری WebGPU گسترش یافته است.

حالت سازگاری WebGPU با ارائه یک نسخه اختیاری و کمی محدود از API WebGPU، راه‌حلی ارائه می‌دهد. این حالت برای اجرای APIهای گرافیکی قدیمی‌تر مانند OpenGL ES 3.1 و Direct3D11 طراحی شده است و به طور قابل توجهی دامنه دسترسی برنامه شما را به دستگاه‌هایی که از APIهای گرافیکی مدرن و صریح مورد نیاز WebGPU اصلی پشتیبانی نمی‌کنند، گسترش می‌دهد.

از آنجا که حالت سازگاری زیرمجموعه‌ای از WebGPU است، برنامه‌های ساخته شده با آن، برنامه‌های معتبر "هسته" WebGPU نیز هستند. این بدان معناست که آنها حتی در مرورگرهایی که به طور خاص از حالت سازگاری پشتیبانی نمی‌کنند، به طور یکپارچه اجرا می‌شوند.

برای بسیاری از برنامه‌های ساده، فعال کردن حالت سازگاری به سادگی ارسال featureLevel: "compatibility" هنگام فراخوانی requestAdapter() است. برنامه‌های پیچیده‌تر ممکن است برای تطبیق با محدودیت‌های این حالت به تنظیمات جزئی نیاز داشته باشند. نمونه 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
}

فعال کردن ویژگی

به طور پیش‌فرض، حالت سازگاری WebGPU در کروم فعال نیست، اما می‌توان آن را در کروم ۱۳۹ با فعال کردن صریح این قابلیت آزمایش کرد. می‌توانید آن را به صورت محلی با فعال کردن پرچم "ویژگی‌های پلتفرم وب آزمایشی" در chrome://flags/#enable-experimental-web-platform-features فعال کنید.

برای فعال کردن آن برای همه بازدیدکنندگان برنامه شما، یک دوره آزمایشی origin در حال انجام است و قرار است در Chrome 145 (21 آوریل 2026) به پایان برسد. برای شرکت در این دوره آزمایشی، به پست « شروع با origin trials» مراجعه کنید.

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

یک آرگومان message به تابع WGPUQueueWorkDoneCallback اضافه شده است تا با سایر توابع فراخوانی که وضعیت را نیز دریافت می‌کنند، سازگارتر باشد. به webgpu-headers PR مراجعه کنید.

وقتی emdawnwebgpu با -sSHARED_MEMORY ‎ لینک می‌شود، فایل webgpu.cpp آن نیز با این پرچم کامپایل می‌شود. به Dawn CL 244075 مراجعه کنید.

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

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

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

کروم ۱۴۲

کروم ۱۴۱

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳