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

François Beaufort
François Beaufort

منتشرشده: ۲۶ مارس ۲۰۲۵

اجازه دادن به ایجاد چیدمان خط لوله با چیدمان گروه پیوند تهی

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

برای مثال، ممکن است بخواهید خط لوله‌ای بسازید که فقط از چیدمان‌های گروه پیوند ۰ و ۲ استفاده کند. می‌توانید چیدمان گروه پیوند ۱ را به داده‌های تکه‌تکه و چیدمان گروه پیوند ۲ را به داده‌های رأس اختصاص دهید، و سپس بدون سایه‌زن تکه‌تکه رندر کنید. مشکل ۳۷۷۸۳۶۵۲۴ را ببینید.

const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });

// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
  bindGroupLayouts: [bgl0, null, bgl2],
});

اجازه دادن به درگاه‌های نمایش برای فراتر رفتن از محدوده‌های هدف‌های پردازشی

الزامات اعتبارسنجی درگاه نمایش شل شده است تا درگاه‌های نمایش بتوانند از مرزهای هدف رندر فراتر بروند. این امر به‌ویژه برای رسم عناصر دوبعدی مانند میانای کاربری که ممکن است خارج از نمای دید فعلی گسترش یابد مفید است. مشکل ۳۹۰۱۶۲۹۲۹ را ببینید.

const passEncoder = myCommandEncoder.beginRenderPass({
  colorAttachments: [
    {
      view: myColorTexture.createView(),
      loadOp: "clear",
      storeOp: "store",
    },
  ],
});

// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
  /*x=*/ -8,
  /*y=*/ -8,
  /*width=*/ myColorTexture.width + 16,
  /*height=*/ myColorTexture.height + 16,
  /*minDepth=*/ 0,
  /*maxDepth=*/ 1,
);

// Draw geometry and complete the render pass as usual.

دسترسی آسان‌تر به حالت سازگاری آزمایشی در Android

پرچم chrome://flags/#enable-unsafe-webgpu به‌تنهایی اکنون همه قابلیت‌های موردنیاز برای حالت سازگاری WebGPU آزمایشی در Android را فعال می‌کند. با این کار، می‌توانید GPUAdapter را در حالت سازگاری با گزینه featureLevel: "compatibility" درخواست کنید و حتی در دستگاه‌هایی که از Vulkan پشتیبانی نمی‌کنند به زیرینه OpenGL ES دسترسی پیدا کنید. به مثال زیر و مشکل dawn:389876644 توجه کنید.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
صفحه گزارش WebGPU نشان می‌دهد که GPUAdapter در حالت سازگاری در دستگاه Android است.
اطلاعات آداپتور حالت سازگاری در webgpureport.org.

برداشتن محدودیت maxInterStageShaderComponents

همان‌طور که قبلاً اعلام شده بود، محدودیت maxInterStageShaderComponents به‌دلیل ترکیبی از عوامل برداشته شده است:

  • افزونگی با maxInterStageShaderVariables: این محدودیت ازقبل هدف مشابهی را دنبال می‌کند و مقدار داده‌های منتقل‌شده بین مراحل سایه‌زن را کنترل می‌کند.
  • اختلافات جزئی: اگرچه تفاوت‌های جزئی در نحوه محاسبه این دو محدودیت وجود دارد، اما این تفاوت‌ها جزئی هستند و می‌توان آن‌ها را به‌طور مؤثر در محدوده maxInterStageShaderVariables مدیریت کرد.
  • ساده‌سازی: برداشتن maxInterStageShaderComponents باعث ساده‌تر شدن میانای سایه‌زن می‌شود و پیچیدگی را برای توسعه‌دهندگان کاهش می‌دهد. به‌جای مدیریت دو حد مجزا با تفاوت‌های ظریف، می‌توانند روی maxInterStageShaderVariables که نام مناسب‌تر و جامع‌تری دارد تمرکز کنند.

قصد برداشتن و مسئله ۳۶۴۳۳۸۸۱۰ را ببینید.

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

دیگر نمی‌توان از نمونه‌برداری فیلتر برای نمونه‌برداری بافت عمق استفاده کرد. به‌عنوان یادآوری، بافت عمق فقط با نمونه‌برداری غیرفیلتر یا مقایسه‌ای قابل استفاده است. مشکل ۳۷۹۷۸۸۱۱۲ را ببینید.

ساختارهای WGPURequiredLimits و WGPUSupportedLimits به WGPULimits مسطح شده است. مشکل ۳۷۴۲۶۳۴۰۴ را ببینید.

نام ساختارهای زیر تغییر کرده است. مشکل ۴۲۲۴۰۷۹۳ را ببینید.

  • WGPUImageCopyBuffer اکنون WGPUTexelCopyBufferInfo است
  • WGPUImageCopyTexture اکنون WGPUTexelCopyTextureInfo است
  • WGPUTextureDataLayout اکنون WGPUTexelCopyBufferLayout است

اعضای subgroupMinSize و subgroupMaxSize به ساختار WGPUAdapterInfo اضافه شده‌اند. webgpu-headers PR را ببینید.

اکنون هنگام اجرای برنامه با متغیر محیطی DAWN_TRACE_FILE_BASE، ردیابی استفاده از Dawn API در Metal امکان‌پذیر است. این متغیر فایل ‎.gputrace را ذخیره می‌کند که بعداً می‌تواند در Metal Debugger در XCode بار شود. به اسناد اشکال‌زدایی Dawn مراجعه کنید.

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

ویژگی‌های جدید 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