Les versions nocturnes de Firefox ara inclouen suport WebGPU

В nit Firefox construeix va aparèixer suport d'especificacions WebGPU, que proporciona una interfície de programació per al processament de gràfics en 3D i la informàtica de la GPU, conceptualment similar a l'API Vulkan, Metall и Direct3D 12. L'especificació està sent desenvolupada per Mozilla, Google, Apple, Microsoft i membres de la comunitat grup de treball, creat per l'organització W3C.

L'objectiu clau de WebGPU és proporcionar una interfície de programació segura, fàcil d'utilitzar, portàtil i d'alt rendiment per a la plataforma web per aprofitar les tecnologies i les capacitats de gràfics 3D que ofereixen les API de gràfics del sistema modern, com ara Direct3D 12 a Windows, Metall. a macOS i Vulkan a Linux. Conceptualment, WebGPU difereix de WebGL de la mateixa manera que Vulkan difereix d'OpenGL i, al mateix temps, no es basa en una API de gràfics específica, sinó que és una capa universal que generalment utilitza els mateixos primitius de baix nivell que es troben a Vulkan. Metall i Direct3D.

WebGPU proporciona aplicacions JavaScript amb un control de nivell inferior sobre l'organització, el processament i la transmissió d'ordres a la GPU, gestionant els recursos associats, la memòria, els buffers, els objectes de textura i els ombrejats de gràfics compilats. Aquest enfocament us permet aconseguir un major rendiment per a les aplicacions gràfiques reduint els costos generals i augmentant l'eficiència de treballar amb la GPU.

WebGPU permet crear projectes 3D complexos complets per a la web que no funcionen pitjor que els programes autònoms que accedeixen directament a Vulkan, Metal o Direct3D, però no estan vinculats a plataformes específiques. WebGPU també proporciona capacitats addicionals en portar programes de gràfics nadius a un format habilitat per a la web mitjançant l'ús de la tecnologia WebAssembly. A més dels gràfics en 3D, WebGPU també cobreix les capacitats relacionades amb la descàrrega de càlculs a la GPU i el suport al desenvolupament de shader. Shaders llauna es crearà en el llenguatge d'ombrejat WebGPU o especificat en el format SPIR-V intermedi, i després es traduirà a llenguatges d'ombrejat compatibles amb els controladors actuals.

WebGPU utilitza una gestió separada dels recursos, el treball preparatori i la transmissió d'ordres a la GPU (a WebGL, un objecte era responsable de tot alhora). Es proporcionen tres contextos diferents:
Dispositiu GPU per crear recursos com textures i buffers; GPUCommandEncoder per codificar ordres individuals, incloses les etapes de representació i càlcul; GPUCommandBuffer s'ha de posar a la cua per a l'execució a la GPU. El resultat es pot representar en una àrea associada a un o més elements del llenç o processar-se sense sortida (per exemple, quan s'executen tasques de càlcul). La separació de les etapes facilita la separació de les operacions de creació i preparació de recursos en diferents controladors que es poden executar en diferents fils.

La segona diferència entre WebGPU i WebGL és un enfocament diferent per gestionar els estats. WebGPU ofereix dos objectes: GPURenderPipeline i GPUComputePipeline, que us permeten combinar diversos estats predefinits pel desenvolupador, cosa que permet que el navegador no malgasti recursos en treballs addicionals, com ara recompilar shaders. Els estats admesos inclouen: shaders, buffer de vèrtex i dissenys d'atributs, dissenys de grups enganxosos, combinació, profunditat i patrons i formats de sortida posteriors a la renderització.

La tercera característica de WebGPU s'anomena, en gran part, el model d'enllaç
recorda les eines d'agrupació de recursos presents a Vulkan.
Per agrupar recursos, WebGPU proporciona un objecte GPUBindGroup, que es pot associar amb altres objectes similars per utilitzar-los en shaders mentre escriu ordres. La creació d'aquests grups permet que el controlador realitzi les accions preparatòries necessàries amb antelació i permet al navegador canviar els enllaços de recursos entre trucades de dibuix molt més ràpidament. La disposició dels enllaços de recursos es pot predefinir mitjançant l'objecte GPUBindGroupLayout.

Les versions nocturnes de Firefox ara inclouen suport WebGPU

A Firefox, per habilitar WebGPU a about:config, hi ha una configuració "dom.webgpu.enabled". La representació de CanvasContext també requereix que la composició estigui activada WebRender ("gfx.webrender.all" a about:config), escrit a Rust i subcontractant les operacions de representació del contingut de la pàgina a la GPU. La implementació de WebGPU es basa en el codi del projecte
wgpu, escrit en Rust i capaç d'executar-se a sobre de les API DX12, Vulkan i Metal a Linux, Android, Windows i macOS (també està en desenvolupament el suport de DX11 i OpenGL ES 3.0). Paral·lelament, Google està desenvolupant una altra implementació, que està disponible a Branca canària Chromium i s'habilita mitjançant la marca "chrome://flags/#enable-unsafe-webgpu", però fins ara només funciona a macOS i Windows.

Font: opennet.ru

Afegeix comentari