Google et Binomial ont ouvert le code du système de compression de textures Basis Universal

Les entreprises Google et Binomial ont ouvert codes sources Basis Universal, un codec pour une compression efficace des textures et son format de fichier universel associé « .basis » pour la distribution de textures basées sur des images et des vidéos. Le code de référence est écrit en C++ et est fourni sous licence Apache 2.0.

Basis Universal complète les systèmes de compression de données 3D Draco publiés précédemment et vise à résoudre le problème de la livraison des textures pour le GPU. Jusqu'à présent, les développeurs étaient limités par un choix entre des formats de bas niveau, permettant d'obtenir des performances élevées mais spécifiques au GPU et occupant beaucoup d'espace sur le disque, et d'autres formats permettant une réduction de taille, mais n'étant pas en mesure de rivaliser avec les textures GPU en termes de performances.

Le format Basis Universal permet d'obtenir des performances de niveau natif pour les textures GPU, tout en garantissant un taux de compression supérieur.
Basis est un format intermédiaire, garantissant une ré-encodage rapide dans divers formats de textures de bas niveau pour GPU, utilisés à la fois sur les systèmes de bureau et les appareils mobiles. Actuellement, la transmission prend en charge les formats PVRTC1 (4bpp RGB), BC7 (mode 6 RGB), BC1-5, ETC1 et ETC2. Une prise en charge supplémentaire du format ASTC (RGB ou RGBA) et des modes 4/5 RGBA pour le format BC7 et 4bpp RGBA pour PVRTC1 est prévue.

Google et Binomial ont ouvert le code du système de compression de textures Basis Universal

Les textures au format basis occupent 6 à 8 fois moins de mémoire vidéo et nécessitent environ deux fois moins de données à transmettre que les textures basées sur JPEG, et 10 à 25 % de moins que les textures en mode RDO. Par exemple, avec une image JPEG de 891 Ko et une texture ETC1 de 1 Mo, la taille des données au format Basis s'élève à 469 Ko en mode haute qualité. Lors de l'utilisation de textures en mémoire vidéo, les textures au format JPEG et PNG ont consommé 16 Mo de mémoire, tandis que pour les textures au format
Basis, il a fallu 2 Mo de mémoire dans le cas de la transmission en BC1, PVRTC1 et ETC1, et 4 Mo dans le cas de la transmission en BC7.

Google et Binomial ont ouvert le code du système de compression de textures Basis Universal

Le processus de conversion des applications existantes vers Basis Universal est assez simple. Il suffit de recoder les textures ou images existantes dans le nouveau format à l'aide de l'outil « basisu » fourni par le projet, en choisissant le niveau de qualité souhaité. Ensuite, dans l'application, avant le code de rendu, il faut initialiser le décodeur basisu, qui est responsable de la conversion du format intermédiaire au format pris en charge par le GPU actuel. Ainsi, les images restent compressées à travers toute la chaîne de traitement, y compris lorsqu'elles sont chargées dans le GPU sous forme compressée. Au lieu de pré-coder l'image entière, le GPU décode sélectivement uniquement les parties de l'image nécessaires.

La sauvegarde d'ensembles de textures hétérogènes (cubemap), de textures volumétriques, de tableaux de textures, de niveaux mipmap, de séquences vidéo ou de morceaux de textures arbitraires dans un seul fichier est supportée. Par exemple, il est possible de regrouper dans un seul fichier une série d'images pour créer de petites vidéos ou de combiner plusieurs textures en utilisant une palette commune pour toutes les images et la dé-duplication de modèles d'images typiques. L'implémentation du codeur Basis Universal prend en charge le codage multithreadé en utilisant OpenMP. Le décodeur fonctionne actuellement uniquement en mode monocœur.

Supplémentaire disponible Le décodeur Basis Universal pour navigateurs, fourni au format WebAssembly, peut être utilisé dans des applications web basées sur WebGL. En fin de compte, Google a l'intention d'atteindre la prise en charge de Basis Universal dans tous les principaux navigateurs et de le promouvoir comme un format de texture portable pour WebGL et la future spécification. WebGPU, conceptuellement similaire aux API Vulkan, Metal et Direct3D 12.

Il est à noter que la possibilité d'intégrer des vidéos avec un traitement ultérieur uniquement du côté GPU rend Basis Universal une solution intéressante pour la création d'interfaces utilisateur dynamiques sur WebAssembly et WebGL, où des centaines de petites vidéos peuvent être affichées simultanément avec une charge minimale sur le CPU. Avant la possibilité d'utiliser des instructions SIMD dans WebAssembly, un tel niveau de performance n'était pas atteignable avec des codecs traditionnels, c'est pourquoi les vidéos basées sur des textures peuvent être utilisées dans des domaines où la vidéo classique est inapplicable. Actuellement, un code avec des optimisations supplémentaires pour la vidéo, incluant la possibilité d'utiliser des images I et des images P avec prise en charge du remplissage adaptatif (CR).

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