WebGPU euskarria gaituko da Chrome-n

Google-k WebGPU grafikoen APIrako eta WGSL (WebGPU Shading Language) euskarria lehenetsia sartu duela iragarri du Chrome 113-n, maiatzaren 2an kaleratuko dena. WebGPU-k Vulkan, Metal eta Direct3D 12-ren antzeko programazio-interfaze bat eskaintzen du GPUaren alboko eragiketak egiteko, esate baterako, errendatzea eta konputazioa, eta itzalgailu-lengoaia bat erabiltzeko aukera ere ematen du GPU aldean exekutatzen diren programak idazteko. WebGPU inplementazioa hasiera batean soilik gaituko da ChromeOS, macOS eta Windows eraikitzetan. Linux eta Androiderako, WebGPU euskarria geroago aktibatuko da.

Chrome-z gain, WebGPUrako euskarri esperimentala probatu da 2020ko apiriletik Firefox-en eta 2021eko azarotik Safari-n. Firefoxen WebGPU gaitzeko, dom.webgpu.enabled eta gfx.webgpu.force-enabled markak ezarri behar dituzu about:config. Oraindik ez dago WebGPU modu lehenetsian gaitzeko asmorik Firefox eta Safari-n. Firefox eta Chrome-rako garatutako WebGPU inplementazioak liburutegi bereizietan daude eskuragarri: Dawn (C++) eta wgpu (Rust), WebGPU laguntza zure aplikazioetan integratzeko erabil ditzakezun. WebGL berez erabiltzen duten JavaScript liburutegi ezagunei WebGPU euskarria gehitzeko ere lanean ari dira. Esaterako, WebGPUrako laguntza osoa iragarri da Babylon.js-en, eta laguntza partziala Three.js, PlayCanvas eta TensorFlow.js-en.

Kontzeptuki, WebGPU WebGL-tik desberdintzen da Vulkan grafikoen APIa OpenGL-tik desberdintzen den modu berean, baina WebGPU ez dago API grafiko zehatz batean oinarritzen, baizik eta Vulkan, Metal eta Metal-en aurkitutako behe-mailako primitibo berdinak erabiltzen dituen geruza unibertsala da. Zuzeneko 3D. WebGPU-k JavaScript aplikazioak maila baxuko kontrola eskaintzen ditu GPUra komandoak antolatzea, prozesatzea eta igortzea, erlazionatutako baliabideak, memoria, buffer-ak, ehundura-objektuak eta konpilatutako itzalaldi grafikoak kudeatuz. Planteamendu honi esker, aplikazio grafikoetarako errendimendu handiagoa lortzen duzu kostu orokorrak murriztuz eta GPUarekin lan egiteko eraginkortasuna areagotuz.

WebGPU-k 3D proiektu konplexuak sortzea ahalbidetzen du Weberako, Vulkan, Metal edo Direct3D zuzenean erabiltzen dituzten programa autonomoak baino errendimendu txarragorik ez dutenak, baina plataforma zehatzetara lotuta ez daudenak. WebGPU-k gaitasun gehigarriak eskaintzen ditu berezko programa grafikoak web-gaitutako inprimaki batera eramateko WebAssembly-n konpilazioaren bidez. 3D grafikoez gain, WebGPU-k kalkuluak GPUra deskargatzearekin eta itzalgailuak exekutatzearekin lotutako gaitasunak ere biltzen ditu.

WebGPUren ezaugarri nagusiak:

  • Baliabideen kudeaketa bereizia, prestaketa lanak eta komandoak GPUra igortzea (WebGLn objektu bat zen guztiaren ardura aldi berean). Hiru testuinguru bereizi eskaintzen dira: GPUDevice 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 errenda 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.
  • Egoera prozesatzeko beste ikuspegi bat. 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.
  • Lotura-eredu bat Vulkan-en baliabideak taldekatzeko eginbideen antzekoa. Baliabideak elkarrekin taldekatzeko, WebGPU-k GPUBindGroup objektu bat eskaintzen du, eta antzeko beste objektu batzuekin lotu daiteke, itzalgailuetan 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.

Iturria: opennet.ru

Gehitu iruzkin berria