В
WebGPU کا کلیدی ہدف ویب پلیٹ فارم کے لیے ایک محفوظ، صارف دوست، پورٹیبل، اور اعلیٰ کارکردگی کا پروگرامنگ انٹرفیس فراہم کرنا ہے تاکہ جدید سسٹم گرافکس API کے ذریعے فراہم کردہ 3D گرافکس ٹیکنالوجیز اور صلاحیتوں کا فائدہ اٹھایا جا سکے، جیسے کہ Windows، Metal پر Direct3D 12۔ میکوس پر، اور لینکس پر ولکن۔ تصوراتی طور پر، WebGPU WebGL سے بالکل اسی طرح مختلف ہے جس طرح Vulkan OpenGL سے مختلف ہے، اور ساتھ ہی یہ کسی مخصوص گرافکس API پر مبنی نہیں ہے، بلکہ یہ ایک عالمگیر پرت ہے جو عام طور پر وولکان میں پائے جانے والے اسی نچلے درجے کی قدیم چیزوں کو استعمال کرتی ہے۔ میٹل اور ڈائریکٹ 3D۔
WebGPU جاوا اسکرپٹ ایپلی کیشنز کو تنظیم، پروسیسنگ، اور GPU کو کمانڈز کی منتقلی، منسلک وسائل، میموری، بفرز، ٹیکسچر آبجیکٹ، اور مرتب شدہ گرافکس شیڈرز کے انتظام پر نچلے درجے کے کنٹرول کے ساتھ فراہم کرتا ہے۔ یہ نقطہ نظر آپ کو اوور ہیڈ لاگت کو کم کرکے اور GPU کے ساتھ کام کرنے کی کارکردگی کو بڑھا کر گرافکس ایپلی کیشنز کے لیے اعلیٰ کارکردگی حاصل کرنے کی اجازت دیتا ہے۔
WebGPU ویب کے لیے مکمل پیچیدہ 3D پروجیکٹس بنانا ممکن بناتا ہے جو اسٹینڈ اسٹون پروگراموں سے بدتر کام نہیں کرتے جو براہ راست Vulkan، Metal یا Direct3D تک رسائی رکھتے ہیں، لیکن مخصوص پلیٹ فارمز سے منسلک نہیں ہیں۔ WebGPU اضافی صلاحیتیں بھی فراہم کرتا ہے جب مقامی گرافکس پروگراموں کو WebAssembly ٹیکنالوجی کے استعمال کے ذریعے ویب فعال شکل میں پورٹ کرتا ہے۔ 3D گرافکس کے علاوہ، WebGPU GPU میں حسابات کو آف لوڈ کرنے اور شیڈر کی ترقی کو سپورٹ کرنے سے متعلق صلاحیتوں کا بھی احاطہ کرتا ہے۔ شیڈرز
WebGPU وسائل کے علیحدہ انتظام، تیاری کے کام، اور GPU کو کمانڈز کی منتقلی کا استعمال کرتا ہے (WebGL میں، ایک ہی چیز ہر چیز کے لیے ایک ساتھ ذمہ دار تھی)۔ تین الگ الگ سیاق و سباق فراہم کیے گئے ہیں:
ٹیکسچر اور بفر جیسے وسائل بنانے کے لیے GPU ڈیوائس؛ GPUCommandEncoder انفرادی کمانڈز کو انکوڈنگ کرنے کے لیے، بشمول رینڈرنگ اور کمپیوٹیشن کے مراحل؛ GPUCommandBuffer کو GPU پر عمل درآمد کے لیے قطار میں کھڑا کرنا ہے۔ نتیجہ ایک یا زیادہ کینوس عناصر کے ساتھ منسلک علاقے میں پیش کیا جا سکتا ہے، یا آؤٹ پٹ کے بغیر پروسیس کیا جا سکتا ہے (مثال کے طور پر، کمپیوٹ ٹاسکس چلاتے وقت)۔ مراحل کو الگ کرنے سے وسائل کی تخلیق اور تیاری کے کاموں کو مختلف ہینڈلرز میں الگ کرنا آسان ہو جاتا ہے جو مختلف تھریڈز پر چل سکتے ہیں۔
WebGPU اور WebGL کے درمیان دوسرا فرق ریاستوں کو سنبھالنے کا ایک مختلف طریقہ ہے۔ WebGPU دو اشیاء پیش کرتا ہے - GPURenderPipeline اور GPUComputePipeline، جو آپ کو ڈویلپر کے ذریعہ پہلے سے طے شدہ مختلف ریاستوں کو یکجا کرنے کی اجازت دیتا ہے، جو براؤزر کو اضافی کام پر وسائل ضائع کرنے کی اجازت دیتا ہے، جیسے کہ شیڈرز کو دوبارہ مرتب کرنا۔ معاون ریاستوں میں شامل ہیں: شیڈرز، ورٹیکس بفر اور انتساب لے آؤٹ، چسپاں گروپ لے آؤٹ، بلینڈنگ، گہرائی اور پیٹرن، اور پوسٹ رینڈر آؤٹ پٹ فارمیٹس۔
WebGPU کی تیسری خصوصیت کو بائنڈنگ ماڈل کہا جاتا ہے، بڑے پیمانے پر
ولکن میں موجود ریسورس گروپنگ ٹولز کی یاد تازہ کرتا ہے۔
وسائل کو ایک ساتھ گروپ کرنے کے لیے، WebGPU ایک GPUBindGroup آبجیکٹ فراہم کرتا ہے، جو کمانڈز لکھتے وقت شیڈرز میں استعمال کے لیے اسی طرح کی دیگر اشیاء کے ساتھ منسلک کیا جا سکتا ہے۔ اس طرح کے گروپس بنانے سے ڈرائیور کو پہلے سے ضروری تیاری کی کارروائیاں کرنے کی اجازت ملتی ہے، اور براؤزر کو قرعہ اندازی کالوں کے درمیان وسائل کی پابندیوں کو بہت تیزی سے تبدیل کرنے کی اجازت دیتا ہے۔ ریسورس بائنڈنگز کی ترتیب کو GPUBindGroupLayout آبجیکٹ کا استعمال کرتے ہوئے پہلے سے طے کیا جا سکتا ہے۔
Firefox میں WebGPU کو about:config میں فعال کرنے کے لیے، "dom.webgpu.enabled" کی ترتیب موجود ہے۔ CanvasContext رینڈرنگ کے لیے بھی کمپوزٹنگ کو فعال کرنے کی ضرورت ہوتی ہے۔
ماخذ: opennet.ru