Chrome aura déjà le support WebGPU et sera activé par défaut

WebGPU Chrome

Après des années de développement, l'équipe Chrome lance WebGPU

Il y a quelques jours, Google a annoncé la prise en charge par défaut de l'API graphique WebGPU et du langage d'ombrage WebGPU (WGSL) dans Chrome 113 , dont la sortie est prévue pour le 2 mai.

Pour ceux qui ne connaissent pas WebGPU, il fournit une API similaire à Vulkan, Metal et Direct3D 12 pour effectuer des opérations côté GPU telles que le traitement et le calcul, et vous permet également d'utiliser un langage de shading pour écrire des programmes côté GPU.

À propos de WebGPU

Conceptuellement, WebGPU diffère de WebGL de la même manière que l'API graphique Vulkan diffère d'OpenGL, mais WebGPU ne repose sur aucune API graphique spécifique. Il s'agit plutôt d'une couche générique utilisant les mêmes primitives de bas niveau que Vulkan, Metal et Direct3D. WebGPU offre aux applications JavaScript un contrôle précis de l'organisation, du traitement et de la transmission des commandes au GPU, ainsi que de la gestion des ressources associées : mémoire, tampons, objets texture et shaders graphiques compilés. Cette approche permet d'obtenir des applications graphiques plus performantes en réduisant la surcharge et en optimisant l'efficacité du GPU.

WebGPU permet de créer des projets 3D complexes pour le Web, aussi performants que des applications autonomes utilisant Vulkan, Metal ou Direct3D, sans être limité à des plateformes spécifiques. WebGPU offre également des options supplémentaires pour adapter des programmes graphiques natifs au Web en les compilant en WebAssembly. Au-delà des graphismes 3D, WebGPU couvre aussi les possibilités liées au déchargement des calculs sur le GPU et à l'exécution de shaders.

Parmi les fonctionnalités clés de WebGPU, nous pouvons souligner les suivantes :

  • Gestion séparée des ressources, travaux préparatoires et transmission des commandes au GPU (dans WebGL, un objet était responsable de tout à la fois). Trois contextes distincts sont fournis : GPUDevice pour créer des ressources telles que des textures et des tampons ; GPUCommandEncoder pour coder les commandes individuelles, y compris les étapes de traitement et de calcul ; GPUCommandBuffer à transmettre à la file d'attente d'exécution du GPU.
    Le résultat peut être rendu dans une zone associée à un ou plusieurs éléments de canevas, ou rendu sans sortie (par exemple, lors de l'exécution de tâches de calcul). La mise en scène facilite la séparation des opérations de création et de provisionnement des ressources dans différents contrôleurs pouvant s'exécuter sur différents threads.
  • Une approche différente de la gestion des états. WebGPU fournit deux objets, GPURenderPipeline et GPUComputePipeline, qui vous permettent de combiner différents états prédéfinis par le développeur, permettant au navigateur de ne pas gaspiller de ressources en travaux supplémentaires, tels que la recompilation des shaders. Les états pris en charge incluent : les shaders, les mises en page de tampon de vertex et d'attributs, les mises en page de groupe fixes, le mélange, la profondeur et les motifs, les formats de sortie post-rendu.
  • Un modèle contraignant, un peu comme les outils de mutualisation des ressources de Vulkan. Pour regrouper les ressources en groupes, WebGPU fournit un objet GPUBindGroup qui peut être lié à d'autres objets similaires pour une utilisation dans les shaders lors de l'enregistrement de la commande.
    La création de tels groupes permet au contrôleur d'effectuer les actions préparatoires nécessaires à l'avance et permet au navigateur de basculer beaucoup plus rapidement les liaisons de ressources entre les appels de dessin. La disposition des liaisons de ressources peut être prédéfinie à l'aide de l'objet GPUBindGroupLayout.

Outre Chrome, la prise en charge expérimentale de WebGPU a été testée dans Firefox depuis avril 2020 et dans Safari depuis novembre 2021. Pour activer WebGPU dans Firefox, vous devez configurer les options `dom.webgpu.enabled` et `gfx.webgpu.force-enabled` dans `about:config`.

Il n'est actuellement pas prévu d'activer WebGPU par défaut dans Firefox et Safari. Les implémentations WebGPU développées pour Firefox et Chrome sont disponibles sous forme de bibliothèques distinctes : Dawn (C++) et wgpu (Rust), que vous pouvez utiliser pour intégrer la prise en charge de WebGPU dans vos applications.

Il convient également de noter que des travaux sont en cours pour ajouter la prise en charge de WebGPU aux bibliothèques JavaScript populaires utilisant nativement WebGL. Par exemple, la prise en charge complète de WebGPU est déjà déclarée dans Babylon.js et partielle dans Three.js , PlayCanvas et TensorFlow.js.

L'implémentation WebGPU sera initialement activée uniquement dans les versions pour ChromeOS, macOS et Windows, tandis que pour Linux et Android, la prise en charge de WebGPU sera activée ultérieurement.

Enfin, si vous souhaitez en savoir plus, vous trouverez les détails en suivant ce lien.


Ajouter comme source préférée dans Google