Firefox natlige builds inkluderer nu WebGPU-understøttelse

В nat Firefox bygger optrådte specifikationsunderstøttelse WebGPU, som giver en programmeringsgrænseflade til 3D-grafikbehandling og GPU-side computing, konceptuelt ligner API'en Vulkan, Metal и Direkte3D 12. Specifikationen udvikles af Mozilla, Google, Apple, Microsoft og fællesskabsmedlemmer i arbejdsgruppe, skabt af W3C-organisationen.

Hovedmålet med WebGPU er at levere en sikker, brugervenlig, bærbar og højtydende programmeringsgrænseflade til webplatformen for at udnytte 3D-grafikteknologierne og -funktionerne fra moderne systemgrafik-API'er, såsom Direct3D 12 på Windows, Metal på macOS og Vulkan på Linux. Konceptuelt adskiller WebGPU sig fra WebGL på nogenlunde samme måde, som Vulkan adskiller sig fra OpenGL, og samtidig er den ikke baseret på et specifikt grafik-API, men er et universelt lag, der generelt bruger de samme lavniveau-primitiver som findes i Vulkan, Metal og Direct3D.

WebGPU leverer JavaScript-applikationer med kontrol på lavere niveau over organisering, behandling og transmission af kommandoer til GPU'en, styring af tilknyttede ressourcer, hukommelse, buffere, teksturobjekter og kompilerede grafikskyggere. Denne tilgang giver dig mulighed for at opnå højere ydeevne for grafikapplikationer ved at reducere overheadomkostninger og øge effektiviteten ved at arbejde med GPU'en.

WebGPU gør det muligt at skabe fuldgyldige komplekse 3D-projekter til nettet, der ikke fungerer dårligere end selvstændige programmer, der direkte tilgår Vulkan, Metal eller Direct3D, men ikke er bundet til specifikke platforme. WebGPU giver også yderligere muligheder, når native grafikprogrammer overføres til en webaktiveret form ved brug af WebAssembly-teknologi. Ud over 3D-grafik dækker WebGPU også funktioner relateret til at overføre beregninger til GPU'en og understøtte shader-udvikling. Shaders kan oprettes i WebGPU Shading Language eller specificeres i det mellemliggende SPIR-V-format og derefter oversættes til shader-sprog, der understøttes af aktuelle drivere.

WebGPU bruger separat styring af ressourcer, forberedende arbejde og transmission af kommandoer til GPU'en (i WebGL var ét objekt ansvarlig for alt på én gang). Der er angivet tre separate sammenhænge:
GPUDenhed til at skabe ressourcer såsom teksturer og buffere; GPUCommandEncoder til kodning af individuelle kommandoer, inklusive gengivelses- og beregningstrin; GPUCommandBuffer skal stå i kø til udførelse på GPU'en. Resultatet kan gengives i et område, der er knyttet til et eller flere lærredselementer, eller behandles uden output (f.eks. ved kørsel af computeropgaver). Adskillelse af stadierne gør det lettere at adskille ressourceoprettelse og forberedelsesoperationer i forskellige handlere, der kan køre på forskellige tråde.

Den anden forskel mellem WebGPU og WebGL er en anden tilgang til håndtering af tilstande. WebGPU tilbyder to objekter - GPURenderPipeline og GPUComputePipeline, som giver dig mulighed for at kombinere forskellige tilstande foruddefineret af udvikleren, hvilket gør det muligt for browseren ikke at spilde ressourcer på yderligere arbejde, såsom genkompilering af shaders. Understøttede tilstande omfatter: shaders, vertexbuffer og attributlayouter, sticky gruppelayouts, blanding, dybde og mønstre og outputformater efter gengivelse.

Den tredje funktion ved WebGPU kaldes for det meste bindingsmodellen
minder om de ressourcegrupperingsværktøjer, der findes i Vulkan.
For at gruppere ressourcer sammen giver WebGPU et GPUBindGroup-objekt, som kan associeres med andre lignende objekter til brug i shaders, mens du skriver kommandoer. Oprettelse af sådanne grupper gør det muligt for chaufføren at udføre de nødvendige forberedende handlinger på forhånd og giver browseren mulighed for at ændre ressourcebindinger mellem draw-kald meget hurtigere. Layoutet af ressourcebindinger kan foruddefineres ved hjælp af GPUBindGroupLayout-objektet.

Firefox natlige builds inkluderer nu WebGPU-understøttelse

I Firefox, for at aktivere WebGPU i about:config, er der en indstilling "dom.webgpu.enabled". CanvasContext-gengivelse kræver også, at sammensætning er aktiveret WebRender ("gfx.webrender.all" i about:config), skrevet i Rust og outsourcing af sideindholdsgengivelsesoperationer til GPU'en. WebGPU-implementering er baseret på projektkode
wgpu, skrevet i Rust og i stand til at køre oven på DX12, Vulkan og Metal API'erne på Linux, Android, Windows og macOS (understøttelse af DX11 og OpenGL ES 3.0 er også under udvikling). Sideløbende udvikler Google en anden implementering, som er tilgængelig i Kanariske gren Chromium og er aktiveret ved hjælp af flaget "chrome://flags/#enable-unsafe-webgpu", men fungerer indtil videre kun på macOS og Windows.

Kilde: opennet.ru

Tilføj en kommentar