Sistema de compressió de textures Basis Universal de codi obert de Google i Binomial

Google i Binomi obert textos d'origen Base universal, un còdec per a una compressió eficient de textures i un format de fitxer universal ".basis" associat per distribuir textures basades en imatges i vídeos. El codi d'implementació de referència està escrit en C++ i subministrat amb llicència d'Apache 2.0.

Bases complements universals anteriorment publicat Sistema de compressió de dades Draco 3D i intenta resoldre el problema amb el subministrament de textures per a la GPU. Fins ara, els desenvolupadors s'han limitat a triar entre formats de baix nivell que aconsegueixen un alt rendiment però que són específics de la GPU i ocupen molt espai en disc, i altres formats que aconsegueixen reduir la mida però que no poden competir amb les textures de la GPU en rendiment.

El format Basis Universal us permet aconseguir el rendiment de les textures natives de la GPU, però proporciona un nivell de compressió més alt.
Basis és un format intermedi que proporciona una transcodificació ràpida de textures de GPU a diversos formats de baix nivell per utilitzar-los tant en sistemes d'escriptori com en dispositius mòbils abans d'utilitzar-los. Actualment s'admeten els formats PVRTC1 (4bpp RGB), BC7 (mode 6 RGB), BC1-5, ETC1 i ETC2. S'espera suport futur per al format ASTC (RGB o RGBA) i els modes 4/5 RGBA per a BC7 i 4bpp RGBA per a PVRTC1.

Sistema de compressió de textures Basis Universal de codi obert de Google i Binomial

Les textures en el format base ocupen entre 6 i 8 vegades menys memòria de vídeo i requereixen transferir aproximadament la meitat de dades que les textures típiques basades en el format JPEG i un 10-25% menys que les textures en mode RDO. Per exemple, amb una mida d'imatge JPEG de 891 KB i una textura ETC1 d'1 MB, la mida de les dades en el format de base és de 469 KB en el mode de màxima qualitat. Quan es col·locaven textures a la memòria de vídeo, les textures JPEG i PNG utilitzades a les proves consumien 16 MB de memòria, mentre que les textures en
Es requereixen 2 MB de memòria bàsica per traduir a BC1, PVRTC1 i ETC1, i 4 MB per traduir a BC7.

Sistema de compressió de textures Basis Universal de codi obert de Google i Binomial

El procés de migració de les aplicacions existents a Basis Universal és bastant senzill. N'hi ha prou amb recodificar textures o imatges existents en un nou format mitjançant la utilitat "basisu" proporcionada pel projecte, seleccionant el nivell de qualitat requerit. A continuació, a l'aplicació, abans del codi de representació, cal inicialitzar el transcodificador basisu, que s'encarrega de traduir el format intermedi al format compatible amb la GPU actual. Al mateix temps, les imatges de tota la cadena de processament romanen comprimides, inclosa la càrrega comprimida a la GPU. En lloc de transcodificar de manera preventiva tota la imatge, la GPU descodifica selectivament només les parts necessàries de la imatge.

Admet desar matrius de textures heterogènies (mapes de cub), textures volumètriques, matrius de textures, nivells de mipmap, seqüències de vídeo o fragments de textura arbitraris en un sol fitxer. Per exemple, és possible empaquetar una sèrie d'imatges en un fitxer per crear petits vídeos, o combinar diverses textures utilitzant una paleta comuna per a totes les imatges i desduplicant les plantilles d'imatge típiques. La implementació del codificador Basis Universal admet la codificació multiprocés mitjançant OpenMP. Actualment, el transcodificador només funciona en mode d'un sol fil.

a més disponible Basis Decodificador universal per a navegadors, lliurat en format WebAssembly, que es pot utilitzar en aplicacions web basades en WebGL. En última instància, Google té la intenció de donar suport a Basis Universal en tots els navegadors principals i promocionar-lo com a format de textura portàtil per a WebGL i una especificació futura. WebGPU, que conceptualment és similar a les API Vulkan, Metal i Direct3D 12.

Cal assenyalar que la capacitat d'incrustar vídeo amb el seu processament posterior només al costat de la GPU fa de Basis Universal una solució interessant per crear interfícies d'usuari dinàmiques a WebAssembly i WebGL, que poden mostrar simultàniament centenars de vídeos petits amb una càrrega mínima de CPU. Fins que les instruccions SIMD es puguin utilitzar a WebAssembly amb còdecs tradicionals, aquest nivell de rendiment encara no es pot aconseguir, de manera que el vídeo basat en textures es pot utilitzar en àrees on no s'aplica el vídeo convencional. Actualment s'està preparant codi amb optimitzacions addicionals per al vídeo per a la seva publicació, inclosa la possibilitat d'utilitzar-lo Marcs I i marcs P amb suport de farciment adaptatiu (CR).

Font: opennet.ru

Afegeix comentari