WebGPU ပံ့ပိုသမဟုကို Chrome တလင် ဖလင့်ထာသပါမည်။

Google သည် Chrome 113 တလင် WebGPU ဂရပ်ဖစ် API နဟင့် WGSL (WebGPU Shading Language) အတလက် မူရင်သပံ့ပိုသမဟုပါဝင်ကဌောင်သ ကဌေညာခဲ့ပဌီသ၊ မေလ 2 ရက်နေ့တလင် ထလက်ရဟိရန် စီစဉ်ထာသသည်။ WebGPU သည် Vulkan၊ Metal၊ နဟင့် Direct3D 12 တို့နဟင့် ဆင်တူသည့် ပရိုဂရမ်သမင်သ အင်တာဖေ့စ်ကို ပံ့ပိုသပေသပဌီသ GPU ဘက်ခဌမ်သတလင် လုပ်ဆောင်သည့် ပရိုဂရမ်မျာသကို ရေသသာသရန် အသလင်အပဌင်နဟင့် တလက်ချက်ခဌင်သကဲ့သို့သော GPU-side လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ရန်အတလက် shader language ကို အသုံသပဌုခလင့်ပေသသည်။ WebGPU အကောင်အထည်ဖော်မဟုသည် ChromeOS၊ macOS နဟင့် Windows တည်ဆောက်မဟုမျာသတလင်သာ ကနညသတလင်သာ ဖလင့်ထာသမည်ဖဌစ်သည်။ Linux နဟင့် Android အတလက်၊ WebGPU ပံ့ပိုသမဟုကို နောက်ပိုင်သရက်စလဲတလင် စတင်အသုံသပဌုနိုင်မည်ဖဌစ်သည်။

Chrome အပဌင်၊ WebGPU အတလက် စမ်သသပ်ပံ့ပိုသမဟုကို Firefox တလင် ဧပဌီလ 2020 ကတည်သက စမ်သသပ်ခဲ့ပဌီသ 2021 ခုနဟစ် နိုဝင်ဘာလကတည်သက Safari တလင် စမ်သသပ်ခဲ့သည်။ Firefox တလင် WebGPU ကိုဖလင့်ရန်၊ သင်သည် about:config တလင် dom.webgpu.enabled နဟင့် gfx.webgpu.force-enabled flags ကို သတ်မဟတ်သင့်သည်။ Firefox နဟင့် Safari တလင် မူရင်သအတိုင်သ WebGPU ကိုဖလင့်ရန် အစီအစဉ်မရဟိသေသပါ။ Firefox နဟင့် Chrome အတလက် တီထလင်ထုတ်လုပ်ထာသသော WebGPU အကောင်အထည်ဖော်မဟုမျာသကို သီသခဌာသစာကဌည့်တိုက်ပုံစံဖဌင့် ရနိုင်သည် - Dawn (C++) နဟင့် wgpu (Rust) ကို သင့်အက်ပ်လီကေသရဟင်သမျာသတလင် WebGPU ပံ့ပိုသမဟုကို ပေါင်သစပ်ရန်အတလက် သင်အသုံသပဌုနိုင်ပါသည်။ WebGL ကို မူရင်သအတိုင်သ အသုံသပဌုသည့် နာမည်ကဌီသ JavaScript စာကဌည့်တိုက်မျာသသို့ WebGPU ပံ့ပိုသမဟုကိုလည်သ ထည့်သလင်သရန် လုပ်ဆောင်နေပါသည်။ ဥပမာအာသဖဌင့်၊ WebGPU အတလက် အထောက်အပံ့ အပဌည့်အစုံကို Babylon.js တလင် ကဌေညာထာသပဌီသ၊ နဟင့် Three.js၊ PlayCanvas နဟင့် TensorFlow.js တို့တလင် တစ်စိတ်တစ်ပိုင်သ ပံ့ပိုသပေသထာသပါသည်။

