تمت إضافة دعم WebGPU إلى إصدارات Firefox الليلية

В ليل يبني فايرفوكس ظهر دعم المواصفات WebGPU، والتي توفر واجهة برمجة لمعالجة الرسومات ثلاثية الأبعاد والحوسبة من جانب وحدة معالجة الرسومات، وهي مشابهة من الناحية المفاهيمية لواجهة برمجة التطبيقات (API). VULKAN, معدن и Direct3D 12. يتم تطوير المواصفات بواسطة Mozilla وGoogle وApple وMicrosoft وأعضاء المجتمع في فريق العمل، التي أنشأتها منظمة W3C.

الهدف الرئيسي لـ WebGPU هو توفير واجهة برمجة آمنة وسهلة الاستخدام ومحمولة وعالية الأداء لمنصة الويب للاستفادة من تقنيات وإمكانيات الرسومات ثلاثية الأبعاد التي توفرها واجهات برمجة تطبيقات رسومات النظام الحديثة، مثل Direct3D 3 على Windows وMetal على نظام التشغيل macOS، وVulkan على نظام التشغيل Linux. من الناحية النظرية، يختلف WebGPU عن WebGL بنفس الطريقة التي يختلف بها Vulkan عن OpenGL، وفي الوقت نفسه لا يعتمد على واجهة برمجة تطبيقات رسومية محددة، ولكنه طبقة عالمية تستخدم عمومًا نفس العناصر الأولية ذات المستوى المنخفض الموجودة في Vulkan، المعادن وDirect12D.

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

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

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

الفرق الثاني بين WebGPU وWebGL هو أسلوب مختلف في التعامل مع الحالات. يقدم WebGPU كائنين - GPURenderPipeline وGPUComputePipeline، اللذين يسمحان لك بدمج الحالات المختلفة المحددة مسبقًا بواسطة المطور، مما يسمح للمتصفح بعدم إضاعة الموارد في أعمال إضافية، مثل إعادة ترجمة التظليل. تتضمن الحالات المدعومة ما يلي: التظليل، والمخزن المؤقت الرأسي وتخطيطات السمات، وتخطيطات المجموعة اللاصقة، والمزج، والعمق والأنماط، وتنسيقات إخراج ما بعد العرض.

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

تمت إضافة دعم WebGPU إلى إصدارات Firefox الليلية

في Firefox، لتمكين WebGPU في about:config، يوجد إعداد "dom.webgpu.enabled". يتطلب عرض CanvasContext أيضًا تمكين التركيب WebRender (“gfx.webrender.all” في about:config)، مكتوب بلغة Rust ويقوم بالاستعانة بمصادر خارجية لعرض محتوى الصفحة على وحدة معالجة الرسومات. يعتمد تنفيذ WebGPU على كود المشروع
com.wgpu، مكتوب بلغة Rust وقادر على العمل أعلى واجهات برمجة التطبيقات DX12 وVulkan وMetal على Linux وAndroid وWindows وmacOS (يوجد دعم DX11 وOpenGL ES 3.0 أيضًا قيد التطوير). بالتوازي، تعمل Google على تطوير تطبيق آخر، وهو متوفر في فرع الكناري يتم تمكين Chromium باستخدام علامة "chrome://flags/#enable-unsafe-webgpu"، ولكنه يعمل حتى الآن فقط على نظامي التشغيل macOS وWindows.

المصدر: opennet.ru

إضافة تعليق