الحصول على المنظومة المتكاملة لأداة WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

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

ومع ذلك، تتجاوز WebGPU حدود واجهة برمجة تطبيقات JavaScript، فهي عنصر أساسي يشبه WebAssembly، ولها تأثيرات تتجاوز الويب بكثير بسبب المنظومة المتكاملة المزدهرة. يدرك فريق Chrome أنّ WebGPU أكثر من مجرد تكنولوجيا ويب، بل هو منظومة متكاملة مزدهرة تركّز على تكنولوجيا أساسية.

استكشاف المنظومة المتكاملة الحالية

تبدأ الرحلة بـ مواصفات JavaScript، وهي جهد تعاوني يشارك فيه العديد من المؤسسات، مثل Apple وGoogle وIntel وMozilla وMicrosoft. نفَّذت جميع متصفّحات الويب الرئيسية WebGPU أو هي في مرحلة تنفيذه.

في الوقت نفسه، أدركت Mozilla وGoogle إمكانات WebGPU في التطبيقات الخاصة بالنظام الأساسي، وفصلتا عمليات تنفيذ WebGPU عن المتصفّحات، ما سمح باستخدامها بشكل مستقل.

بالنسبة إلى Chrome، تم تنفيذ ذلك من خلال Dawn، وهي مكتبة C/C++ تحوّل طلبات WebGPU إلى أوامر برنامج تشغيل وحدة معالجة الرسومات. يُمكِّن Dawn تطبيقات C وC++ من استخدام WebGPU بشكل طبيعي، مما يوفر تجريدًا لوحدة معالجة الرسومات محمولة ومريحة باستخدام خبرة مورِّد المتصفح.

كما هو موضّح في مقالة المدونة WebGPU: واجهة برمجة تطبيقات الرسومات على جميع المنصات في المستقبل، من السهل نقل تطبيق WebGPU المخصّص للمنصة إلى الويب. تتيح أداة Emscripten، وهي سلسلة أدوات C++ WebAssembly، استخدام WebGPU، ولا تتطلّب سوى تعديلات طفيفة لنقلها إلى الويب.

يمكنك أيضًا تشغيل رمز JavaScript WebGPU خارج المتصفح باستخدام وقت تشغيل JavaScript Node.js لأنّه يتضمّن وحدة WebGPU تستند إلى Dawn. وهو يتيح لك تشغيل التعليمة البرمجية بدون تعديلات من جهة الخادم أو في سياقات أخرى خاصة بالنظام الأساسي.

هناك منظومة متكاملة مشابهة لـ Rust مع wgpu، وهو تطبيق في Firefox لاستخدام WebGPU. يمكن دمج Wgpu مباشرةً في تطبيقات Rust، والتي يمكن نقلها بعد ذلك إلى الويب باستخدام web-sys. بالإضافة إلى ذلك، يتوافق وقت تشغيل JavaScript في Deno مع WebGPU من خلال wgpu. يمكنك الاطّلاع على مشاركة المدونة wgpu Alliance with Deno.

يؤدّي ذلك إلى إنشاء منظومة متكاملة موازية بين Rust وC++ كما هو موضّح في الرسم البياني التالي.

رسم بياني للمنظومة المتكاملة لـ WebGPU في عام 2023
منظومة WebGPU المتكاملة في عام 2023

آفاق جديدة

تتجاوز منظومة WebGPU المتكاملة نطاق JavaScript وC++ وRust.

قد تتضمّن لغة البرمجة المفضّلة لديك بالفعل عمليات ربط لواجهة برمجة التطبيقات WebGPU، لأنّ المهندسين الذين يعملون على عمليات تنفيذ WebGPU يطوّرون أيضًا عنوان C شائعًا لواجهة برمجة التطبيقات WebGPU. ويمكن استخدام هذا الإجراء لاستهداف Dawn وwgpu وغيرها، ما يسهّل إنشاء عمليات ربط للغات باستخدام واجهة برمجة التطبيقات لـ C.

ينظر فريق Chrome أيضًا في استخدام Dawn كخلفية العرض التلقائية لجميع عناصر واجهة مستخدم المتصفّح، بما في ذلك القوائم وأشرطة الأدوات وأدوات المطوّرين ومحتوى الويب. سيؤدي ذلك إلى عدم الحاجة إلى عمليات عرض منفصلة لكل واجهة برمجة تطبيقات أصلية، ما يبسط عملية التطوير. هذه الميزة في المرحلة التجريبية على نظامَي التشغيل macOS وWindows باستخدام العلامة chrome://flags/#skia-graphite.