Š
WebGPU galvenais mÄrÄ·is ir nodroÅ”inÄt droÅ”u, lietotÄjam draudzÄ«gu, pÄrnÄsÄjamu un augstas veiktspÄjas programmÄÅ”anas interfeisu tÄ«mekļa platformai, lai izmantotu 3D grafikas tehnoloÄ£ijas un iespÄjas, ko nodroÅ”ina mÅ«sdienu sistÄmas grafikas API, piemÄram, Direct3D 12 operÄtÄjsistÄmÄ Windows, Metal. operÄtÄjsistÄmÄ macOS un Vulkan operÄtÄjsistÄmÄ Linux. KonceptuÄli WebGPU atŔķiras no WebGL tÄdÄ paÅ”Ä veidÄ, kÄ Vulkan atŔķiras no OpenGL, un tajÄ paÅ”Ä laikÄ tas nav balstÄ«ts uz konkrÄtu grafikas API, bet ir universÄls slÄnis, kas parasti izmanto tos paÅ”us zema lÄ«meÅa primitÄ«vus, kas atrodami Vulkan, MetÄls un Direct3D.
WebGPU nodroÅ”ina JavaScript lietojumprogrammÄm zemÄka lÄ«meÅa kontroli pÄr komandu organizÄÅ”anu, apstrÄdi un pÄrsÅ«tÄ«Å”anu uz GPU, pÄrvaldot saistÄ«tos resursus, atmiÅu, buferus, tekstÅ«ras objektus un apkopotos grafikas ÄnotÄjus. Å Ä« pieeja ļauj sasniegt augstÄku veiktspÄju grafikas lietojumprogrammÄm, samazinot pieskaitÄmÄs izmaksas un palielinot darba ar GPU efektivitÄti.
WebGPU ļauj izveidot pilnvÄrtÄ«gus sarežģītus 3D projektus tÄ«meklim, kas darbojas ne sliktÄk kÄ atseviŔķas programmas, kas tieÅ”i piekļūst Vulkan, Metal vai Direct3D, bet nav piesaistÄ«tas noteiktÄm platformÄm. WebGPU nodroÅ”ina arÄ« papildu iespÄjas, pÄrnesot vietÄjÄs grafikas programmas tÄ«meklÄ« iespÄjotÄ formÄ, izmantojot WebAssembly tehnoloÄ£iju. Papildus 3D grafikai WebGPU aptver arÄ« iespÄjas, kas saistÄ«tas ar aprÄÄ·inu pÄrsÅ«tÄ«Å”anu uz GPU un ÄnotÄju izstrÄdes atbalstÄ«Å”anu. ÄnotÄji
WebGPU izmanto atseviŔķu resursu pÄrvaldÄ«bu, sagatavoÅ”anÄs darbus un komandu pÄrsÅ«tÄ«Å”anu uz GPU (WebGL viens objekts bija atbildÄ«gs par visu uzreiz). Tiek nodroÅ”inÄti trÄ«s atseviŔķi konteksti:
GPUDevice resursu, piemÄram, tekstÅ«ru un buferu, izveidei; GPUCommandEncoder atseviŔķu komandu kodÄÅ”anai, ieskaitot renderÄÅ”anas un aprÄÄ·inÄÅ”anas posmus; GPUCommandBuffer, kas jÄievieto rindÄ izpildei GPU. RezultÄtu var atveidot apgabalÄ, kas saistÄ«ts ar vienu vai vairÄkiem audekla elementiem, vai apstrÄdÄt bez izvades (piemÄram, palaižot skaitļoÅ”anas uzdevumus). Atdalot posmus, ir vieglÄk nodalÄ«t resursu izveides un sagatavoÅ”anas darbÄ«bas dažÄdos apstrÄdÄtÄjos, kas var darboties dažÄdos pavedienos.
OtrÄ atŔķirÄ«ba starp WebGPU un WebGL ir atŔķirÄ«ga pieeja stÄvokļu apstrÄdei. WebGPU piedÄvÄ divus objektus ā GPURenderPipeline un GPUComputePipeline, kas ļauj apvienot dažÄdus izstrÄdÄtÄja iepriekÅ” definÄtus stÄvokļus, kas ļauj pÄrlÅ«kprogrammai netÄrÄt resursus papildu darbam, piemÄram, ÄnotÄju pÄrkompilÄÅ”anai. AtbalstÄ«tie stÄvokļi ir: ÄnotÄji, virsotÅu bufera un atribÅ«tu izkÄrtojumi, lipÄ«go grupu izkÄrtojumi, sajaukÅ”ana, dziļums un modeļi, kÄ arÄ« pÄcrenderÄÅ”anas izvades formÄti.
TreÅ”o WebGPU funkciju lielÄkoties sauc par saistoÅ”o modeli
atgÄdina Vulkan pieejamos resursu grupÄÅ”anas rÄ«kus.
Lai grupÄtu resursus, WebGPU nodroÅ”ina GPUBindGroup objektu, ko var saistÄ«t ar citiem lÄ«dzÄ«giem objektiem, lai tos izmantotu ÄnotÄjos, rakstot komandas. Å Ädu grupu izveide ļauj draiverim iepriekÅ” veikt nepiecieÅ”amÄs sagatavoÅ”anas darbÄ«bas, kÄ arÄ« ļauj pÄrlÅ«kprogrammai daudz ÄtrÄk mainÄ«t resursu piesaisti starp izsaukumiem. Resursu saiÅ”u izkÄrtojumu var iepriekÅ” definÄt, izmantojot objektu GPUBindGroupLayout.
Lai pÄrlÅ«kprogrammÄ Firefox iespÄjotu WebGPU failÄ about:config, ir iestatÄ«jums ādom.webgpu.enabledā. CanvasContext renderÄÅ”anai ir jÄiespÄjo arÄ« kompozÄ«cija
Avots: opennet.ru