سيتم تمكين دعم WebGPU في Chrome

أعلنت Google عن تضمين الدعم الافتراضي لواجهة برمجة تطبيقات رسومات WebGPU وWGSL (لغة تظليل WebGPU) في Chrome 113، والذي من المقرر إصداره في 2 مايو. يوفر WebGPU واجهة برمجة مشابهة لـ Vulkan وMetal وDirect3D 12 لتنفيذ العمليات من جانب وحدة معالجة الرسومات مثل العرض والحوسبة، كما يسمح باستخدام لغة التظليل لكتابة البرامج التي تعمل على جانب وحدة معالجة الرسومات. سيتم تمكين تنفيذ WebGPU في البداية فقط على إصدارات ChromeOS وmacOS وWindows. بالنسبة لنظامي التشغيل Linux وAndroid، سيتم تفعيل دعم WebGPU في وقت لاحق.

بالإضافة إلى Chrome، تم اختبار الدعم التجريبي لـ WebGPU منذ أبريل 2020 في Firefox ومنذ نوفمبر 2021 في Safari. لتمكين WebGPU في Firefox، يجب عليك تعيين علامتي dom.webgpu.enabled وgfx.webgpu.force-enabled في about:config. لا توجد خطط حتى الآن لتمكين WebGPU افتراضيًا في Firefox وSafari. تتوفر تطبيقات WebGPU المطورة لمتصفحي Firefox وChrome في شكل مكتبات منفصلة - Dawn (C++) وwgpu (Rust)، والتي يمكنك استخدامها لدمج دعم WebGPU في تطبيقاتك. يجري العمل أيضًا لإضافة دعم WebGPU إلى مكتبات JavaScript الشائعة التي تستخدم WebGL في الأصل. على سبيل المثال، تم بالفعل الإعلان عن الدعم الكامل لـ WebGPU في Babylon.js، والدعم الجزئي في Three.js، وPlayCanvas، وTensorFlow.js.

من الناحية النظرية، يختلف WebGPU عن WebGL بنفس الطريقة التي تختلف بها واجهة برمجة تطبيقات الرسومات Vulkan عن OpenGL، لكن WebGPU لا يعتمد على واجهة برمجة تطبيقات رسومات محددة، ولكنه طبقة عالمية تستخدم نفس العناصر الأولية ذات المستوى المنخفض الموجودة في Vulkan وMetal و Direct3D. يوفر WebGPU لتطبيقات JavaScript تحكمًا منخفض المستوى في التنظيم ومعالجة ونقل الأوامر إلى وحدة معالجة الرسومات وإدارة الموارد المرتبطة والذاكرة والمخازن المؤقتة وكائنات النسيج وتظليل الرسومات المجمعة. يتيح لك هذا الأسلوب تحقيق أداء أعلى لتطبيقات الرسومات عن طريق تقليل التكاليف العامة وزيادة كفاءة العمل مع وحدة معالجة الرسومات.

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

الملامح الرئيسية لWebGPU:

  • إدارة منفصلة للموارد والأعمال التحضيرية ونقل الأوامر إلى وحدة معالجة الرسومات (في WebGL كان كائن واحد مسؤولاً عن كل شيء في وقت واحد). يتم توفير ثلاثة سياقات منفصلة: GPUDevice لإنشاء الموارد مثل القوام والمخازن المؤقتة؛ GPUCommandEncoder لتشفير الأوامر الفردية، بما في ذلك مراحل العرض والحساب؛ سيتم وضع GPUCommandBuffer في قائمة الانتظار للتنفيذ على وحدة معالجة الرسومات. يمكن عرض النتيجة في منطقة مرتبطة بواحد أو أكثر من عناصر اللوحة، أو معالجتها بدون إخراج (على سبيل المثال، عند تشغيل مهام الحوسبة). يؤدي فصل المراحل إلى تسهيل فصل عمليات إنشاء الموارد وإعدادها إلى معالجات مختلفة يمكن تشغيلها على سلاسل عمليات مختلفة.
  • نهج مختلف لمعالجة الحالات. يقدم WebGPU كائنين - GPURenderPipeline وGPUComputePipeline، اللذين يسمحان لك بدمج الحالات المختلفة المحددة مسبقًا بواسطة المطور، مما يسمح للمتصفح بعدم إضاعة الموارد في أعمال إضافية، مثل إعادة ترجمة التظليل. تتضمن الحالات المدعومة ما يلي: التظليل، والمخزن المؤقت الرأسي وتخطيطات السمات، وتخطيطات المجموعة اللاصقة، والمزج، والعمق والأنماط، وتنسيقات إخراج ما بعد العرض.
  • نموذج ربط يشبه إلى حد كبير ميزات تجميع الموارد في Vulkan. لتجميع الموارد معًا، يوفر WebGPU كائن GPUBindGroup، والذي يمكن ربطه بكائنات أخرى مماثلة لاستخدامه في التظليل أثناء كتابة الأوامر. يتيح إنشاء مثل هذه المجموعات للسائق تنفيذ الإجراءات التحضيرية اللازمة مسبقًا، ويسمح للمتصفح بتغيير روابط الموارد بين مكالمات السحب بشكل أسرع بكثير. يمكن تحديد تخطيط روابط الموارد مسبقًا باستخدام كائن GPUBindGroupLayout.

المصدر: opennet.ru

إضافة تعليق