موزیلا نے Firefox میں WebGPU API اور WGSL (WebGPU شیڈنگ لینگویج) کے لیے تعاون کو فعال کرنے کا فیصلہ کیا ہے۔ پلیٹ فارم کے لیے Windows WebGPU سپورٹ کو Firefox 141 میں بطور ڈیفالٹ فعال کیا جائے گا، جو 22 جولائی کو شیڈول ہے۔ Linux и macOS، اور پلیٹ فارم کے ورژن میں کچھ وقت کے بعد AndroidWebGPU کو دستی طور پر فعال کرنے کے لیے، آپ about:config صفحہ پر "dom.webgpu.enabled" اور "gfx.webrender.all" پیرامیٹرز استعمال کر سکتے ہیں۔
کروم میں، مئی 113 میں ریلیز ہونے والے ورژن 2023 میں WebGPU سپورٹ کو بطور ڈیفالٹ پیش کیا گیا تھا۔ سفاری میں، WebGPU سپورٹ کو اس موسم خزاں میں بطور ڈیفالٹ فعال کرنے کا منصوبہ بنایا گیا ہے (نومبر 2021 سے تجرباتی تعاون دستیاب ہے)۔ Firefox میں، تجرباتی WebGPU سپورٹ 2020 سے موجود ہے، لیکن صرف Firefox کی رات کے وقت کی تعمیر میں بطور ڈیفالٹ فعال کیا گیا تھا۔ Firefox کا WebGPU نفاذ WGPU پروجیکٹ کوڈ پر مبنی ہے، جو Rust میں لکھا گیا ہے اور Direct3D 12، Vulkan، OpenGL، اور Metal graphics APIs کے اوپر چلنے کے قابل ہے۔
WebGPU Vulkan، Metal، اور Direct3D 12 کو GPU سائیڈ پر آپریشن کرنے کے لیے اسی طرح کا API فراہم کرتا ہے۔ 3D گرافکس کے علاوہ، WebGPU GPU کی طرف حسابات کو آف لوڈ کرنے اور شیڈروں کو انجام دینے سے متعلق صلاحیتوں کا بھی احاطہ کرتا ہے۔ تصوراتی طور پر، WebGPU پرانی WebGL تفصیلات سے بالکل اسی طرح مختلف ہے جس طرح Vulkan گرافکس API OpenGL سے مختلف ہے۔ ایک ہی وقت میں، WebGPU کسی مخصوص گرافکس API پر مبنی نہیں ہے، بلکہ یہ ایک عالمگیر پرت ہے جو وہی نچلے درجے کے قدیم عناصر کا استعمال کرتی ہے جو Vulkan، Metal، اور Direct3D میں دستیاب ہیں۔
WebGPU JavaScript ایپلیکیشنز کو تنظیم، پروسیسنگ، اور GPU کو کمانڈز کی ترسیل کو کنٹرول کرنے، اور متعلقہ وسائل، میموری، بفرز، ٹیکسچر آبجیکٹ، اور مرتب شدہ گرافکس شیڈرز کو منظم کرنے کے قابل بناتا ہے۔ یہ نقطہ نظر اوور ہیڈ کو کم کرکے اور GPU کے ساتھ کام کرنے کی کارکردگی کو بڑھا کر گرافکس ایپلی کیشنز کی اعلی کارکردگی کو قابل بناتا ہے۔
WebGPU کے ساتھ، آپ پلیٹ فارم-اگنوسٹک، پیچیدہ 3D پروجیکٹس بنا سکتے ہیں جو انجام دیتے ہیں اور ساتھ ہی اسٹینڈ اسٹون پروگرام جو براہ راست Vulkan، Metal، یا Direct3D استعمال کرتے ہیں۔ WebGPU مقامی گرافکس پروگراموں کو ایک فارم میں پورٹ کرنے کے لیے اضافی صلاحیتیں بھی فراہم کرتا ہے جو کہ WebAssembly کی تالیف کی بدولت براؤزر میں چل سکتا ہے۔
WebGPU کی اہم خصوصیات اور WebGL سے فرق:
- وسائل کا الگ انتظام، تیاری کا کام اور GPU کو کمانڈز کی ترسیل (WebGL میں ایک ہی چیز ہر چیز کے لیے بیک وقت ذمہ دار تھی)۔ تین الگ الگ سیاق و سباق فراہم کیے گئے ہیں: ٹیکسچر اور بفر جیسے وسائل بنانے کے لیے GPUDevice؛ GPUCommandEncoder انفرادی کمانڈز کو انکوڈنگ کرنے کے لیے، بشمول رینڈرنگ اور کمپیوٹیشن کے مراحل؛ GPUCommandBuffer کو GPU پر عمل درآمد کے لیے قطار میں کھڑا کرنا ہے۔ نتیجہ ایک یا زیادہ کینوس عناصر کے ساتھ منسلک علاقے میں پیش کیا جا سکتا ہے، یا آؤٹ پٹ کے بغیر پروسیس کیا جا سکتا ہے (مثال کے طور پر، کمپیوٹ ٹاسکس چلاتے وقت)۔ مراحل کو الگ کرنے سے وسائل کی تخلیق اور تیاری کے کاموں کو مختلف ہینڈلرز میں الگ کرنا آسان ہو جاتا ہے جو مختلف تھریڈز پر چل سکتے ہیں۔
- پروسیسنگ ریاستوں کے لئے ایک مختلف نقطہ نظر. WebGPU دو اشیاء پیش کرتا ہے - GPURenderPipeline اور GPUComputePipeline، جو آپ کو ڈویلپر کے ذریعہ پہلے سے طے شدہ مختلف ریاستوں کو یکجا کرنے کی اجازت دیتا ہے، جو براؤزر کو اضافی کام پر وسائل ضائع کرنے کی اجازت دیتا ہے، جیسے کہ شیڈرز کو دوبارہ مرتب کرنا۔ معاون ریاستوں میں شامل ہیں: شیڈرز، ورٹیکس بفر اور انتساب لے آؤٹ، چسپاں گروپ لے آؤٹ، بلینڈنگ، گہرائی اور پیٹرن، اور پوسٹ رینڈر آؤٹ پٹ فارمیٹس۔
- Vulkan کے وسائل کی گروپ بندی کی خصوصیات کی طرح ایک پابند ماڈل۔ وسائل کو ایک ساتھ گروپ کرنے کے لیے، WebGPU ایک GPUBindGroup آبجیکٹ فراہم کرتا ہے، جو کمانڈز لکھتے وقت شیڈرز میں استعمال کے لیے اسی طرح کی دیگر اشیاء کے ساتھ منسلک کیا جا سکتا ہے۔ اس طرح کے گروپس بنانے سے ڈرائیور کو پہلے سے ضروری تیاری کی کارروائیاں کرنے کی اجازت ملتی ہے، اور براؤزر کو قرعہ اندازی کالوں کے درمیان وسائل کی پابندیوں کو بہت تیزی سے تبدیل کرنے کی اجازت دیتا ہے۔ ریسورس بائنڈنگز کی ترتیب کو GPUBindGroupLayout آبجیکٹ کا استعمال کرتے ہوئے پہلے سے طے کیا جا سکتا ہے۔
ماخذ: opennet.ru
