Π
WebGPUren funtsezko helburua da web plataformarako programazio-interfaze seguru, erabilerraz, eramangarri eta errendimendu handiko bat eskaintzea, sistema modernoko API grafikoek eskaintzen dituzten 3D grafikoen teknologiak eta gaitasunak aprobetxatzeko, hala nola Direct3D 12 Windows, Metal-en. macOS-en, eta Vulkan Linux-en. Kontzeptuki, WebGPU WebGL-tik desberdina da Vulkan OpenGL-tik desberdintzen den modu berean, eta, aldi berean, ez dago API grafiko zehatz batean oinarritzen, baina geruza unibertsala da, orokorrean Vulkan-en aurkitutako behe-mailako primitibo berdinak erabiltzen dituena. Metala eta Direct3D.
WebGPU-k JavaScript aplikazioak ematen ditu komandoak GPUra antolatzeko, prozesatzeko eta igortzeko maila baxuagoko kontrolarekin, lotutako baliabideak, memoria, buffer-ak, ehundura-objektuak eta konpilatutako itzalgailu grafikoak kudeatuz. Planteamendu honi esker, aplikazio grafikoetarako errendimendu handiagoa lortzen duzu kostu orokorrak murriztuz eta GPUarekin lan egiteko eraginkortasuna areagotuz.
WebGPU-k 3D proiektu konplexu osoak sortzea ahalbidetzen du Weberako, Vulkan, Metal edo Direct3D zuzenean sartzen diren programa autonomoak baino okerrago funtzionatzen ez dutenak, baina plataforma zehatz batzuetara lotuta ez daudenak. WebGPU-k gaitasun gehigarriak ere eskaintzen ditu berezko programa grafikoak web-gaitutako inprimaki batera eramatean WebAssembly teknologiaren bidez. 3D grafikoez gain, WebGPU-k GPUra kalkuluak deskargatzearekin eta shader garapenarekin lotutako gaitasunak ere hartzen ditu. Itzalgailuak
WebGPU-k baliabideen kudeaketa bereizia erabiltzen du, prestaketa-lana eta komandoak GPUra igortzea (WebGL-n, objektu bat zen guztiaren ardura aldi berean). Hiru testuinguru bereizi eskaintzen dira:
GPUGailua baliabideak sortzeko, hala nola testurak eta buffer-ak; GPUCommandEncoder komando indibidualak kodetzeko, errendatze eta konputazio faseak barne; GPUCommandBuffer ilaran jarriko da GPUan exekutatzeko. Emaitza mihise-elementu batekin edo gehiagorekin lotutako eremu batean errendatu daiteke, edo irteerarik gabe prozesatu (adibidez, konputazio-zereginak exekutatzen direnean). Etapak bereizteak baliabideak sortzeko eta prestatzeko eragiketak hari ezberdinetan exekutatu daitezkeen kudeatzaile ezberdinetan bereiztea errazten du.
WebGPU eta WebGLren arteko bigarren aldea egoerak kudeatzeko beste ikuspegi bat da. WebGPU-k bi objektu eskaintzen ditu: GPURenderPipeline eta GPUComputePipeline, garatzaileak aurrez zehaztutako hainbat egoera konbinatzeko aukera ematen dutenak, eta horri esker, arakatzaileak ez ditu baliabideak alferrik galtzen lan gehigarrietan, hala nola itzalgailuak birkonpilatzen. Onartutako egoerak hauek dira: itzalgailuak, erpin-buffer eta atributuen diseinuak, talde-diseinu itsaskorrak, nahasketa, sakontasuna eta ereduak eta errendatze osteko irteera-formatuak.
WebGPUren hirugarren ezaugarriari lotura-eredua deitzen zaio, neurri handi batean
Vulkan-en dauden baliabideak taldekatzeko tresnak gogorarazten ditu.
Baliabideak elkarrekin biltzeko, WebGPU-k GPUBindGroup objektu bat eskaintzen du, antzeko beste objektu batzuekin lotu daitekeena itzalean erabiltzeko komandoak idaztean. Horrelako taldeak sortzeari esker, gidariak beharrezkoak diren prestaketa-ekintzak egin ditzake aldez aurretik, eta arakatzaileak zozketa-deien artean baliabideen loturak alda ditzake askoz azkarrago. Baliabideen loturen diseinua aurrez defini daiteke GPUBindGroupLayout objektua erabiliz.
Firefox-en, "dom.webgpu.enabled" ezarpena about:config-en eskaintzen da WebGPU gaitzeko. CanvasContext errendatzeak konposaketa gaituta egotea ere eskatzen du
Iturria: opennet.ru