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

François Beaufort
François Beaufort

Published: Oct 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" الجديدة إمكانية الوصول إلى زخرفة التخزين "read-write" لتنسيقات معيّنة، وهو أمر بالغ الأهمية لمشاريع مثل نقل Unreal Engine إلى الويب. يُرجى العِلم أنّ تفعيل "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.

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

آخر الأخبار في Dawn

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

تتعامل Dawn الآن بشكلٍ سليم مع القيمة التلقائية wgpu::PresentMode::Undefined عند ضبط wgpu::Surface. راجِع المشكلة 441410668.

لا يغطي هذا القسم سوى بعض النقاط الرئيسية. يمكنك الاطّلاع على القائمة الشاملة لعمليات الإرسال.

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

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

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