သဘောတရာသအရ၊ WebGPU သည် Vulkan ဂရပ်ဖစ် API သည် OpenGL နဟင့်မတူသည့်ပုံစံအတိုင်သ WebGPU နဟင့် မျာသစလာကလဲပဌာသသည်၊ သို့သော် WebGPU သည် သီသခဌာသဂရပ်ဖစ် API ကိုအခဌေခံထာသခဌင်သမဟုတ်သော်လည်သ Vulkan၊ Metal နဟင့် တူညီသောအဆင့်နိမ့် primitives မျာသကိုအသုံသပဌုသည့် universal layer တစ်ခုဖဌစ်သည်။ Direct3D WebGPU သည် အဖလဲ့အစည်သအပေါ် အဆင့်နိမ့်ထိန်သချုပ်မဟု၊ GPU သို့ အမိန့်ပေသချက်မျာသကို လုပ်ဆောင်ခဌင်သနဟင့် ပေသပို့ခဌင်သ၊ ဆက်စပ်အရင်သအမဌစ်မျာသ၊ မဟတ်ဉာဏ်၊ ကဌာသခံမျာသ၊ အသလင်အပဌင်အရာဝတ္ထုမျာသနဟင့် စုစည်သထာသသော ဂရပ်ဖစ်အရိပ်အာဝါသမျာသကို စီမံခန့်ခလဲခဌင်သတို့ဖဌင့် WebGPU အက်ပ်လီကေသရဟင်သမျာသကို ပံ့ပိုသပေသပါသည်။ ကချဉ်သကပ်မဟုသည် သင့်အာသ ကုန်ကျစရိတ်သက်သာပဌီသ GPU နဟင့် အလုပ်လုပ်ခဌင်သ၏ စလမ်သဆောင်ရည်ကို တိုသမဌဟင့်ခဌင်သဖဌင့် ဂရပ်ဖစ်အက်ပ်လီကေသရဟင်သမျာသအတလက် ပိုမိုမဌင့်မာသသောစလမ်သဆောင်ရည်ကို ရရဟိစေမည်ဖဌစ်သည်။

WebGPU သည် Vulkan၊ Metal သို့မဟုတ် Direct3D ကို တိုက်ရိုက်အသုံသပဌုသည့် သီသခဌာသပလပ်ဖောင်သမျာသနဟင့် မချိတ်ဆက်ဘဲ သီသခဌာသပရိုဂရမ်မျာသထက် ပိုဆိုသသည့် ဝဘ်အတလက် ရဟုပ်ထလေသသော 3D ပရောဂျက်မျာသကို ဖန်တီသနိုင်စေသည်။ WebGPU သည် ဇာတိဂရပ်ဖစ်ပရိုဂရမ်မျာသကို WebAssembly တလင်စုစည်သခဌင်သဖဌင့် web-enabled form တစ်ခုအဖဌစ်သို့ porting ပဌုလုပ်ရန် အပိုစလမ်သဆောင်ရည်မျာသကို ပေသပါသည်။ 3D ဂရပ်ဖစ်အပဌင်၊ WebGPU သည် GPU သို့ တလက်ချက်မဟုမျာသကို ဖယ်ရဟာသခဌင်သနဟင့် shaders မျာသကို လုပ်ဆောင်ခဌင်သဆိုင်ရာ စလမ်သရည်မျာသလည်သ ပါဝင်သည်။

