الميزات الجديدة في WebGPU (إصدار Chrome 135)

François Beaufort
François Beaufort

تاريخ النشر: 26 مارس 2025

السماح بإنشاء تنسيق مسار مع تنسيق مجموعة ربط فارغ

في السابق، كان إنشاء تنسيق مجموعة ربط فارغة يتطلّب إضافة مجموعة ربط بدون أي روابط، وهو أمر غير مريح. لم يعُد ذلك ضروريًا لأنّه يُسمح الآن بتجاهل تخطيطات مجموعات الربط الفارغة عند إنشاء تخطيط مسار. من المفترض أن يسهّل ذلك عملية التطوير.

على سبيل المثال، قد تحتاج إلى إنشاء مسار يستخدم تنسيقات المجموعة المرتبطة 0 و2 فقط. يمكنك تعيين تنسيق المجموعة 1 للربط لبيانات الأجزاء وتنسيق المجموعة 2 للربط لبيانات الرؤوس، ثم العرض بدون برنامج تظليل الأجزاء. يمكنك الاطّلاع على المشكلة رقم 377836524.

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

السماح بتوسيع منافذ العرض إلى ما بعد حدود أهداف العرض

تم تخفيف متطلبات التحقّق من صحة إطار العرض للسماح لإطارات العرض بتجاوز حدود هدف العرض. ويكون ذلك مفيدًا بشكل خاص لرسم عناصر ثنائية الأبعاد، مثل واجهة المستخدم التي قد تمتد خارج إطار العرض الحالي. يمكنك الاطّلاع على المشكلة 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.

الوصول بسهولة أكبر إلى وضع التوافق التجريبي على Android

يؤدي تفعيل العلامة chrome://flags/#enable-unsafe-webgpu وحدها الآن إلى تفعيل جميع الإمكانات المطلوبة لوضع التوافق التجريبي مع WebGPU على Android. باستخدام ذلك، يمكنك طلب GPUAdapter في وضع التوافق مع الخيار featureLevel: "compatibility"، ويمكنك حتى الوصول إلى الخلفية البرمجية OpenGL ES على الأجهزة التي لا تتوافق مع Vulkan. راجِع المثال التالي والمشكلة 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 الأكثر شمولاً والأكثر ملاءمةً.

يمكنك الاطّلاع على نية الإزالة والمشكلة 364338810.

تعديلات الفجر

لم يعُد من الممكن استخدام أداة أخذ العينات التي تتضمّن فلترة لأخذ عينات من نسيج العمق. للتذكير، لا يمكن استخدام نسيج العمق إلا مع أداة أخذ عينات غير مصفّية أو أداة أخذ عينات مقارنة. يمكنك الاطّلاع على المشكلة 379788112.

تم تسوية البنيتين WGPURequiredLimits وWGPUSupportedLimits في WGPULimits. راجِع المشكلة 374263404.

تمت إعادة تسمية البُنى التالية. يمكنك الاطّلاع على المشكلة 42240793.

  • WGPUImageCopyBuffer أصبحت الآن WGPUTexelCopyBufferInfo.
  • WGPUImageCopyTexture أصبحت الآن WGPUTexelCopyTextureInfo.
  • WGPUTextureDataLayout أصبحت الآن WGPUTexelCopyBufferLayout.

تمت إضافة العضوين subgroupMinSize وsubgroupMaxSize إلى بنية WGPUAdapterInfo. يمكنك الاطّلاع على طلب سحب عناوين WebGPU.

أصبح من الممكن الآن تتبُّع استخدام واجهة برمجة التطبيقات Dawn في Metal عند تشغيل برنامجك باستخدام متغيّر البيئة DAWN_TRACE_FILE_BASE الذي يحفظ ملف ‎ .gputrace يمكن تحميله لاحقًا في أداة تصحيح أخطاء Metal في Xcode. يمكنك الاطّلاع على مستندات تصحيح أخطاء Dawn.

هذا يشمل بعض النقاط الرئيسية فقط. اطّلِع على قائمة عمليات الدمج الشاملة.

الميزات الجديدة في WebGPU

قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU

‫Chrome 155-156

‫Chrome 153-154

‫Chrome 151-152

‫Chrome 149-150

Chrome 147-148

‫Chrome 146

‫Chrome 145

‫Chrome 144

Chrome 143

‫Chrome 142

‫Chrome 141

Chrome 140

‫Chrome 139

‫Chrome 138

‫Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

‫Chrome 132

Chrome 131

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