Chrome sal WebGPU-ondersteuning insluit

Google het die insluiting van verstekondersteuning vir die WebGPU-grafiese API en WGSL (WebGPU Shading Language) in Chrome 113 aangekondig, wat geskeduleer is vir vrystelling op 2 Mei. WebGPU bied 'n programmeringskoppelvlak soortgelyk aan Vulkan, Metal en Direct3D 12 vir die uitvoering van GPU-kantbewerkings soos lewering en rekenaar, en laat ook die gebruik van 'n skadu-taal toe om programme te skryf wat aan die GPU-kant loop. Die WebGPU-implementering sal aanvanklik net op ChromeOS-, macOS- en Windows-geboue geaktiveer word. Vir Linux en Android sal WebGPU-ondersteuning op 'n later datum geaktiveer word.

Benewens Chrome, is eksperimentele ondersteuning vir WebGPU sedert April 2020 in Firefox en sedert November 2021 in Safari getoets. Om WebGPU in Firefox te aktiveer, moet jy die dom.webgpu.enabled en gfx.webgpu.force-enabled vlae in about:config stel. Daar is nog geen planne om WebGPU by verstek in Firefox en Safari te aktiveer nie. WebGPU-implementerings wat vir Firefox en Chrome ontwikkel is, is beskikbaar in die vorm van aparte biblioteke - Dawn (C++) en wgpu (Rust), wat jy kan gebruik om WebGPU-ondersteuning in jou toepassings te integreer. Werk is ook aan die gang om WebGPU-ondersteuning by gewilde JavaScript-biblioteke te voeg wat WebGL inheems gebruik. Volledige ondersteuning vir WebGPU is byvoorbeeld reeds in Babylon.js aangekondig, en gedeeltelike ondersteuning in Three.js, PlayCanvas en TensorFlow.js.

Konseptueel verskil WebGPU van WebGL op baie dieselfde manier as wat die Vulkan grafiese API van OpenGL verskil, maar WebGPU is nie gebaseer op 'n spesifieke grafiese API nie, maar is 'n universele laag wat dieselfde lae-vlak primitiewe gebruik wat in Vulkan, Metal en Direkte 3D. WebGPU bied JavaScript-toepassings met laevlakbeheer oor die organisasie, verwerking en oordrag van opdragte na die GPU, bestuur van geassosieerde hulpbronne, geheue, buffers, tekstuurvoorwerpe en saamgestelde grafiese shaders. Hierdie benadering laat jou toe om hoër werkverrigting vir grafiese toepassings te bereik deur oorhoofse koste te verminder en die doeltreffendheid van die werk met die GPU te verhoog.

WebGPU maak dit moontlik om komplekse 3D-projekte vir die web te skep wat nie slegter presteer as selfstandige programme wat Vulkan, Metal of Direct3D direk gebruik, maar nie aan spesifieke platforms gekoppel is nie. WebGPU bied ook bykomende vermoëns vir die oordrag van inheemse grafiese programme in 'n web-geaktiveerde vorm deur samestelling in WebAssembly. Benewens 3D-grafika, bevat WebGPU ook vermoëns wat verband hou met die aflaai van berekeninge na die GPU en die uitvoering van shaders.

Sleutel kenmerke van WebGPU:

  • Afsonderlike bestuur van hulpbronne, voorbereidende werk en oordrag van opdragte na die GPU (in WebGL was een voorwerp op een slag verantwoordelik vir alles). Drie afsonderlike kontekste word verskaf: GPU-toestel vir die skep van hulpbronne soos teksture en buffers; GPUCommandEncoder vir die enkodering van individuele opdragte, insluitend lewering en berekeningstadiums; GPUCommandBuffer om in die tou te staan ​​vir uitvoering op die GPU. Die resultaat kan gelewer word in 'n area wat met een of meer doekelemente geassosieer word, of sonder uitset verwerk word (byvoorbeeld wanneer rekenaartake uitgevoer word). Deur die stadiums te skei, maak dit makliker om hulpbronskepping en voorbereidingsbewerkings te skei in verskillende hanteerders wat op verskillende drade kan loop.
  • 'n Ander benadering tot verwerking van state. WebGPU bied twee voorwerpe - GPURenderPipeline en GPUComputePipeline, wat jou toelaat om verskeie toestande wat vooraf deur die ontwikkelaar gedefinieer is, te kombineer, wat die blaaier toelaat om nie hulpbronne te mors op bykomende werk, soos die hersamestelling van shaders nie. Ondersteunde toestande sluit in: skakerings, hoekpuntbuffer en kenmerkuitlegte, taai groepuitlegte, vermenging, diepte en patrone, en na-weergawe uitsetformate.
  • 'n Bindende model baie soos Vulkan se hulpbrongroeperingskenmerke. Om hulpbronne saam te groepeer, verskaf WebGPU 'n GPUBindGroup-objek, wat met ander soortgelyke voorwerpe geassosieer kan word vir gebruik in shaders terwyl opdragte geskryf word. Die skep van sulke groepe laat die bestuurder toe om vooraf die nodige voorbereidende aksies uit te voer, en laat die blaaier toe om hulpbronbindings tussen trekoproepe baie vinniger te verander. Die uitleg van hulpbronbindings kan vooraf gedefinieer word deur die GPUBindGroupLayout-objek te gebruik.

Bron: opennet.ru

Voeg 'n opmerking