Google et Binomial ont publié le code source de Basis

base

Récemment, Google et Binomial ont annoncé avoir ouvert le code source de Base universelle, lequel est un codec pour compresser efficacement les textures et le format de fichier .basis associé pour diffuser des textures basées sur des images et des vidéos. Le code d'implémentation de référence est écrit en C ++ et est fourni sous la licence Apache 2.0.

Base universelle complète le système de compression de données 3D Draco et vous essayez de résoudre le problème avec la livraison de textures pour GPU.

Jusqu'à présent, les développeurs ont été limités par le choix entre des formats bas niveau qui permettent des performances élevées, mais spécifiques au GPU et qui prennent beaucoup d'espace disque, et d'autres formats qui permettent de réduire la taille, mais non ils peuvent rivaliser avec des textures GPU dans les performances.

À propos de la base

Le format universel de base permet d'atteindre les niveaux de performance des textures GPU natives, mais fournit un niveau de compression plus élevé.

La base est un format intermédiaire qui, avant utilisation, fournit un transcodage rapide vers divers formats de texture GPU de bas niveau qui sont utilisés à la fois dans les systèmes de bureau et les appareils mobiles.

Actuellement, le streaming est pris en charge dans les formats PVRTC1 (4bpp RVB), BC7 (mode 6 RVB), BC1-5, ETC1 et ETC2. À l'avenir, les modes A devraient être pris en chargeSTC (RGB ou RGBA) et 4/5 RGBA pour BC7 et 4bpp RGBA pour PVRTC1.

Les textures au format occupent 6 à 8 fois moins de mémoire vidéo et elles nécessitent environ deux fois moins de données que les textures typiques basées sur le format JPEG et 10-25% de moins que les textures en mode RDO.

Par exemple, avec une taille d'image JPEG de 891 Ko et des textures ETC1 de 1 Mo, la taille des données au format de base est de 469 Ko dans le mode de qualité la plus élevée.

Lors du placement des textures dans la mémoire vidéo, les textures utilisées dans les tests aux formats JPEG et PNG consommaient 16 Mo de mémoire, tandis que les textures au format de base nécessitaient 2 Mo de mémoire dans le cas d'une transmission en BC1, PVRTC1 et ETC1, et 4 Mo en cas de transmission en AC7.

Textures universelles binomiales

Le processus de conversion des applications existantes vers Basis Universal est assez simple:

Recodez simplement les textures ou images existantes dans un nouveau format à l'aide de l'utilitaire "baseu" fourni par le projet, en sélectionnant le niveau de qualité requis.

De plus, dans l'application, avant le code, l'encodeur doit être initialisé, qui est responsable de la traduction du format intermédiaire vers le format compatible GPU actuel.

En même temps, les images de toute la chaîne de traitement restent compressées, y compris le téléchargement sous forme compressée sur le GPU. Plutôt que de recoder de manière proactive l'image entière, le GPU décode de manière sélective uniquement les parties nécessaires de l'image.

Prend en charge l'enregistrement dans un seul fichier de tableaux de texture (carte de cube), textures en vrac, tableaux de texture, niveaux de mipmap, flux vidéo ou extraits de texture arbitraires.

Par exemple, il est possible de regrouper dans un seul fichier de 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.

Google veut que la base devienne un standard

L'implémentation de l'encodeur Basis Universal prend en charge l'encodage multithread à l'aide d'OpenMP. Le recodeur ne fonctionne qu'en mode single thread.

En outre, le décodeur de navigateur Basis Universal est disponible au format Web, qui peut être utilisé dans les applications Web basées sur WebGL.

En fin de compte, Google a l'intention de prendre en charge Basis Universal dans tous les principaux navigateurs et d'en faire la promotion comme format de texture portable pour WebGL et la future spécification WebGPU, conceptuellement similaire à l'API Vulkan, Metal et Direct3D 12.

On observe que la possibilité d'intégrer la vidéo avec son post-traitement uniquement côté GPU fait de Basis Universal une solution intéressante pour créer des interfaces utilisateur dynamiques dans WebAssembly et WebGL, qui peuvent simultanément refléter des centaines de petites vidéos avec une charge minimale sur le processeur.

Même la possibilité d'utiliser les instructions SIMD dans WebAssembly avec des codecs traditionnels, un tel niveau de performance n'est pas encore réalisable, de sorte que la vidéo basée sur la texture peut être utilisée dans les zones où la vidéo normale n'est pas applicable.

source: https://opensource.googleblog.com/


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.