Chrome 113 aktiverar WebGPU, ett modernt grafik-API med låg overhead för webben.
Google meddelade idag att de kommer att aktivera WebGPU-stöd i sin standard Chrome-webbläsare från och med version 113, som för närvarande är i beta. WebGPU, under utveckling sedan 2017, är en nästa generations grafik-API som syftar till att dra fördel av låga overhead-API:er som Microsoft Direct3D 12, Apple Metal och Vulkan i webbläsare och andra applikationer.
WebGPU-stöd har varit tillgängligt under en tid, men är inaktiverat som standard i Chrome eftersom API:et inte har slutförts och saker kan gå sönder från uppdatering till uppdatering. Google säger att både Mozilla och Apple så småningom kommer att stödja WebGPU i Firefox och Safari, och webbläsare som Microsoft Edge och Opera som förlitar sig på webbläsarmotorn Chromium skulle möjligen kunna aktivera det, som Google gjorde.
Chrome 113 stöder WebGPU på Windows, macOS och ChromeOS till att börja med, medan ”stöd för andra plattformar” som Linux och Android ”kommer senare i år.” Den här versionen av webbläsaren bör bli tillgänglig för alla Chrome-användare någon gång i maj.
Support i Chrome är ett stort steg framåt för alla nya standarder, oavsett om det är ett nytt eller uppdaterat API, bildformat eller videocodec. Enligt StatCounter står Chrome själv för ungefär två tredjedelar av webbläsarens marknadsandel över hela världen, och nästan 80 procent av den totala webbläsarens marknadsandel om man räknar med andra Chromium-baserade webbläsare. När Safari och Firefox lägger till stöd kommer praktiskt taget alla webbläsare runt om i världen att kunna köra WebGPU-kod, så det är värt att kortfattat förklara vad WebGPU är och varför det finns.
Vad är webb-GPU?
WebGPU är typ efterföljaren till WebGL , ett mycket äldre API som låter dig visa OpenGL-baserad grafik i din webbläsare utan att kräva ytterligare tredjeparts plugins som Adobe Flash. Även om WebGL var revolutionerande när det tillkännagavs 2009, lider det idag av många av samma problem som OpenGL: det drar inte full nytta av moderna GPU:er, det kan förlora prestanda på grund av förarens overhead, och det har bara begränsade möjligheter. och klumpigt stöd för GPU-beräkningsbelastningar.
”Medan WebGL i första hand är designad för att rita bilder, men kan användas igen (med större ansträngning) för att utföra andra typer av beräkningar, har WebGPU förstklassigt stöd för att utföra allmänna beräkningar på GPU:n,” står det i ett utkast till dokument som förklarar varför det finns WebGPU . Det nya API:et kommer att förbättra grafiken i miljöer som Babylon.js och spelmotorer som Unity; kommer att stödja GPU-accelererade arbetsbelastningar som de som används för maskininlärning och artificiell intelligens; och kan göra det lättare för foto- och videowebbappar (bland andra) att dra fördel av den GPU-acceleration som inbyggda appar drar nytta av.
WebGPU utvecklas av en arbetsgrupp som inkluderar representanter från Google, Microsoft, Apple, Mozilla, Intel och många andra företag, och som ett resultat har API:et utformats för att vara så allmänt kompatibelt som möjligt. WebGPU är inte en direkt implementering av något befintligt grafik-API, utan är ett inbyggt API som sitter ovanpå och interagerar med Direct3D 12, Metal och Vulkan. Den här förklararen från Surma, en Shopify-ingenjör och tidigare Google-anställd, sammanfattar det bra (vår betoning):
”Medan WebGL bara är ett tunt omslag runt OpenGL, har WebGPU tagit ett annat tillvägagångssätt. Den introducerar sina egna abstraktioner och återspeglar inte direkt någon av dessa inbyggda API:er. Detta beror dels på att inget enskilt API är tillgängligt på alla system, men också på att många koncept (som t.ex. extremt låg nivå minneshantering) inte är idiomatiska för webb-API. Istället designades WebGPU:n för att kännas ”webblik” och bekvämt sitta ovanpå någon av de inbyggda grafik-API:erna, och abstrahera bort deras egenheter. Det är standardiserat i W3C och alla stora webbläsarleverantörer sitter runt bordet.”
Detta har fördelen att WebGPU-kod blir väldigt portabel – skriv WebGPU-kod och så länge användarna har hårdvara och en webbläsare som stödjer det, bör du få samma resultat på ett Windows-system med Direct3D och på en Android-telefon med Vulkan. Och det undviker en del av hacken som får WebGL att fungera – till exempel använder WebGL på Windows och macOS inte ens OpenGL direkt, utan använder istället en översättare som heter ANGLE, som istället förvandlar OpenGL API-anrop till Direct3D och Metal API-anrop . Med WebGPU finns det inget behov av att starta ett helt separat projekt för att skriva en långsam eller dåligt underhållen implementering av OpenGL.
WebGPU har också sitt eget shader-språk (WGSL), som Chrome-teamet fortfarande arbetar med att stödja – dagens tillkännagivande säger att Google ”planerar att ge djupare åtkomst till shader-kärnor” via WGSL i en framtida release. Liksom resten av WebGPU API är WGSL plattformsoberoende och översätts enkelt till det föredragna shader-språket för vilket operativsystem du än använder det på.
Slutligen, trots ordet ”nätverk” i namnet, är WebGPU API inte begränsat till webbläsare. Wgpu-projektet är Rusts version av WebGPU som låter dig skriva WebGPU-applikationer och köra dem utanför webbläsare.
Om du vill experimentera med WebGPU nu finns Chrome 113 beta tillgänglig här . Ett GitHub-förråd med kodexempel finns här , och det finns officiell dokumentation för både WebGPU och WGSL .
Lämna ett svar