Firefox en Safari krijgen WebGPU-ondersteuning

Mozilla heeft besloten om ondersteuning voor de WebGPU API en WGSL (WebGPU Shading Language) in Firefox in te schakelen. Voor het platform Windows WebGPU-ondersteuning wordt standaard ingeschakeld in Firefox 141, die gepland staat voor 22 juli. Het is de bedoeling dat WebGPU-ondersteuning vervolgens in de daaropvolgende versies wordt ingeschakeld. Linux и macOSen na enige tijd in de platformversie AndroidOm WebGPU handmatig in te schakelen, kunt u de parameters "dom.webgpu.enabled" en "gfx.webrender.all" gebruiken op de about:config-pagina.

In Chrome werd WebGPU-ondersteuning standaard aangeboden in versie 113, uitgebracht in mei 2023. In Safari zal WebGPU-ondersteuning naar verwachting dit najaar standaard worden ingeschakeld (experimentele ondersteuning is beschikbaar sinds november 2021). In Firefox is experimentele WebGPU-ondersteuning al sinds 2020 beschikbaar, maar was deze alleen standaard ingeschakeld in nightly builds van Firefox. De WebGPU-implementatie van Firefox is gebaseerd op de WGPU-projectcode, geschreven in Rust en geschikt voor gebruik met de grafische API's van Direct3D 12, Vulkan, OpenGL en Metal.

WebGPU biedt een vergelijkbare API als Vulkan, Metal en Direct3D 12 voor het uitvoeren van bewerkingen aan de GPU-kant. Naast 3D-graphics biedt WebGPU ook mogelijkheden voor het offloaden van berekeningen naar de GPU-kant en het uitvoeren van shaders. Conceptueel verschilt WebGPU van de oude WebGL-specificatie op vrijwel dezelfde manier als de grafische API van Vulkan verschilt van OpenGL. Tegelijkertijd is WebGPU niet gebaseerd op een specifieke grafische API, maar is het een universele laag die dezelfde low-level primitieven gebruikt als Vulkan, Metal en Direct3D.

Met WebGPU kunnen JavaScript-applicaties de organisatie, verwerking en overdracht van opdrachten naar de GPU regelen en de bijbehorende resources, geheugen, buffers, texture-objecten en gecompileerde grafische shaders beheren. Deze aanpak zorgt voor betere prestaties van grafische applicaties door de overhead te verminderen en de efficiëntie van de GPU te verhogen.

Met WebGPU kunt u platformonafhankelijke, complexe 3D-projecten maken die net zo goed presteren als standalone programma's die direct Vulkan, Metal of Direct3D gebruiken. WebGPU biedt ook extra mogelijkheden voor het porteren van native grafische programma's naar een vorm die in browsers kan worden uitgevoerd, dankzij compilatie naar WebAssembly.

Belangrijkste kenmerken van WebGPU en verschillen met WebGL:

  • Gescheiden beheer van resources, voorbereidend werk en het verzenden van opdrachten naar de GPU (in WebGL verwerkte één object alles). Er zijn drie afzonderlijke contexten beschikbaar: GPUDevice voor het aanmaken van resources zoals texturen en buffers; GPUCommandEncoder voor het coderen van individuele opdrachten, inclusief rendering- en rekenfasen; GPUCommandBuffer voor het verzenden naar de GPU-uitvoeringswachtrij. Het resultaat kan worden weergegeven in een gebied dat is gekoppeld aan een of meer canvaselementen, of stil worden verwerkt (bijvoorbeeld tijdens het uitvoeren van rekentaken). Door de fasen te scheiden, kunt u de resourcecreatie en het voorbereidende werk eenvoudig scheiden in verschillende handlers, die op verschillende threads kunnen worden uitgevoerd.
  • Een andere benadering van statusverwerking. WebGPU biedt twee objecten, GPURenderPipeline en GPUComputePipeline, waarmee verschillende, door de ontwikkelaar vooraf gedefinieerde statussen kunnen worden gecombineerd. Zo voorkomt u dat de browser resources verspilt aan extra werk, zoals het opnieuw compileren van shaders. Ondersteunde statussen zijn onder andere shaders, vertexbuffer- en attribuutlayouts, gekoppelde groepslayouts, blending, diepte en sjablonen, en post-render outputformaten.
  • Een bindingsmodel dat sterk lijkt op de resourcegroeperingsmogelijkheden van Vulkan. Om resources te groeperen, biedt WebGPU een GPUBindGroup-object, dat tijdens het vastleggen van opdrachten aan andere objecten kan worden gekoppeld voor gebruik in shaders. Door dergelijke groepen aan te maken, kan de driver de nodige voorbereidende acties vooraf uitvoeren en kan de browser resourcebindingen veel sneller wijzigen tussen draw-aanroepen. De lay-out van resourcebindingen kan vooraf worden gedefinieerd met behulp van het GPUBindGroupLayout-object.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster