الميزات الجديدة في 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 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