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

François Beaufort
François Beaufort

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

Immediates

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

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

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

في برنامج التظليل WGSL، تتيح لك مساحة العنوان <immediate> تحديد البيانات الفورية التي يمكن تمريرها مباشرةً إلى أداة ترميز التمرير. استدعِ setImmediates() في JavaScript قبل استدعاء الرسم لتوفير هذه البيانات بدون ربط مجموعة. للتحقّق من التوافق، يمكنك رصد ميزة إضافة لغة WGSL immediate_address_space من خلال 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 التي تتيح للمطوّرين إنشاء مرفقات عرض مؤقتة، مثل مخازن العمق/الاستنسل أو الأهداف المتعددة العينات. وتبقى هذه المرفقات في ذاكرة التجانب السريعة على الشريحة بدون تخصيص ذاكرة وصول عشوائي للفيديو (VRAM) الرئيسية.

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

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

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

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

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

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

‫Chrome 149-150

Chrome 147-148

‫Chrome 146

Chrome 145

‫Chrome 144

Chrome 143

الإصدار 142 من Chrome

‫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