W3C نے ڈرافٹ WebGPU معیار کی نقاب کشائی کی۔

Консорциум W3C представил первые черновые варианты спецификаций WebGPU и WebGPU Shading Language (WGSL), определяющих API для выполнения операций на GPU, таких как рендеринг и вычисления, а также язык шейдров для написания программ, работающих на стороне GPU. концептуально схожий с API Vulkan, Metal и Direct3D 12. Спецификации подготовлены рабочей группой, в которую вошли инженеры из Mozilla, Google, Apple и Microsoft.

Концептуально WebGPU отличается от WebGL примерно так же, как графический API Vulkan отличается от OpenGL, но при этом не основывается на конкретном графическом API, а представляет собой универсальную прослойку, использующую те же низкоуровневые примитивы, что имеются в Vulkan, Metal и Direct3D. WebGPU предоставляет приложениям на JavaScript средства для низкоуровневого контроля за организацией, обработкой и передачей команд к GPU, управления связанными ресурсами, памятью, буферами, объектами текстур и скомпилированными графическими шейдерами. Подобный подход позволяет добиться более высокой производительности графических приложений за счёт снижения накладных расходов и повышения эффективности работы с GPU.

WebGPU даёт возможность создавать для Web сложные 3D-проекты, работающие не хуже, чем обособленные программы, напрямую обращающиеся с Vulkan, Metal или Direct3D, но не привязанные к конкретным платформам. WebGPU также предоставляет дополнительные возможности при портировании нативных графических программ в форму, способную работать на базе web-технологий, благодаря компиляции в WebAssembly. Кроме 3D-графики WebGPU охватывает и возможности, связанные с выносом вычислений на сторону GPU и выполнением шейдеров.

WebGPU کی اہم خصوصیات:

  • وسائل کا الگ انتظام، تیاری کا کام اور GPU کو کمانڈز کی ترسیل (WebGL میں ایک ہی چیز ہر چیز کے لیے بیک وقت ذمہ دار تھی)۔ تین الگ الگ سیاق و سباق فراہم کیے گئے ہیں: ٹیکسچر اور بفر جیسے وسائل بنانے کے لیے GPUDevice؛ GPUCommandEncoder انفرادی کمانڈز کو انکوڈنگ کرنے کے لیے، بشمول رینڈرنگ اور کمپیوٹیشن کے مراحل؛ GPUCommandBuffer کو GPU پر عمل درآمد کے لیے قطار میں کھڑا کرنا ہے۔ نتیجہ ایک یا زیادہ کینوس عناصر کے ساتھ منسلک علاقے میں پیش کیا جا سکتا ہے، یا آؤٹ پٹ کے بغیر پروسیس کیا جا سکتا ہے (مثال کے طور پر، کمپیوٹ ٹاسکس چلاتے وقت)۔ مراحل کو الگ کرنے سے وسائل کی تخلیق اور تیاری کے کاموں کو مختلف ہینڈلرز میں الگ کرنا آسان ہو جاتا ہے جو مختلف تھریڈز پر چل سکتے ہیں۔
  • پروسیسنگ ریاستوں کے لئے ایک مختلف نقطہ نظر. WebGPU دو اشیاء پیش کرتا ہے - GPURenderPipeline اور GPUComputePipeline، جو آپ کو ڈویلپر کے ذریعہ پہلے سے طے شدہ مختلف ریاستوں کو یکجا کرنے کی اجازت دیتا ہے، جو براؤزر کو اضافی کام پر وسائل ضائع کرنے کی اجازت دیتا ہے، جیسے کہ شیڈرز کو دوبارہ مرتب کرنا۔ معاون ریاستوں میں شامل ہیں: شیڈرز، ورٹیکس بفر اور انتساب لے آؤٹ، چسپاں گروپ لے آؤٹ، بلینڈنگ، گہرائی اور پیٹرن، اور پوسٹ رینڈر آؤٹ پٹ فارمیٹس۔
  • Vulkan کے وسائل کی گروپ بندی کی خصوصیات کی طرح ایک پابند ماڈل۔ وسائل کو ایک ساتھ گروپ کرنے کے لیے، WebGPU ایک GPUBindGroup آبجیکٹ فراہم کرتا ہے، جو کمانڈز لکھتے وقت شیڈرز میں استعمال کے لیے اسی طرح کی دیگر اشیاء کے ساتھ منسلک کیا جا سکتا ہے۔ اس طرح کے گروپس بنانے سے ڈرائیور کو پہلے سے ضروری تیاری کی کارروائیاں کرنے کی اجازت ملتی ہے، اور براؤزر کو قرعہ اندازی کالوں کے درمیان وسائل کی پابندیوں کو بہت تیزی سے تبدیل کرنے کی اجازت دیتا ہے۔ ریسورس بائنڈنگز کی ترتیب کو GPUBindGroupLayout آبجیکٹ کا استعمال کرتے ہوئے پہلے سے طے کیا جا سکتا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں