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

François Beaufort
François Beaufort

تاريخ النشر: 17 يونيو 2026

Immediates

تتيح لك القيم المباشرة، المعروفة أيضًا باسم الثوابت المباشرة أو ثوابت الجذر، تمرير كميات صغيرة من البيانات المتغيرة بشكل متكرر مباشرةً إلى برامج التظليل. تتجاوز هذه العملية عبء إنشاء مخازن مؤقتة لوحدة معالجة الرسومات وإدارة مجموعات الربط.

يؤدي تعديل روابط المخزن المؤقت الموحّد للبيانات التي تتغير في كل طلب رسم، مثل معرّف عنصر فريد أو مصفوفة تحويل ثلاثية الأبعاد لمئات العناصر، إلى زيادة الحمل على وحدة المعالجة المركزية. يمكنك إدخال القيم الأولية مباشرةً في أداة ترميز البطاقة لتجنُّب كتابة البيانات في الذاكرة وإدارة عمليات البحث في وحدة معالجة الرسومات.

توفّر المتغيرات المباشرة مسارًا سريعًا للمتغيرات الصغيرة والديناميكية للغاية. استخدِم المخازن المؤقتة الموحّدة أو مخازن التخزين لمجموعات كبيرة من البيانات أو هياكل الإضاءة المعقّدة أو المصفوفات الضخمة.

في برنامج التظليل WGSL، تتيح لك مساحة العناوين <immediate> تحديد البيانات الفورية التي يمكن تمريرها مباشرةً إلى أداة ترميز التمرير. استخدِم الدالة setImmediates() في JavaScript قبل طلب رسم لتوفير هذه البيانات بدون ربط مجموعة. للتحقّق من التوافق، يمكنك رصد ميزة إضافة لغة immediate_address_space WGSL من خلال navigator.gpu.wgslLanguageFeatures. اطّلِع على المثال التالي ونية الشحن.

if (!navigator.gpu.wgslLanguageFeatures.has('immediate_address_space')) {
   throw new Error(`WGSL immediate address space is not available`);
}

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

const module = device.createShaderModule({ code: `
  requires immediate_address_space;

  var<immediate> color: vec4f;

  @vertex fn vertexMain(@builtin(vertex_index) i : u32) -> @builtin(position) vec4f {
    const pos = array(vec2f(0, 1), vec2f(-1, -1), vec2f(1, -1));
    return vec4f(pos[i], 0, 1);
  }

  @fragment fn fragmentMain() -> @location(0) vec4f {
    return color;
  }`,
});

// Create render pass encoder (omitted)...

// By using layout: 'auto', WebGPU will automatically infer the `immediateSize`
// required by the pipeline layout from the WGSL module.
const pipeline = device.createRenderPipeline({
  layout: 'auto',
  vertex: { module },
  fragment: { module, targets: [{ format }] },
});
myRenderPassEncoder.setPipeline(pipeline);

// Send immediate data to the GPU, then issue a draw call
myRenderPassEncoder.setImmediates(/*rangeOffset=*/0, new Float32Array([255, 0, 0, 255]));
myRenderPassEncoder.draw(3);
myRenderPassEncoder.end();

للحصول على معلومات تفصيلية حول هذه الميزة، يمكنك الاطّلاع على WebGPUFundamentals Immediates.

نشكر فريق Microsoft على مساهماته.

التحقّق من صحة المرفقات المؤقتة بشكل أكثر صرامة

أضافت WebGPU TRANSIENT_ATTACHMENT مؤخرًا العلامة GPUTextureUsage التي تتيح للمطوّرين إنشاء مرفقات عرض مؤقتة، مثل مخازن العمق والاستنسل أو الأهداف المتعددة العينات. تبقى هذه المرفقات في ذاكرة التخزين المؤقت السريعة على الشريحة بدون تخصيص ذاكرة وصول عشوائي للفيديو الرئيسية.

تعمل التحديثات الأخيرة (#6248 و#6267) على تحسين قواعد التحقّق من الصحة لمنع إساءة استخدام مرفقات النسيج الفعّالة من حيث استخدام الذاكرة هذه:

  • بسبب القيود المفروضة على المنصّة، يجب أن تكون viewFormats مصفوفة فارغة عند إنشاء مواد عرض مؤقتة. لا حاجة إلى تنسيقات عرض بديلة لأنّ مواد العرض المؤقتة مخصّصة للعرض فقط.
  • لا يؤدي إنشاء عرض زخرفة إلى تضييق نطاق علامات الاستخدام. عند استدعاء createView() على مادة عرض مؤقتة، لا يمكن للعرض تغيير استخدامه.
  • لا يمكن استخدام المرفقات المؤقتة كـ resolveTarget داخل عملية عرض.

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

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

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

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

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