El suport de WebGPU s'habilitarà a Chrome

Google va anunciar el suport predeterminat per a l'API de gràfics WebGPU i el llenguatge d'ombrejat WebGPU (WGSL) a la branca de Chrome 113, que està programat per al llançament el 2 de maig. WebGPU proporciona una API semblant a Vulkan, Metal i Direct3D 12 per realitzar operacions del costat de la GPU, com ara la representació i el càlcul, i també us permet utilitzar un llenguatge shader per escriure programes del costat de la GPU. La implementació de WebGPU només s'habilitarà inicialment a les compilacions per a ChromeOS, macOS i Windows. Per a Linux i Android, el suport de WebGPU s'activarà més endavant.

A més de Chrome, el suport experimental de WebGPU s'ha provat des de l'abril de 2020 a Firefox i des de novembre de 2021 a Safari. Per habilitar WebGPU al Firefox, configureu les marques dom.webgpu.enabled i gfx.webgpu.force-enabled a about:config. Encara no hi ha plans per habilitar WebGPU de manera predeterminada a Firefox i Safari. Les implementacions WebGPU desenvolupades per a Firefox i Chrome estan disponibles en forma de biblioteques separades: Dawn (C++) i wgpu (Rust), que podeu utilitzar per integrar el suport de WebGPU a les vostres aplicacions. També s'està treballant per afegir suport WebGPU a les biblioteques populars de JavaScript de manera nativa mitjançant WebGL. Per exemple, el suport complet per a WebGPU ja s'ha anunciat a Babylon.js i el suport parcial a Three.js, PlayCanvas i TensorFlow.js.

Conceptualment, WebGPU difereix de WebGL de la mateixa manera que l'API de gràfics Vulkan difereix d'OpenGL, però WebGPU no es basa en una API gràfica específica, sinó que és una capa de propòsit general que utilitza les mateixes primitives de baix nivell que es troben a Vulkan. Metall i Direct3D. WebGPU proporciona aplicacions JavaScript amb un control de baix nivell sobre l'organització, el processament i la transmissió d'ordres a la GPU, la gestió dels recursos associats, la memòria, les memòries intermèdies, els objectes de textura i els ombrejats de gràfics compilats. Aquest enfocament us permet aconseguir aplicacions de gràfics de major rendiment reduint la sobrecàrrega i augmentant l'eficiència de la GPU.

WebGPU permet crear projectes 3D complexos per a la web que funcionen així com programes autònoms que utilitzen directament Vulkan, Metal o Direct3D, però no estan vinculats a plataformes específiques. La WebGPU també ofereix opcions addicionals per portar programes de gràfics nadius a un formulari habilitat per a la web mitjançant la compilació a WebAssembly. A més dels gràfics en 3D, WebGPU també cobreix les possibilitats associades amb la descàrrega de càlculs al costat de la GPU i l'execució de shaders.

Característiques principals de WebGPU:

  • Gestió separada de recursos, treball preparatori i transmissió d'ordres a la GPU (a WebGL, un objecte era responsable de tot alhora). Es proporcionen tres contextos separats: GPUDevice per crear recursos com ara textures i buffers; GPUCommandEncoder per codificar ordres individuals, incloses les etapes de representació i càlcul; GPUCommandBuffer per passar a la cua d'execució de 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 computacionals). La separació d'etapes facilita la separació de les operacions de creació i subministrament de recursos en diferents controladors que es poden executar en diferents fils.
  • Un enfocament diferent del maneig dels estats. WebGPU proporciona dos objectes: GPURenderPipeline i GPUComputePipeline, que us permeten combinar diferents estats predefinits pel desenvolupador, cosa que fa possible 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, formats de sortida posteriors a la renderització.
  • Un model d'enllaç, com les eines d'agrupació de recursos de Vulkan. Per agrupar els recursos en grups, la WebGPU proporciona un objecte GPUBindGroup, que, en el moment d'escriure les ordres, es pot associar amb altres objectes similars per utilitzar-los en shaders. 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.

Font: opennet.ru

Afegeix comentari