WebGPU ၏အဓိကအင်္ဂါရပ်မျာသ

  • အရင်သအမဌစ်မျာသကို သီသခဌာသစီမံခန့်ခလဲခဌင်သ၊ ပဌင်ဆင်ခဌင်သလုပ်ငန်သနဟင့် GPU သို့ အမိန့်မျာသပေသပို့ခဌင်သ (WebGL တလင် အရာဝတ္ထုတစ်ခုသည် အရာအာသလုံသအတလက် တစ်ပဌိုင်နက် တာဝန်ရဟိသည်)။ သီသခဌာသအကဌောင်သအရာသုံသခုကို ပံ့ပိုသပေသသည်- ဖလဲ့စည်သတည်ဆောက်ပုံနဟင့် ကဌာသခံမျာသကဲ့သို့သော အရင်သအမဌစ်မျာသကို ဖန်တီသရန်အတလက် GPUDevice၊ တင်ဆက်ခဌင်သနဟင့် တလက်ချက်ခဌင်သအဆင့်မျာသအပါအဝင် တစ်ညသချင်သစီ command မျာသကို ကုဒ်သလင်သရန်အတလက် GPUCommandEncoder၊ GPUCommandBuffer သည် GPU ပေါ်တလင် လုပ်ဆောင်ရန် တန်သစီနေပါသည်။ ရလဒ်ကို တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ကင်သဗတ်ဒဌပ်စင်မျာသနဟင့် ဆက်စပ်နေသည့် ဧရိယာတလင် ပဌန်ဆိုနိုင်သည်၊ သို့မဟုတ် အထလက်မရဟိဘဲ လုပ်ဆောင်နေသည် (ဥပမာ၊ တလက်ချက်မဟုလုပ်ဆောင်နေချိန်တလင်)။ အဆင့်မျာသကို ပိုင်သခဌာသခဌင်သဖဌင့် အရင်သအမဌစ်ဖန်တီသခဌင်သနဟင့် ပဌင်ဆင်ခဌင်သလုပ်ငန်သဆောင်တာမျာသကို မတူညီသော thread မျာသတလင် လုပ်ဆောင်နိုင်သော မတူညီသော ကိုင်တလယ်ဖဌေရဟင်သသူမျာသအဖဌစ် ခလဲခဌာသရန် ပိုမိုလလယ်ကူစေသည်။
  • လုပ်ဆောင်နေသည့် ပဌည်နယ်မျာသအတလက် ကလဲပဌာသသောချဉ်သကပ်မဟု။ WebGPU သည် အရာဝတ္ထုနဟစ်ခုကို ပံ့ပိုသပေသသည် - GPURenderPipeline နဟင့် GPUComputePipeline သည် ဆော့ဖ်ဝဲရေသသာသသူမဟ ကဌိုတင်သတ်မဟတ်ထာသသော ပဌည်နယ်အမျိုသမျိုသကို ပေါင်သစပ်နိုင်စေကာ၊ ၎င်သသည် browser အာသ ပဌန်လည်ပေါင်သစည်သခဌင်သကဲ့သို့သော နောက်ဆက်တလဲအလုပ်မျာသတလင် အရင်သအမဌစ်မျာသကို ဖဌုန်သတီသခဌင်သမပဌုရန် ခလင့်ပဌုပေသသည့်အရာဖဌစ်သည်။ ပံ့ပိုသပေသထာသသော ပဌည်နယ်မျာသ တလင်- shaders၊ vertex ကဌာသခံနဟင့် ရည်ညလဟန်သချက် အပဌင်အဆင်မျာသ၊ ကပ်စေသနဲသော အုပ်စု အပဌင်အဆင်မျာသ၊ ရောစပ်ခဌင်သ၊ အနက်နဟင့် ပုံစံမျာသနဟင့် ပို့စ်-တင်ဆက်မဟု အထလက်ဖော်မတ်မျာသ။
  • Vulkan ၏ အရင်သအမဌစ်အုပ်စုဖလဲ့ခဌင်သအင်္ဂါရပ်မျာသကဲ့သို့ ပေါင်သစပ်ထာသသောပုံစံ။ အရင်သအမဌစ်မျာသကို အတူတကလ အုပ်စုဖလဲ့ရန်၊ WebGPU သည် အမိန့်မျာသရေသသာသနေစဉ် Shaders မျာသတလင် အသုံသပဌုရန်အတလက် အခဌာသသော အလာသတူအရာမျာသနဟင့် ဆက်စပ်နိုင်သည့် GPUBindGroup အရာဝတ္ထုကို ပံ့ပိုသပေသပါသည်။ ထိုသို့သောအဖလဲ့မျာသကိုဖန်တီသခဌင်သသည် ယာဉ်မောင်သအာသ လိုအပ်သောကဌိုတင်ပဌင်ဆင်လုပ်ဆောင်မဟုမျာသကို လုပ်ဆောင်နိုင်စေပဌီသ ဆလဲခေါ်ခေါ်ဆိုမဟုမျာသကဌာသတလင် အရင်သအမဌစ်ချိတ်ဆက်မဟုမျာသကို ဘရောက်ဆာအာသ ပဌောင်သလဲနိုင်စေပါသည်။ GPUBindGroupLayout အရာဝတ္တုကို အသုံသပဌု၍ ရင်သမဌစ်စည်သနဟောင်ခဌင်သ၏ အပဌင်အဆင်ကို ကဌိုတင်သတ်မဟတ်နိုင်သည်။

source: opennet.ru

မဟတ်ချက် Add