La prise en charge de WebGPU a été ajoutée aux versions nocturnes de Firefox.

Dans nocturnes versions de Firefox est désormais support de la spécification WebGPU, fournissant une interface de programmation pour le traitement des graphiques 3D et des calculs du côté GPU, conceptuellement similaire à l'API Vulkan, Metal et Direct3D 12. La spécification est développée par Mozilla, Google, Apple, Microsoft et des représentants de la communauté dans le groupe de travail, créé au sein de l'organisation W3C.

L'objectif clé de WebGPU est de créer une interface de programmation sécurisée, conviviale, portable et haute performance pour être utilisée dans les technologies et capacités graphiques 3D de la plateforme Web, proposées par les API graphiques système modernes tels que Direct3D 12 sous Windows, Metal sous macOS et Vulkan sous Linux. Conceptuellement, WebGPU diffère de WebGL à peu près autant que Vulkan diffère d'OpenGL, et ne repose pas sur une API graphique spécifique, mais représente un intermédiaire universel, utilisant de manière générale les mêmes primitives de bas niveau que celles disponibles dans Vulkan, Metal et Direct3D.

WebGPU fournit aux applications JavaScript des moyens de contrôle de bas niveau sur l'organisation, le traitement et la transmission des commandes au GPU, la gestion des ressources associées, de la mémoire, des tampons, des objets de texture et des shaders graphiques compilés. Cette approche permet d'atteindre de meilleures performances pour les applications graphiques en réduisant les frais généraux et en améliorant l'efficacité des interactions avec le GPU.

WebGPU permet de créer pour le Web des projets 3D complexes à part entière, fonctionnant aussi bien que des programmes autonomes communiquant directement avec Vulkan, Metal ou Direct3D, mais non liés à des plateformes spécifiques. WebGPU offre également des possibilités supplémentaires pour le portage de programmes graphiques natifs sous une forme capable de fonctionner sur des technologies Web, grâce à l'utilisation de WebAssembly. En plus des graphiques 3D, WebGPU couvre également les capacités liées à l'externalisation des calculs vers le GPU et au support du développement de shaders. contiennent Les shaders peuvent être créés dans le langage de shading WebGPU ou spécifiés dans un format intermédiaire SPIR-V, puis traduits en langages de shader pris en charge par les pilotes actuels.

WebGPU applique une gestion distincte des ressources, des travaux préparatoires et de la transmission des commandes au GPU (dans WebGL, un seul objet était responsable de tout en même temps). Trois contextes séparés sont fournis :
GPUDevice pour créer des ressources telles que des textures et des tampons; GPUCommandEncoder pour encoder des commandes individuelles, y compris les étapes de rendu et de calcul; GPUCommandBuffer pour être mis en file d'attente pour exécution sur le GPU. Le résultat peut être rendu dans une zone liée à un ou plusieurs éléments canvas, ou traité sans sortie (par exemple, lors de l'exécution de tâches de calcul). La séparation des étapes facilite la répartition de la création des ressources et des opérations préparatoires dans différents gestionnaires, qui peuvent être exécutés dans différents threads.

La deuxième différence entre WebGPU et WebGL est l'approche différente pour le traitement des états. WebGPU propose deux objets — GPURenderPipeline et GPUComputePipeline, permettant de combiner différents états, déjà définis par le développeur, ce qui permet au navigateur de ne pas gaspiller des ressources pour effectuer un travail supplémentaire, comme la recompilation de shaders. Les états pris en charge comprennent : les shaders, les dispositions des tampons de sommets et d'attributs, les dispositions des groupes associés, le mélange, la profondeur et les modèles, ainsi que les formats de sortie après rendu.

La troisième caractéristique de WebGPU est appelée modèle de liaison, qui ressemble beaucoup
aux moyens de regroupement des ressources présents dans Vulkan.
Pour regrouper les ressources dans WebGPU, il existe un objet GPUBindGroup, 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 actions préparatoires nécessaires, et au navigateur de changer considérablement plus rapidement les liaisons des ressources entre les appels de rendu. La disposition des liaisons de ressources peut être définie à l'avance à l'aide de l'objet GPUBindGroupLayout.

La prise en charge de WebGPU a été ajoutée aux versions nocturnes de Firefox.

Dans Firefox, pour activer WebGPU dans about:config, il existe un paramètre « dom.webgpu.enabled ». Pour le rendu de CanvasContext, l'activation du système de composition est également nécessaire WebRender (« gfx.webrender.all » dans about:config), écrit en Rust et déchargeant vers le GPU les opérations de rendu du contenu de la page. L'implémentation de WebGPU est basée sur le code du projet
wgpu, écrit en Rust et capable de fonctionner sur les API DX12, Vulkan et Metal sous Linux, Android, Windows et macOS (le support pour DX11 et OpenGL ES 3.0 est également en cours de développement). Parallèlement, une autre implémentation est développée par Google, disponible dans la branche Canary. Chromium s'active via le drapeau «chrome://flags/#enable-unsafe-webgpu», mais fonctionne pour le moment uniquement sur macOS et Windows.

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