Mozilla har beslutat att aktivera stöd för WebGPU API och WGSL (WebGPU Shading Language) i Firefox. För plattformen Windows WebGPU-stöd kommer att aktiveras som standard i Firefox 141, planerat till den 22 juli. WebGPU-stöd planeras sedan att aktiveras i versioner under följande mÄnader: Linux О macOS, och efter en tid i versionen för plattformen AndroidFör att manuellt aktivera WebGPU kan du anvÀnda parametrarna "dom.webgpu.enabled" och "gfx.webrender.all" pÄ sidan about:config.
I Chrome erbjöds WebGPU-stöd som standard i version 113, som slÀpptes i maj 2023. I Safari planeras WebGPU-stöd att aktiveras som standard i höst (experimentellt stöd har funnits tillgÀngligt sedan november 2021). I Firefox har experimentellt WebGPU-stöd funnits sedan 2020, men var endast aktiverat som standard i nattliga versioner av Firefox. Firefox WebGPU-implementering Àr baserad pÄ WGPU-projektkoden, skriven i Rust och kapabel att köras ovanpÄ Direct3D 12, Vulkan, OpenGL och Metal graphics API:er.
WebGPU tillhandahÄller ett liknande API som Vulkan, Metal och Direct3D 12 för att utföra operationer pÄ GPU-sidan. Förutom 3D-grafik tÀcker WebGPU Àven funktioner relaterade till att avlasta berÀkningar till GPU-sidan och exekvera shaders. Konceptuellt skiljer sig WebGPU frÄn den gamla WebGL-specifikationen pÄ ungefÀr samma sÀtt som Vulkans grafik-API skiljer sig frÄn OpenGL. Samtidigt Àr WebGPU inte baserat pÄ ett specifikt grafik-API, utan Àr ett universellt lager som anvÀnder samma lÄgnivÄprimitiver som finns tillgÀngliga i Vulkan, Metal och Direct3D.
WebGPU gör det möjligt för JavaScript-applikationer att styra organisationen, bearbetningen och överföringen av kommandon till GPU:n, och hantera tillhörande resurser, minne, buffertar, texturobjekt och kompilerade grafikshaders. Denna metod möjliggör högre prestanda för grafikapplikationer genom att minska overhead och öka effektiviteten i arbetet med GPU:n.
Med WebGPU kan du skapa plattformsoberoende, komplexa 3D-projekt som fungerar lika bra som fristÄende program som direkt anvÀnder Vulkan, Metal eller Direct3D. WebGPU erbjuder ocksÄ ytterligare funktioner för att porta inbyggda grafikprogram till ett formulÀr som kan köras i webblÀsare, tack vare kompilering till WebAssembly.
Viktiga funktioner i WebGPU och skillnader frÄn WebGL:
- Separat hantering av resurser, förberedande arbete och överföring av kommandon till GPU (i WebGL var ett objekt ansvarigt för allt pÄ en gÄng). Tre separata sammanhang tillhandahÄlls: GPUDenhet för att skapa resurser som texturer och buffertar; GPUCommandEncoder för kodning av individuella kommandon, inklusive renderings- och berÀkningssteg; GPUCommandBuffer ska stÀllas i kö för exekvering pÄ GPU:n. Resultatet kan renderas i ett omrÄde som Àr associerat med ett eller flera canvaselement, eller bearbetas utan utdata (till exempel nÀr du kör berÀkningsuppgifter). Att separera stegen gör det lÀttare att separera resursskapande och förberedelseoperationer i olika hanterare som kan köras pÄ olika trÄdar.
- Ett annat förhÄllningssÀtt till att bearbeta tillstÄnd. WebGPU erbjuder tvÄ objekt - GPURenderPipeline och GPUComputePipeline, som lÄter dig kombinera olika tillstÄnd fördefinierade av utvecklaren, vilket gör att webblÀsaren inte slösar resurser pÄ ytterligare arbete, som att kompilera om shaders. TillstÄnd som stöds inkluderar: skuggningar, vertexbuffert- och attributlayouter, klibbiga grupplayouter, blandning, djup och mönster och utdataformat efter rendering.
- En bindande modell ungefÀr som Vulkans resursgrupperingsfunktioner. För att gruppera resurser tillsammans tillhandahÄller WebGPU ett GPUBindGroup-objekt, som kan associeras med andra liknande objekt för anvÀndning i shaders medan du skriver kommandon. Genom att skapa sÄdana grupper kan föraren utföra de nödvÀndiga förberedande ÄtgÀrderna i förvÀg och gör det möjligt för webblÀsaren att Àndra resursbindningar mellan ritanrop mycket snabbare. Layouten för resursbindningar kan fördefinieras med GPUBindGroupLayout-objektet.
KĂ€lla: opennet.ru
