W3C يكشف عن مسودة معيار WebGPU

أصدرت W3C المسودات الأولى لمواصفات WebGPU وWebGPU Shading Language (WGSL)، والتي تحدد واجهات برمجة التطبيقات لتنفيذ عمليات GPU مثل العرض والحوسبة، بالإضافة إلى لغة تظليل لكتابة البرامج التي تعمل على GPU. يشبه من الناحية النظرية واجهات برمجة التطبيقات Vulkan وMetal وDirect3D 12. تم إعداد المواصفات من قبل مجموعة عمل ضمت مهندسين من Mozilla وGoogle وApple وMicrosoft.

من الناحية النظرية، يختلف WebGPU عن WebGL بنفس الطريقة التي تختلف بها واجهة برمجة تطبيقات الرسومات Vulkan عن OpenGL، ولكنها لا تعتمد على واجهة برمجة تطبيقات رسومية محددة، ولكنها طبقة عالمية تستخدم نفس العناصر الأولية ذات المستوى المنخفض الموجودة في 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

إضافة تعليق