Google und Binomial Open Source Basis Universelles Texturkomprimierungssystem

Google und Binomial geöffnet haben Quelltexte Universelle Basis, ein Codec zur effizienten Texturkomprimierung und ein zugehöriges universelles „.basis“-Dateiformat zur Verteilung bild- und videobasierter Texturen. Der Referenzimplementierungscode ist in C++ geschrieben und geliefert lizenziert unter Apache 2.0.

Basis Universal ergänzt bisher veröffentlicht Draco 3D-Datenkomprimierungssystem und versucht, das Problem mit der Bereitstellung von Texturen für die GPU zu lösen. Bisher waren Entwickler darauf beschränkt, zwischen Low-Level-Formaten zu wählen, die eine hohe Leistung erzielen, aber GPU-spezifisch sind und viel Speicherplatz beanspruchen, und anderen Formaten, die eine Größenreduzierung erreichen, aber hinsichtlich der Leistung nicht mit GPU-Texturen mithalten können.

Mit dem Basis Universal-Format können Sie die Leistung nativer GPU-Texturen erreichen, bieten jedoch eine höhere Komprimierungsstufe.
Basis ist ein Zwischenformat, das eine schnelle Transkodierung von GPU-Texturen in verschiedene Low-Level-Formate zur Verwendung auf Desktop-Systemen und Mobilgeräten vor der Verwendung ermöglicht. Derzeit werden die Formate PVRTC1 (4bpp RGB), BC7 (6 RGB-Modus), BC1-5, ETC1 und ETC2 unterstützt. Zukünftige Unterstützung wird für das ASTC-Format (RGB oder RGBA) und die 4/5 RGBA-Modi für BC7 und 4bpp RGBA für PVRTC1 erwartet.

Google und Binomial Open Source Basis Universelles Texturkomprimierungssystem

Texturen im Basisformat beanspruchen 6–8 Mal weniger Videospeicher und erfordern die Übertragung von etwa halb so vielen Daten wie typische Texturen auf Basis des JPEG-Formats und 10–25 % weniger als Texturen im RDO-Modus. Bei einer JPEG-Bildgröße von 891 KB und einer ETC1-Textur von 1 MB beträgt die Datengröße im Basisformat beispielsweise 469 KB im höchsten Qualitätsmodus. Beim Platzieren von Texturen im Videospeicher verbrauchten die in Tests verwendeten JPEG- und PNG-Texturen 16 MB Speicher, während Texturen in
Basis benötigte 2 MB Speicher für die Übersetzung nach BC1, PVRTC1 und ETC1 und 4 MB für die Übersetzung nach BC7.

Google und Binomial Open Source Basis Universelles Texturkomprimierungssystem

Der Prozess der Migration bestehender Anwendungen auf Basis Universal ist recht einfach. Es reicht aus, vorhandene Texturen oder Bilder mithilfe des vom Projekt bereitgestellten Dienstprogramms „basisu“ in ein neues Format umzukodieren und dabei die erforderliche Qualitätsstufe auszuwählen. Als nächstes müssen Sie in der Anwendung vor dem Rendern des Codes den Basisu-Transcoder initialisieren, der für die Übersetzung des Zwischenformats in das von der aktuellen GPU unterstützte Format verantwortlich ist. Gleichzeitig bleiben Bilder über die gesamte Verarbeitungskette hinweg komprimiert, auch wenn sie in komprimierter Form in die GPU geladen werden. Anstatt präventiv das gesamte Bild zu transkodieren, dekodiert die GPU selektiv nur die notwendigen Teile des Bildes.

Es unterstützt das Speichern heterogener Textur-Arrays (Cubemaps), volumetrischer Texturen, Textur-Arrays, Mipmap-Ebenen, Videosequenzen oder beliebiger Texturfragmente in einer Datei. Es ist beispielsweise möglich, eine Reihe von Bildern in einer Datei zu packen, um kleine Videos zu erstellen, oder mehrere Texturen zu kombinieren, indem eine gemeinsame Palette für alle Bilder verwendet und typische Bildvorlagen dedupliziert werden. Die Implementierung des Basis Universal-Encoders unterstützt Multithread-Codierung mit OpenMP. Der Transcoder funktioniert derzeit nur im Single-Threaded-Modus.

zusätzlich ist verfügbar Basis Universeller Decoder für Browser, geliefert im WebAssembly-Format, der in WebGL-basierten Webanwendungen verwendet werden kann. Letztendlich beabsichtigt Google, Basis Universal in allen gängigen Browsern zu unterstützen und es als tragbares Texturformat für WebGL und eine zukünftige Spezifikation zu fördern WebGPU, konzeptionell ähnlich den APIs Vulkan, Metal und Direct3D 12.

Es wird darauf hingewiesen, dass die Möglichkeit, Videos einzubetten und anschließend nur auf der GPU-Seite verarbeitet zu werden, Basis Universal zu einer interessanten Lösung für die Erstellung dynamischer Benutzeroberflächen auf WebAssembly und WebGL macht, die gleichzeitig Hunderte kleiner Videos mit minimaler CPU-Belastung anzeigen können. Bis SIMD-Anweisungen in WebAssembly mit herkömmlichen Codecs verwendet werden können, ist dieses Leistungsniveau noch nicht erreichbar, sodass texturbasiertes Video in Bereichen verwendet werden kann, in denen herkömmliches Video nicht anwendbar ist. Code mit zusätzlichen Optimierungen für Video wird derzeit zur Veröffentlichung vorbereitet, einschließlich der Möglichkeit zur Nutzung I-Frames und P-Frames mit Adaptive Padding (CR)-Unterstützung.

Source: opennet.ru

Kommentar hinzufügen