کروم میں WebGPU سپورٹ کو فعال کر دیا جائے گا۔

گوگل نے کروم 113 میں WebGPU گرافکس API اور WGSL (WebGPU شیڈنگ لینگویج) کے لیے ڈیفالٹ سپورٹ کو شامل کرنے کا اعلان کیا ہے، جو 2 مئی کو ریلیز ہونے والی ہے۔ WebGPU ایک پروگرامنگ انٹرفیس فراہم کرتا ہے جیسا کہ Vulkan، Metal، اور Direct3D 12 GPU-سائیڈ آپریشنز جیسے کہ رینڈرنگ اور کمپیوٹنگ کو انجام دینے کے لیے، اور GPU سائیڈ پر چلنے والے پروگراموں کو لکھنے کے لیے شیڈر زبان کے استعمال کی بھی اجازت دیتا ہے۔ WebGPU کا نفاذ ابتدائی طور پر صرف ChromeOS، macOS، اور Windows کی تعمیرات پر فعال کیا جائے گا۔ لینکس اور اینڈرائیڈ کے لیے، ویب جی پی یو سپورٹ کو بعد کی تاریخ میں چالو کیا جائے گا۔

کروم کے علاوہ، اپریل 2020 سے Firefox میں اور نومبر 2021 سے سفاری میں WebGPU کے لیے تجرباتی تعاون کا تجربہ کیا گیا ہے۔ Firefox میں WebGPU کو فعال کرنے کے لیے، آپ کو dom.webgpu.enabled اور gfx.webgpu.force-enabled جھنڈوں کو about:config میں سیٹ کرنا چاہیے۔ Firefox اور Safari میں WebGPU کو بطور ڈیفالٹ فعال کرنے کا ابھی تک کوئی منصوبہ نہیں ہے۔ Firefox اور Chrome کے لیے تیار کردہ WebGPU نفاذات علیحدہ لائبریریوں - ڈان (C++) اور wgpu (Rust) کی شکل میں دستیاب ہیں، جنہیں آپ WebGPU سپورٹ کو اپنی ایپلی کیشنز میں ضم کرنے کے لیے استعمال کر سکتے ہیں۔ ویب جی پی یو سپورٹ کو مقبول JavaScript لائبریریوں میں شامل کرنے کے لیے بھی کام جاری ہے جو مقامی طور پر WebGL استعمال کرتی ہیں۔ مثال کے طور پر، Babylon.js میں WebGPU کے لیے مکمل تعاون کا اعلان کیا جا چکا ہے، اور Three.js، PlayCanvas اور TensorFlow.js میں جزوی تعاون کا اعلان کیا جا چکا ہے۔

تصوراتی طور پر، WebGPU WebGL سے بالکل اسی طرح مختلف ہے جس طرح Vulkan graphics API OpenGL سے مختلف ہے، لیکن WebGPU کسی مخصوص گرافکس API پر مبنی نہیں ہے، بلکہ ایک عالمگیر پرت ہے جو وولکان، دھات اور میں پائے جانے والے اسی نچلے درجے کی قدیم چیزوں کو استعمال کرتی ہے۔ Direct3D۔ WebGPU جاوا اسکرپٹ ایپلی کیشنز کو تنظیم پر نچلی سطح کے کنٹرول کے ساتھ فراہم کرتا ہے، GPU کو کمانڈز کی پروسیسنگ اور ٹرانسمیشن، منسلک وسائل، میموری، بفرز، ٹیکسچر آبجیکٹ اور مرتب شدہ گرافکس شیڈرز کا انتظام کرتا ہے۔ یہ نقطہ نظر آپ کو اوور ہیڈ لاگت کو کم کرکے اور GPU کے ساتھ کام کرنے کی کارکردگی کو بڑھا کر گرافکس ایپلی کیشنز کے لیے اعلیٰ کارکردگی حاصل کرنے کی اجازت دیتا ہے۔

WebGPU ویب کے لیے پیچیدہ 3D پروجیکٹس بنانا ممکن بناتا ہے جو اسٹینڈ اسٹون پروگراموں سے بدتر کارکردگی کا مظاہرہ نہیں کرتے جو براہ راست Vulkan، Metal یا Direct3D استعمال کرتے ہیں، لیکن مخصوص پلیٹ فارمز سے منسلک نہیں ہیں۔ WebGPU مقامی گرافکس پروگراموں کو WebAssembly میں تالیف کے ذریعے ویب فعال شکل میں پورٹ کرنے کے لیے اضافی صلاحیتیں بھی فراہم کرتا ہے۔ 3D گرافکس کے علاوہ، WebGPU میں GPU میں حسابات کو آف لوڈ کرنے اور شیڈروں کو انجام دینے سے متعلق صلاحیتیں بھی شامل ہیں۔

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

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

ماخذ: opennet.ru

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