W3C သည် WebGPU စံနှုန်းမူကြမ်းကို ထုတ်ဖော်ပြသခဲ့သည်။

W3C သည် တင်ဆက်ခြင်းနှင့် တွက်ချက်ခြင်းကဲ့သို့သော GPU လုပ်ဆောင်ချက်များကို လုပ်ဆောင်ရန်အတွက် APIs များကို သတ်မှတ်ပေးသည့် WebGPU နှင့် WebGPU Shading Language (WGSL) သတ်မှတ်ချက်များ၏ ပထမမူကြမ်းများကို ထုတ်ပြန်ခဲ့ပြီး၊ GPU ပေါ်တွင် လုပ်ဆောင်သည့် ပရိုဂရမ်များကို ရေးသားရန်အတွက် အရိပ်အာဝါသတစ်ခုဖြစ်သည်။ Vulkan၊ Metal နှင့် Direct3D 12 APIs များနှင့် သဘောတရားအရ ဆင်တူသည်။ အဆိုပါသတ်မှတ်ချက်များကို Mozilla၊ Google၊ Apple နှင့် Microsoft မှ အင်ဂျင်နီယာများ ပါဝင်သော အလုပ်အဖွဲ့မှ ပြင်ဆင်ခဲ့ပါသည်။

သဘောတရားအရ၊ WebGPU သည် Vulkan ဂရပ်ဖစ် API သည် OpenGL နှင့် မတူသည့်ပုံစံအတိုင်း 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