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

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

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

اجازه ایجاد طرح خط لوله با طرح گروه اتصال تهی

پیش از این، ایجاد یک طرح‌بندی گروه bind خالی مستلزم اضافه کردن یک گروه bind با صفر binding بود که ناخوشایند بود. این دیگر ضروری نیست زیرا طرح‌بندی‌های گروه bind تهی اکنون مجاز هستند و هنگام ایجاد یک طرح‌بندی pipeline نادیده گرفته می‌شوند. این امر باید توسعه را آسان‌تر کند.

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

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],
});

اجازه دهید نماها از مرزهای اهداف رندر فراتر روند

الزامات اعتبارسنجی نمای دید (viewport validation) تسهیل شده است تا نمای دید بتواند فراتر از مرزهای هدف رندر (render target) برود. این امر به ویژه برای ترسیم عناصر دوبعدی مانند رابط کاربری (UI) که ممکن است از نمای دید فعلی فراتر بروند، مفید است. به شماره 390162929 مراجعه کنید.

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.

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

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

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

حذف محدودیت maxInterStageShaderComponents

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

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

به قصد حذف و صدور ۳۶۴۳۳۸۱۰ مراجعه کنید.

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

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

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

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

  • WGPUImageCopyBuffer اکنون WGPUTexelCopyBufferInfo تبدیل شده است.
  • WGPUImageCopyTexture اکنون WGPUTexelCopyTextureInfo تبدیل شده است.
  • WGPUTextureDataLayout اکنون WGPUTexelCopyBufferLayout تبدیل شده است.

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

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

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

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

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

کروم ۱۴۲

کروم ۱۴۱

کروم ۱۴۰

کروم ۱۳۹

کروم ۱۳۸

کروم ۱۳۷

کروم ۱۳۶

کروم ۱۳۵

کروم ۱۳۴

کروم ۱۳۳

کروم ۱۳۲

کروم ۱۳۱

کروم ۱۳۰

کروم ۱۲۹

کروم ۱۲۸

کروم ۱۲۷

کروم ۱۲۶

کروم ۱۲۵

کروم ۱۲۴

کروم ۱۲۳

کروم ۱۲۲

کروم ۱۲۱

کروم ۱۲۰

کروم ۱۱۹

کروم ۱۱۸

کروم ۱۱۷

کروم ۱۱۶

کروم ۱۱۵

کروم ۱۱۴

کروم ۱۱۳