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

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

تاریخ انتشار: 30 جولای 2025

پشتیبانی از بافت سه بعدی برای فرمت های فشرده 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
}

با بررسی نمونه رندر حجم - بافت 3D WebGPU و مشاهده ورودی chromestatus ، اسکن های مغز سه بعدی را کاوش کنید.

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

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

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

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

برای توضیح دقیق و استفاده در حالت سازگاری WebGPU به توضیح دهنده و قسمت زیر مراجعه کنید. شماره 418025721 را ببینید.

آزمایش اولیه برای حالت سازگاری WebGPU

WebGPU یک API قدرتمند است که برای گرافیک های مدرن طراحی شده است و با فناوری هایی مانند Vulkan، Metal و Direct3D 12 هماهنگ است. با این حال، تعداد قابل توجهی از دستگاه ها هنوز از این API های جدیدتر پشتیبانی نمی کنند. به عنوان مثال، در ویندوز، 31٪ از کاربران Chrome Direct3D 11.1 یا بالاتر ندارند. در اندروید، 15٪ از کاربران اندروید Vulkan 1.1 ندارند، از جمله 10٪ که اصلا Vulkan ندارند.

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

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

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

از آنجایی که حالت سازگاری زیرمجموعه‌ای از 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
}

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

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

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

به روز رسانی سحر

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

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

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

چه چیزی در WebGPU جدید است

فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.

کروم 139

کروم 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