W3C julkistaa WebGPU-standardin luonnoksen

W3C on julkaissut ensimmäiset luonnokset WebGPU- ja WebGPU Shading Language (WGSL) -spesifikaatioista, jotka määrittelevät API:t GPU-toimintojen, kuten renderöinnin ja tietojenkäsittelyn, suorittamiseen sekä varjostuskielen GPU:lla toimivien ohjelmien kirjoittamiseen. käsitteellisesti samankaltainen kuin Vulkan, Metal ja Direct3D 12 API:t. Tekniset tiedot valmisteli työryhmä, johon kuului Mozillan, Googlen, Applen ja Microsoftin insinöörejä.

Käsitteellisesti WebGPU eroaa WebGL:stä paljolti samalla tavalla kuin Vulkan-grafiikkasovellusliittymä eroaa OpenGL:stä, mutta se ei perustu tiettyyn grafiikkasovellusliittymään, vaan on universaali kerros, joka käyttää samoja matalan tason primitiivisiä kuin Vulkan, Metal ja Metal. Direct3D. WebGPU tarjoaa JavaScript-sovelluksille matalan tason hallinnan komentojen organisoinnissa, käsittelyssä ja siirtämisessä GPU:lle, niihin liittyvien resurssien, muistin, puskureiden, pintakuvioobjektien ja koottujen grafiikan varjostimien hallinnassa. Tämän lähestymistavan avulla voit saavuttaa korkeamman suorituskyvyn grafiikkasovelluksissa vähentämällä yleiskustannuksia ja lisäämällä GPU:n kanssa työskentelyn tehokkuutta.

WebGPU mahdollistaa monimutkaisten 3D-projektien luomisen Webille, jotka eivät toimi huonommin kuin erilliset ohjelmat, jotka käyttävät suoraan Vulkania, Metallia tai Direct3D:tä, mutta joita ei ole sidottu tiettyihin alustoihin. WebGPU tarjoaa myös lisäominaisuuksia alkuperäisten grafiikkaohjelmien siirtämiseen web-yhteensopivaan muotoon WebAssembly-koon avulla. 3D-grafiikan lisäksi WebGPU sisältää myös ominaisuuksia, jotka liittyvät laskelmien siirtämiseen GPU:lle ja varjostimien suorittamiseen.

WebGPU:n tärkeimmät ominaisuudet:

  • Erillinen resurssien hallinta, valmistelutyöt ja komentojen välitys GPU:lle (WebGL:ssä yksi objekti vastasi kaikesta kerralla). Tarjolla on kolme erillistä kontekstia: GPUDevice resurssien, kuten pintakuvioiden ja puskureiden, luomiseen; GPUCommandEncoder yksittäisten komentojen koodaamiseen, mukaan lukien renderöinti- ja laskentavaiheet; GPUCommandBuffer jonoon GPU:ssa suoritettavaa varten. Tulos voidaan renderöidä alueelle, joka liittyy yhteen tai useampaan kanvaselementtiin, tai se voidaan käsitellä ilman tulosta (esimerkiksi laskentatehtäviä suoritettaessa). Vaiheiden erottaminen helpottaa resurssien luonti- ja valmistelutoimintojen erottamista eri käsittelijöiksi, jotka voivat toimia eri säikeissä.
  • Erilainen lähestymistapa tilojen käsittelyyn. WebGPU tarjoaa kaksi objektia - GPURenderPipeline ja GPUComputePipeline, joiden avulla voit yhdistää erilaisia ​​kehittäjän ennalta määrittämiä tiloja, jolloin selain ei tuhlaa resursseja lisätyöhön, kuten varjostajien uudelleen kääntämiseen. Tuettuja tiloja ovat: varjostimet, vertex-puskuri- ja attribuuttiasettelut, tahmeat ryhmäasettelut, sekoitus, syvyys ja kuviot sekä renderöinnin jälkeiset tulostusmuodot.
  • Sitova malli, joka muistuttaa paljon Vulkanin resurssien ryhmittelyominaisuuksia. Resurssien ryhmittelyä varten WebGPU tarjoaa GPUBindGroup-objektin, joka voidaan liittää muihin vastaaviin objekteihin käytettäväksi varjostimissa komentojen kirjoittamisen aikana. Tällaisten ryhmien luominen antaa kuljettajalle mahdollisuuden suorittaa tarvittavat valmistelutoimet etukäteen, ja selain voi muuttaa resurssien sidontaa piirtokutsujen välillä paljon nopeammin. Resurssisidosten asettelu voidaan määrittää valmiiksi GPUBindGroupLayout-objektin avulla.

Lähde: opennet.ru

Lisää kommentti