Google dhe Binomial hapën kodin e sistemit të kompresimit të teksturave Basis Universal

Kompania Google dhe Binomial u hapën tekste të burimeve Basis Universal, një kodek për kompresimin efikas të teksturave dhe formatin universal të skedarëve " .basis" për shpërndarjen e teksturave të bazuara në imazhe dhe video. Kodi i implementimit referues është shkruar në gjuhën C++ dhe ofrohet nën licencën Apache 2.0.

Basis Universal kompleton sistemin e mëparshëm të kompresimit të të dhënave 3D Draco dhe përpiqet të zgjidhë problemin e shpërndarjes së teksturave për GPU. Deri tani, zhvilluesit ishin të kufizuar në zgjedhjen midis formateve të ulëta që ofrojnë performancë të lartë, por janë specifike për GPU dhe zënë shumë hapësirë në disq, dhe formateve të tjera që mundësojnë uljen e madhësisë, por nuk mund të konkurrojnë me teksturat GPU në performancë.

Formati Basis Universal lejon arritjen e performancës së nivelit natyror për teksturat GPU, por siguron një nivel më të lartë kompresimi.
Basis është një format ndërmjetës, i cili para aplikimit siguron rikodimin e shpejtë në formate të ndryshme të ulëta të teksturave GPU që përdoren si në sistemet desktop, ashtu edhe në pajisjet mobile. Aktualisht, mbështetet përkthimi në formatet PVRTC1 (4bpp RGB), BC7 (modaliteti 6 RGB), BC1-5, ETC1, dhe ETC2. Në të ardhmen pritet mbështetje për formatin ASTC (RGB ose RGBA) dhe modalitetet 4/5 RGBA për formatin BC7 dhe 4bpp RGBA për PVRTC1.

Google dhe Binomial hapën kodin e sistemit të kompresimit të teksturave Basis Universal

Teksturat në formatin basis zënë 6-8 herë më pak memorie video dhe kërkojnë të kalojnë përafërsisht gjysmën e të dhënave më shumë se teksturat tipike të bazuara në formatin JPEG dhe 10-25% më pak se teksturat në modalitetin RDO. Për shembull, me një madhësi të imazhit JPEG prej 891 Kb, dhe teksturën ETC1 në 1 Mb, madhësia e të dhënave në formatin Basis arrin në 469 Kb në modalitetin e cilësisë më të lartë. Gjatë ruajtjes së teksturave në memorie video, teksturat e përdorura në testet JPEG dhe PNG shpenzuan 16 Mb memorie, ndërsa për teksturat në formatin
Basis nevojiteshin 2 Mb memorie në rastin e përkthimit në BC1, PVRTC1 dhe ETC1, dhe 4 Mb në rastin e përkthimit në BC7.

Google dhe Binomial hapën kodin e sistemit të kompresimit të teksturave Basis Universal

Procesi i transferimit të aplikacioneve ekzistuese në Basis Universal është mjaft i thjeshtë. Mjafton të rikodoni teksturat ose imazhet ekzistuese në formatin e ri duke përdorur mjetin e ofruar nga projekti "basisu", duke zgjedhur nivelin e nevojshëm të cilësisë. Më pas, në aplikacion para kodit të renderimit duhet të inicializohet rikoduesi basisu, i cili është përgjegjës për përkthimin e formatit ndërmjetës në formatin e mbështetur nga GPU aktual. Në këtë proces, imazhet në të gjithë zinxhirin e përpunimit mbesin të kompresuara, duke përfshirë ngarkimin e tyre në një formë të kompresuar në GPU. Në vend që të rikodoni paraprakisht të gjithë imazhin, GPU dekodon selektivisht vetëm pjesët e nevojshme të imazhit.

Mbështetet ruajtja në një skedë të vetme të grupeve të ndryshme të teksturave (cubemap), teksturave volumetrike, grupeve të teksturave, niveleve mipmap, seri videosh ose pjesë të rastësishme të teksturave. Për shembull, është e mundur të paketohet në një skedë një seri imazhesh për krijimin e videove të vogla ose të bashkohen disa tekstura duke përdorur një paletë të përbashkët për të gjitha imazhet dhe deduplimin e modeleve të zakonshme të imazheve. Implementimi i koduesit Basis Universal mbështet kodimin me shumë thirrje duke përdorur OpenMP. Rikoduesi aktualisht funksionon vetëm në modalitet të vetëm.

Shtesë disponibel dekoduesi Basis Universal për shfletuesit, i ofruar në formatin WebAssembly, i cili mund të përdoret në aplikacionet web të bazuara në WebGL. Në fund, Google synon të arrijë mbështetje për Basis Universal në të gjitha shfletuesit kryesorë dhe të promovojë atë si një format të transfertë për tekstura për WebGL dhe specifikimin e ardhshëm WebGPU, konceptualisht i ngjashëm me API Vulkan, Metal dhe Direct3D 12.

VĂ«rehet se mundĂ«sia e integrimit tĂ« videove me pĂ«rpunimin e saj tĂ« mĂ«tejshĂ«m vetĂ«m nga GPU e bĂ«n Basis Universal njĂ« zgjidhje tĂ«rheqĂ«se pĂ«r krijimin e ndĂ«rfaqeve dinamike tĂ« pĂ«rdoruesit nĂ« WebAssembly dhe WebGL, nĂ« tĂ« cilat mund tĂ« reflektohen njĂ«kohĂ«sisht qindra video tĂ« vogla me ngarkesĂ« minimale nĂ« CPU. PĂ«rpara pĂ«rdorimit tĂ« instrukcioneve SIMD nĂ« WebAssembly, njĂ« nivel i tillĂ« performancĂ«s ende nuk Ă«shtĂ« arritur me kodeka tradicionale, prandaj videoja e bazuar nĂ« tekstura mund tĂ« pĂ«rdoret nĂ« fusha ku videoja e zakonshme nuk Ă«shtĂ« e pĂ«rdorshme. Aktualisht, Ă«shtĂ« duke u pĂ«rgatitur pĂ«r publikim kodi me optimizime shtesĂ« pĂ«r videon, duke pĂ«rfshirĂ« mundĂ«sinĂ« e pĂ«rdorimit I- ĐșаЮра dhe P-ĐșаЮра me mbĂ«shtetje pĂ«r mbushjen adaptuese (CR).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster