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

François Beaufort
François Beaufort

تاريخ النشر: 22 أكتوبر 2025

توسيع نطاق إمكانات توافق تنسيق النسيج

تتيح ميزة وحدة معالجة الرسومات الجديدة "texture-formats-tier1" للمطوّرين نقل المحتوى الحالي إلى الويب بدون الحاجة إلى إعادة كتابته ليتوافق مع إمكانات WebGPU الأقل. يتوافق مع تنسيقات الأنسجة الجديدة "r16unorm" و"r16snorm" و"rg16unorm" و"rg16snorm" و"rgba16unorm" و"rgba16snorm" مع إمكانية ربط العرض، والمزج، وأخذ عينات متعددة، وإمكانية الوصول إلى نسيج التخزين "read-only" أو "write-only". ويتيح أيضًا استخدام تنسيقات "r8snorm" و"rg8snorm" و"rgba8snorm" الحالية للنسيج مع إمكانات ربط العرض، والمزج، وأخذ عينات متعددة، والحل. يمكن أيضًا استخدام المزيد من تنسيقات النسيج مع إذن الوصول إلى نسيج التخزين "read-only" أو "write-only".

تتيح ميزة وحدة معالجة الرسومات الجديدة "texture-formats-tier2" إمكانية الوصول إلى نسيج التخزين بتنسيقات معيّنة، وهو أمر بالغ الأهمية لمشاريع مثل نقل Unreal Engine إلى الويب."read-write" يُرجى العِلم أنّ تفعيل "texture-formats-tier2" عند إنشاء الجهاز يؤدي تلقائيًا إلى تفعيل "texture-formats-tier1".

راجِع المقتطف التالي وإدخال chromestatus.

const adapter = await navigator.gpu.requestAdapter();

const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
  requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
  requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });

// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
  // Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
  // Use "read-only" or "write-only" storage texture access...
} else {
  // Fallback: Use another texture format...
}

نشكر فريق Intel على جهوده.

الفهرس الأساسي في WGSL

primitive_index هي قيمة WGSL مضمّنة تحدّد بشكل فريد العنصر الأساسي الحالي (مثل نقطة أو خط أو مثلث) الذي تتم معالجته بواسطة برنامج تظليل الأجزاء. تبدأ القيمة عند 0، وتزيد بمقدار 1 بعد معالجة كل عنصر أساسي، وتتم إعادة ضبطها إلى 0 بين كل مثيل يتم رسمه.

عندما تتوفّر ميزة "primitive-index" في GPUAdapter، اطلب GPUDevice باستخدام هذه الميزة للحصول على دعم فهرس الأشكال الأساسية في WGSL، وفعِّل هذا الامتداد بشكل صريح في رمز WGSL باستخدام enable primitive_index;. بعد التفعيل، استخدِم قيمة العدد الصحيح المضمّنة primitive_index في برنامج تظليل الأجزاء للوصول إلى البيانات لكل عنصر أساسي أو تنفيذ منطق يختلف لكل شكل هندسي مميز يتم عرضه، على سبيل المثال.

يوضّح مقتطف الرمز البرمجي التالي برنامج تظليل أجزاء يعرض العنصر الأساسي الثاني باللون الأحمر وجميع العناصر الأساسية الأخرى باللون الأزرق.

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
  throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
  requiredFeatures: ["primitive-index"],
});

const fragmentShaderModule = device.createShaderModule({ code: `
  enable primitive_index;

  @fragment
  fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
    if (i == 1) {
      return vec4f(1, 0, 0, 1);
    }
    return vec4f(0, 1, 0, 1);
  }`,
});
// Send the appropriate commands to the GPU...

يمكنك استكشاف المزيد من خلال الاطّلاع على نموذج اختيار العناصر الأساسية، والاطّلاع على إدخال chromestatus.

يتم تلوين مثلثات نموذج إبريق الشاي الثلاثي الأبعاد استنادًا إلى قيم الفهرس الأساسية.
نموذج Primitive Picking في وضع "فهارس العناصر الأساسية"

إشعارات الفجر

تم تغيير القيمة التلقائية لمتغيّر DAWN_BUILD_MONOLITHIC_LIBRARY CMake المستخدَم للتعامل مع نوع المكتبة المتكاملة التي سيتم إنشاؤها من OFF إلى STATIC، بحيث يتم إنشاء ملفات libwebgpu* تلقائيًا.

يتعامل Dawn الآن بشكل صحيح مع الإعداد التلقائي wgpu::PresentMode::Undefined عند ضبط wgpu::Surface. يمكنك الاطّلاع على المشكلة رقم 441410668.

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

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

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

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