В
WebGPU جو اهم مقصد ويب پليٽ فارم لاءِ هڪ محفوظ، صارف دوست، پورٽبل، ۽ اعليٰ ڪارڪردگي وارو پروگرامنگ انٽرفيس مهيا ڪرڻ آهي ته جيئن جديد سسٽم گرافڪس APIs پاران مهيا ڪيل 3D گرافڪس ٽيڪنالاجيز ۽ صلاحيتون، جيئن ته Direct3D 12 تي Windows، Metal. MacOS تي، ۽ Vulkan لينڪس تي. تصوراتي طور تي، WebGPU WebGL کان گهڻو ئي مختلف آهي جيئن Vulkan OpenGL کان مختلف آهي، ۽ ساڳئي وقت اهو هڪ مخصوص گرافڪس API تي ٻڌل ناهي، پر هڪ آفاقي پرت آهي جيڪا عام طور تي استعمال ڪري ٿي ساڳئي گهٽ-سطح جي پراڻين کي استعمال ڪري ٿو Vulkan، ڌاتو ۽ Direct3D.
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 جي ٽئين خصوصيت کي بائنڊنگ ماڊل سڏيو ويندو آهي، گهڻو ڪري
Vulkan ۾ موجود وسيلن جي گروپ سازي جي اوزار جي ياد ڏياريندڙ.
وسيلن کي گڏ ڪرڻ لاءِ، WebGPU هڪ GPUBindGroup اعتراض مهيا ڪري ٿو، جيڪو ڪمانڊ لکڻ دوران شيڊرز ۾ استعمال لاءِ ٻين ساڳين شين سان لاڳاپيل ٿي سگهي ٿو. اهڙن گروپن کي ٺاهڻ ڊرائيور کي ضروري تياري واري عمل کي اڳ ۾ ئي انجام ڏيڻ جي اجازت ڏئي ٿو، ۽ برائوزر کي اجازت ڏئي ٿو ته ريسورس بائنڊنگ کي ڊرائنگ ڪالن جي وچ ۾ تمام تيزيءَ سان تبديل ڪري. وسيلن جي پابندن جي ترتيب کي GPUBindGroupLayout اعتراض استعمال ڪندي اڳواٽ بيان ڪري سگھجي ٿو.
فائر فاڪس ۾، WebGPU کي اٽڪل:config ۾ فعال ڪرڻ لاء، اتي "dom.webgpu.enabled" سيٽنگ آهي. CanvasContext رينڊرنگ کي پڻ ڪمپوزنگ کي فعال ڪرڻ جي ضرورت آھي
جو ذريعو: opennet.ru