Julkaistut tiedot WebGPU-ohjeiden integroinnista Firefoxissa joka ilta rakentaa, mikä nyt tarjoaa ohjelmointirajapinnan 3D-grafiikan käsittelyyn ja laskenta GPU-puolella, käsitteellisesti samanlainen kuin Vulkan API, metal ja Direct3D 12. Spesifikaation kehittävät Mozilla, Google, Apple, Microsoft ja yhteisön edustajat W3C-organisaation luomassa työryhmässä.
WebGPU: n päätavoitteena on luoda turvallinen, kätevä, kannettava ja korkean suorituskyvyn ohjelmistoliitäntä käytettäväksi verkkoalustalla 3D-grafiikkatekniikan ja nykyaikaisten grafiikkasovellusliittymien, kuten Direct3D 12: n Windowsissa, Metalin, MacOS: n ja Vulkanin, Linuxilla tarjoamilla ominaisuuksilla.
Käsitteellisesti, WebGPU eroaa WebGL: stä samalla tavalla kuin Vulkan eroaa OpenGL: stä ja se ei perustu tiettyyn grafiikkasovellusliittymään, pikemminkin se on yleinen kerros, joka yleensä käyttää samoja matalan tason primitiivejä, joita on saatavana Vulkanissa, Metalissä ja Direct3D: ssä.
Firefoxissa "dom.webgpu.enabled" -asetus annetaan WebGPU: n käyttöönottoa varten noin: config. CanvasContext-mallinnuksen lisäksi se vaatii myös WebRender-sävellysjärjestelmän sisällyttämisen ("gfx.webrender.all" noin: config).
WebGPU-toteutus perustuu Rustiin kirjoitettuun wgpu-projektikoodiin, ja se voi toimia DX12-, Vulkan- ja Metal-sovellusliittymien päällä Linux-, Android-, Windows- ja macOS-käyttöjärjestelmissä (DX11- ja OpenGL ES 3.0 -tukea on myös kehitteillä).
Tietoja WebGPU: sta
WebGPU tarjoaa JavaScript-sovelluksia työkaluilla alemman tason hallintaan organisaatiosta, komentojen käsittely ja siirto GPU: lle, siihen liittyvien resurssien, muistin, puskurien, tekstuurikohteiden ja koottujen graafisten varjostimien hallinta. Tämä lähestymistapa tulee mahdollistaa korkeamman suorituskyvyn grafiikkasovellukset vähentämällä yleiskustannuksia ja lisäämällä GPU: n kanssa työskentelyn tehokkuutta.
WebGPU avulla voidaan luoda kokonaisia monimutkaisia 3D-projekteja verkkoon jotka eivät toimi huonommin kuin erilliset ohjelmat, jotka kommunikoivat suoraan Vulkanin, Metalin tai Direct3D: n kanssa, mutta eivät ole sidoksissa tiettyihin alustoihin.
myös tarjoaa lisäominaisuuksia siirtämällä natiivigrafiikkaohjelmia muotoon, joka voi toimia verkkopohjaisten tekniikoiden pohjalta käyttämällä WebAssembly-tekniikkaa.
3D-grafiikan lisäksi WebGPU kattaa myös GPU: n vieressä olevan laskennan poistamiseen liittyvät mahdollisuudet ja tuki varjostimen kehittämiselle. Varjostimet voidaan luoda WebGPU-varjostuskielellä tai määritellä SPIR-V-välimuodossa ja sitten kääntää varjostuskielille, joita nykyiset ohjaimet tukevat.
WebGPU käyttää erillistä resurssien hallintaa, valmistelutyötä ja komentojen siirtoa GPU: lle (WebGL: ssä yksi objekti oli vastuussa kaikesta kerralla). Tarjolla on kolme erillistä asiayhteyttä: GPUDevice resurssien, kuten tekstuurien ja puskurien, luomiseen; GPUCommandEncoder koodaamaan yksittäisiä komentoja, mukaan lukien renderointi- ja laskentavaiheet; GPUCommandBuffer jonottamaan suoritusta GPU: lla.
Toinen ero WebGPU: n ja WebGL: n välillä on erilainen lähestymistapa tilojen käsittelyyn. WebGPU: ssa ehdotetaan kahta objektia: GPURenderPipeline ja GPUComputePipeline, jotka mahdollistavat useiden kehittäjän ennalta määrittelemien tilojen yhdistämisen, jolloin selain ei tuhlaa resursseja lisätyöhön, kuten varjostimien uudelleen kääntämiseen. Tuettuja tiloja ovat: varjostimet, kärkipuskurit ja attribuuttiasettelut, liitteenä olevat ryhmät, sekoitus, syvyys ja kuviot, tulosteen muodot renderoinnin jälkeen.
WebGPU: n kolmas ominaisuus on sitova malli, joka monessa suhteessa muistuttaa keinoja yhdistää Vulkanissa olevia resursseja. Resurssien ryhmittelemiseksi ryhmiin WebGPU tarjoaa GPUBindGroup-objektin, joka komentoja kirjoittamalla voidaan liittää muihin vastaaviin objekteihin varjossa käytettäväksi.
Tällaisten ryhmien luominen antaa kuljettajan suorittaa tarvittavat valmistelutoiminnot etukäteen, ja selain antaa hänen vaihtaa resurssiyhteyksiä vetopuheluiden välillä paljon nopeammin.
lähde: https://hacks.mozilla.org/