Ondersteuning voor WebGPU toegevoegd aan de nachtbouwingen van Firefox

In nachtelijke versies van Firefox in de testbuild Canary, en is onlangs overgebracht naar de release. Om het te activeren, moet u naar het gedeelte flags chrome://flags gaan, het vlag 'Filesystem API in Incognito' zoeken via de zoekfunctie en deze inschakelen. Na het opnieuw opstarten van de browser zal de incognito-modus volledig functioneren. ondersteuning voor de specificatie WebGPU, die een programmeerinterface biedt voor de verwerking van 3D-graphics en berekeningen aan de GPU-kant, conceptueel vergelijkbaar met de API Vulkan, Metal en Direct3D 12. De specificatie wordt ontwikkeld door Mozilla, Google, Apple, Microsoft en vertegenwoordigers van de gemeenschap in de werkgroep, opgericht binnen de W3C-organisatie.

Een van de belangrijkste doelen van WebGPU is het creëren van een veilige, gebruiksvriendelijke, draagbare en hoogpresterende programmeerinterface voor gebruik op het web, wat de technologieën en mogelijkheden voor 3D-graphics betreft die worden geleverd door moderne systeemgrafische API's, zoals Direct3D 12 op Windows, Metal op macOS en Vulkan op Linux. Conceptueel verschilt WebGPU van WebGL op ongeveer dezelfde manier als Vulkan verschilt van OpenGL, en het is niet gebaseerd op een specifieke grafische API, maar dient als een universele laag die in het algemeen dezelfde laagdrempelige primitieve gebruikt als die in Vulkan, Metal en Direct3D.

WebGPU biedt JavaScript-toepassingen middelen voor meer laagdrempelige controle over de organisatie, verwerking en overdracht van commando's naar de GPU, het beheer van verbonden middelen, geheugen, buffers, textuurobjecten en gecompileerde grafische shaders. Deze aanpak maakt het mogelijk om een hogere prestaties van grafische toepassingen te bereiken door overhead te verlagen en de efficiëntie van het werken met de GPU te verbeteren.

WebGPU biedt de mogelijkheid om complexe 3D-projecten voor het web te creëren die net zo goed presteren als autonome programma's die rechtstreeks communiceren met Vulkan, Metal of Direct3D, maar die niet aan specifieke platforms zijn gebonden. WebGPU biedt ook extra mogelijkheden bij het porteren van native grafische programma's naar een vorm die kan werken op basis van webtechnologieën, dankzij het gebruik van WebAssembly. Naast 3D-graphics omvat WebGPU ook mogelijkheden voor het uitvoeren van berekeningen aan de GPU-kant en de ondersteuning van shader-ontwikkeling. Shaders urenlang doorgaan (afhankelijk van de wensen en uithoudingsvermogen van de spreker). kunnen worden gemaakt in de WebGPU Shading Language of worden opgegeven in het tussenformaat SPIR-V, waarna ze worden getransleerd naar shaders die worden ondersteund door de huidige stuurprogramma's.

In WebGPU is er een gescheiden beheer van bronnen, voorbereidingswerkzaamheden en het verzenden van commando's naar de GPU (in WebGL was één object verantwoordelijk voor alles tegelijk). Er worden drie aparte contexten aangeboden:
GPUDevice voor het maken van bronnen zoals texturen en buffers; GPUCommandEncoder voor het coderen van afzonderlijke opdrachten, inclusief rendering- en computestadia; GPUCommandBuffer voor het doorsturen naar de uitvoerwachtrij op de GPU. De uitkomst kan worden getekend in een gebied dat is gekoppeld aan een of meerdere canvas-elementen, of worden verwerkt zonder uitvoer (bijvoorbeeld tijdens het uitvoeren van computertaken). De scheiding van stadia vereenvoudigt het splitsen van resource-creatie en voorbereidende bewerkingen in verschillende handlers die in verschillende threads kunnen worden uitgevoerd.

Een tweede verschil tussen WebGPU en WebGL is de andere aanpak voor het verwerken van toestanden. WebGPU biedt twee objecten — GPURenderPipeline en GPUComputePipeline, die het mogelijk maken om verschillende toestanden samen te voegen die vooraf door de ontwikkelaar zijn gedefinieerd, waardoor de browser geen middelen hoeft te besteden aan extra werk, zoals het opnieuw compileren van shaders. Ondersteunde toestanden omvatten: shaders, lay-outs van vertexbuffers en -attributen, lay-outs van gekoppelde groepen, menging, diepte en sjablonen, en uitvoerformaten na rendering.

Een derde kenmerk van WebGPU is het bindingmodel, dat in veel opzichten
herinnerd aan de groepsmiddelen in Vulkan.
Voor het groeperen van middelen in groepen biedt WebGPU het GPUBindGroup-object, dat tijdens het schrijfproces van opdrachten kan worden gekoppeld aan andere gelijksoortige objecten voor gebruik in shaders. Het maken van dergelijke groepen geeft de driver de mogelijkheid om vooraf noodzakelijke voorbereidende stappen uit te voeren, en stelt de browser in staat om veel sneller resource-bindingen te wijzigen tussen renderaanroepen. De lay-out van resource-bindingen kan vooraf worden gedefinieerd met behulp van het GPUBindGroupLayout-object.

Ondersteuning voor WebGPU toegevoegd aan de nachtbouwingen van Firefox

In Firefox is er een instelling in about:config genaamd "dom.webgpu.enabled" om WebGPU in te schakelen. Voor het renderen van CanvasContext is ook het inschakelen van het compositiesysteem vereist WebRender ("gfx.webrender.all" in about:config), geschreven in Rust en die GPU-taken voor het renderen van de inhoud van de pagina naar de GPU verplaatst. De implementatie van WebGPU is gebaseerd op de code van het project
wgpu, geschreven in Rust en in staat om te werken bovenop de API's DX12, Vulkan en Metal op Linux, Android, Windows en macOS (ondersteuning voor DX11 en OpenGL ES 3.0 is ook in ontwikkeling). Tegelijkertijd ontwikkelt Google een andere implementatie, die beschikbaar is in de Canary-tak Chromium wordt ingeschakeld met de vlag «chrome://flags/#enable-unsafe-webgpu», maar werkt voorlopig alleen op macOS en Windows.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster