Google dhe Binomial me burim të hapur Basis Sistemi universal i kompresimit të teksturës

Google dhe Binomial hapur tekstet burimore Baza Universale, një kodek për kompresim efikas të teksturës dhe një format skedari universal ".basis" për shpërndarjen e teksteve të bazuara në imazhe dhe video. Kodi i zbatimit të referencës është shkruar në C++ dhe furnizuar licencuar sipas Apache 2.0.

Baza Universal plotëson më parë botuar Sistemi i kompresimit të të dhënave Draco 3D dhe përpiqet të zgjidhë problemin me furnizimin e teksturave për GPU. Deri më tani, zhvilluesit kanë qenë të kufizuar në zgjedhjen midis formateve të nivelit të ulët që arrijnë performancë të lartë, por që janë specifike për GPU-në dhe zënë shumë hapësirë ​​në disk, dhe formate të tjera që arrijnë reduktimin e madhësisë, por nuk mund të konkurrojnë me teksturat e GPU-së në performancë.

Formati Basis Universal ju lejon të arrini performancën e teksteve origjinale të GPU-së, por siguron një nivel më të lartë kompresimi.
Baza është një format i ndërmjetëm që siguron transkodim të shpejtë të teksturave të GPU-së në formate të ndryshme të nivelit të ulët për t'u përdorur si në sistemet desktop ashtu edhe në pajisjet mobile përpara përdorimit. Aktualisht mbështeten formatet PVRTC1 (4bpp RGB), BC7 (6 modalitet RGB), BC1-5, ETC1 dhe ETC2. Mbështetja e ardhshme pritet për formatin ASTC (RGB ose RGBA) dhe mënyrat 4/5 RGBA për BC7 dhe 4bpp RGBA për PVRTC1.

Google dhe Binomial me burim të hapur Basis Sistemi universal i kompresimit të teksturës

Teksturat në formatin bazë zënë 6-8 herë më pak memorie video dhe kërkojnë transferimin e përafërsisht gjysmën e më shumë të dhënave sesa teksturat tipike të bazuara në formatin JPEG dhe 10-25% më pak se teksturat në modalitetin RDO. Për shembull, me një madhësi imazhi JPEG prej 891 KB dhe një teksturë ETC1 prej 1 MB, madhësia e të dhënave në formatin Bazë është 469 KB në modalitetin e cilësisë më të lartë. Kur vendosni teksturat në memorien video, teksturat JPEG dhe PNG të përdorura në teste konsumuan 16 MB memorie, ndërsa teksturat në
Baza kërkon 2 MB memorie për përkthim në BC1, PVRTC1 dhe ETC1, dhe 4 MB për përkthim në BC7.

Google dhe Binomial me burim të hapur Basis Sistemi universal i kompresimit të teksturës

Procesi i migrimit të aplikacioneve ekzistuese në Basis Universal është mjaft i thjeshtë. Mjafton të rikodoni teksturat ose imazhet ekzistuese në një format të ri duke përdorur programin "basisu" të ofruar nga projekti, duke zgjedhur nivelin e kërkuar të cilësisë. Më pas, në aplikacion, përpara kodit të interpretimit, duhet të inicializoni transkoderin baseu, i cili është përgjegjës për përkthimin e formatit të ndërmjetëm në formatin e mbështetur nga GPU-ja aktuale. Në të njëjtën kohë, imazhet në të gjithë zinxhirin e përpunimit mbeten të ngjeshur, duke përfshirë ngarkimin në formë të ngjeshur në GPU. Në vend që të transkodojë paraprakisht të gjithë imazhin, GPU deshifron në mënyrë selektive vetëm pjesët e nevojshme të imazhit.

Mbështet ruajtjen e vargjeve heterogjene të teksturave (kubemaps), teksturave vëllimore, vargjeve të teksturave, niveleve mipmap, sekuencave video ose fragmenteve të teksturës arbitrare në një skedar. Për shembull, është e mundur të paketoni një seri imazhesh në një skedar për të krijuar video të vogla ose të kombinoni disa tekstura duke përdorur një gamë të përbashkët për të gjitha imazhet dhe duke hequr shabllonet tipike të imazheve. Zbatimi i koduesit Basis Universal mbështet kodimin me shumë fije duke përdorur OpenMP. Transkoderi aktualisht funksionon vetëm në modalitetin me një fije.

Përveç kësaj në dispozicion Baza Dekoder universal për shfletues, i dorëzuar në formatin WebAssembly, i cili mund të përdoret në aplikacionet web të bazuara në WebGL. Në fund të fundit, Google synon të mbështesë Basis Universal në të gjithë shfletuesit kryesorë dhe ta promovojë atë si një format teksture portative për WebGL dhe një specifikim të ardhshëm WebGPU, konceptualisht i ngjashëm me API-të Vulkan, Metal dhe Direct3D 12.

Vihet re se aftësia për të futur videon me përpunimin e saj të mëvonshëm vetëm në anën e GPU-së e bën Basis Universal një zgjidhje interesante për krijimin e ndërfaqeve dinamike të përdoruesit në WebAssembly dhe WebGL, të cilat mund të shfaqin njëkohësisht qindra video të vogla me ngarkesë minimale të CPU. Derisa udhëzimet SIMD të mund të përdoren në WebAssembly me kodekët tradicionalë, ky nivel i performancës nuk është ende i arritshëm, kështu që videot e bazuara në teksturë mund të përdoren në zona ku videoja konvencionale nuk është e zbatueshme. Kodi me optimizime shtesë për video po përgatitet aktualisht për publikim, duke përfshirë mundësinë e përdorimit I-korniza dhe P-korniza me mbështetje për mbushje adaptive (CR).

Burimi: opennet.ru

Shto një koment