Le support de WebGPU sera intégré dans Chrome

La société Google a annoncé l'intégration par défaut de l'API graphique WebGPU et du langage de shader WGSL (WebGPU Shading Language) dans la version Chrome 113, prévue pour le 2 mai. WebGPU offre une interface de programmation similaire à Vulkan, Metal et Direct3D 12 pour l'exécution d'opérations côté GPU, telles que le rendu et les calculs, et permet l'utilisation d'un langage de shader pour écrire des programmes s'exécutant sur le GPU. L'implémentation de WebGPU sera d'abord disponible uniquement dans les versions pour ChromeOS, macOS et Windows. Le support de WebGPU pour Linux et Android sera activé ultérieurement.

En plus de Chrome, le support expérimental de WebGPU est testé depuis avril 2020 dans Firefox et depuis novembre 2021 dans Safari. Pour activer WebGPU dans Firefox, il faut définir les indicateurs dom.webgpu.enabled et gfx.webgpu.force-enabled dans about:config. Aucune information n'a encore été communiquée sur les projets d'activation par défaut de WebGPU dans Firefox et Safari. Les implémentations de WebGPU pour Firefox et Chrome sont disponibles sous forme de bibliothèques distinctes — Dawn (C++) et wgpu (Rust), qui peuvent être utilisées pour intégrer le support de WebGPU dans vos applications. Des travaux sont également en cours pour ajouter le support de WebGPU dans des bibliothèques JavaScript populaires qui utilisent initialement WebGL. Par exemple, le support complet de WebGPU a déjà été annoncé dans Babylon.js, et partiel dans Three.js, PlayCanvas et TensorFlow.js.

Conceptuellement, WebGPU diffère de WebGL de la même manière que l'API graphique Vulkan se distingue d'OpenGL, mais WebGPU ne repose pas sur une API graphique spécifique et représente une couche universelle utilisant les mêmes primitives de bas niveau que celles présentes dans Vulkan, Metal et Direct3D. WebGPU fournit aux applications JavaScript des moyens de contrôle de bas niveau sur l'organisation, le traitement et l'envoi de commandes au GPU, la gestion des ressources associées, de la mémoire, des buffers, des objets de texture et des shaders graphiques compilés. Une telle approche permet d'atteindre des performances plus élevées pour les applications graphiques en réduisant les coûts et en améliorant l'efficacité de l'utilisation du GPU.

WebGPU permet de créer pour le Web des projets 3D complexes, fonctionnant aussi bien que des programmes autonomes utilisant directement Vulkan, Metal ou Direct3D, mais sans être liés à des plateformes spécifiques. WebGPU offre également des possibilités supplémentaires pour porter des programmes graphiques natifs sous une forme capable de fonctionner avec des technologies web, grâce à la compilation en WebAssembly. En plus de la 3D, WebGPU englobe également des possibilités liées au déchargement de calculs vers le GPU et à l'exécution de shaders.

Caractéristiques clés de WebGPU :

  • Gestion séparée des ressources, des travaux préparatoires et de l'envoi de commandes au GPU (dans WebGL, un seul objet gérait tout cela). Trois contextes séparés sont fournis : GPUDevice pour la création de ressources telles que des textures et des tampons ; GPUCommandEncoder pour l'encodage de commandes individuelles, y compris les phases de rendu et de calcul ; GPUCommandBuffer pour être mis en file d'attente pour exécution sur le GPU. Le résultat peut être dessiné dans une zone associée à un ou plusieurs éléments canvas, ou traité sans affichage (par exemple, lors de l'exécution de tâches de calcul). La séparation des étapes facilite la dissociation de la création de ressources et des opérations préparatoires dans différents gestionnaires, qui peuvent être exécutés dans des threads différents.
  • Une approche différente dans le traitement des états. Dans WebGPU, deux objets sont proposés — GPURenderPipeline et GPUComputePipeline, permettant de combiner divers états définis à l'avance par le développeur, ce qui permet au navigateur de ne pas consacrer de ressources à des travaux supplémentaires, comme la recompilation des shaders. Parmi les états pris en charge : shaders, dispositions des tampons de vertex et d'attributs, dispositions des groupes attachés, mélange, profondeur et modèles, formats de sortie après rendu.
  • Un modèle d'association, semblable aux mécanismes de regroupement de ressources présents dans Vulkan. Pour regrouper des ressources dans WebGPU, un objet GPUBindGroup est fourni, qui peut être lié à d'autres objets similaires lors de l'enregistrement des commandes pour être utilisé dans les shaders. La création de tels groupes permet au pilote d'effectuer à l'avance les préparatifs nécessaires, et au navigateur de changer les liaisons de ressources beaucoup plus rapidement entre les appels de rendu. La disposition des liaisons de ressources peut être définie à l'avance à l'aide de l'objet GPUBindGroupLayout.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster