Google i Binomial open source Basis Univerzalni sustav kompresije tekstura

Google i binom otvorio izvorni tekstovi Univerzalna osnova, kodek za učinkovito sažimanje teksture i povezani univerzalni ".basis" format datoteke za distribuciju tekstura temeljenih na slikama i videu. Referentni implementacijski kod napisan je u C++ i isporučuje se licenciran pod Apache 2.0.

Basis Universal nadopunjuje prethodno Objavljeno Draco 3D sustav za kompresiju podataka i pokušava riješiti problem s isporukom tekstura za GPU. Do sada su programeri bili ograničeni na izbor između formata niske razine koji postižu visoke performanse, ali su specifični za GPU i zauzimaju puno prostora na disku, i drugih formata koji postižu smanjenje veličine, ali se ne mogu natjecati s GPU teksturama u performansama.

Format Basis Universal omogućuje postizanje performansi izvornih GPU tekstura, ali pruža višu razinu kompresije.
Basis je srednji format koji omogućuje brzo transkodiranje GPU tekstura u različite formate niske razine za korištenje na stolnim sustavima i mobilnim uređajima prije upotrebe. Trenutno su podržani formati PVRTC1 (4bpp RGB), BC7 (6 RGB mod), BC1-5, ETC1 i ETC2. Buduća podrška se očekuje za ASTC format (RGB ili RGBA) i 4/5 RGBA modove za BC7 i 4bpp RGBA za PVRTC1.

Google i Binomial open source Basis Univerzalni sustav kompresije tekstura

Teksture u osnovnom formatu zauzimaju 6-8 puta manje video memorije i zahtijevaju prijenos približno upola manje podataka od tipičnih tekstura temeljenih na JPEG formatu i 10-25% manje od tekstura u RDO modu. Na primjer, s veličinom JPEG slike od 891 KB i ETC1 teksturom od 1 MB, veličina podataka u formatu Basis je 469 KB u načinu rada najviše kvalitete. Prilikom postavljanja tekstura u video memoriju, JPEG i PNG teksture korištene u testovima zauzimale su 16 MB memorije, dok su teksture u
Basis je zahtijevao 2 MB memorije za prijevod na BC1, PVRTC1 i ETC1, te 4 MB za prijevod na BC7.

Google i Binomial open source Basis Univerzalni sustav kompresije tekstura

Proces migracije postojećih aplikacija na Basis Universal vrlo je jednostavan. Dovoljno je rekodirati postojeće teksture ili slike u novi format pomoću uslužnog programa "basisu" koji pruža projekt, odabirom potrebne razine kvalitete. Zatim, u aplikaciji, prije koda za renderiranje, trebate inicijalizirati basisu transkoder, koji je odgovoran za prevođenje srednjeg formata u format koji podržava trenutni GPU. U isto vrijeme, slike kroz cijeli lanac obrade ostaju komprimirane, uključujući i učitavanje u komprimiranom obliku u GPU. Umjesto preventivnog transkodiranja cijele slike, GPU selektivno dekodira samo potrebne dijelove slike.

Podržava spremanje heterogenih nizova tekstura (cubemaps), volumetrijskih tekstura, nizova tekstura, razina mipmapa, video sekvenci ili proizvoljnih fragmenata tekstura u jednoj datoteci. Na primjer, moguće je upakirati niz slika u jednu datoteku za stvaranje malih videozapisa ili kombinirati nekoliko tekstura koristeći zajedničku paletu za sve slike i uklanjanjem duplikata tipičnih predložaka slika. Implementacija Basis Universal kodera podržava višenitno kodiranje pomoću OpenMP-a. Transkoder trenutno radi samo u jednonitnom načinu rada.

dodatno dostupno Basis Univerzalni dekoder za preglednike, isporučen u formatu WebAssembly, koji se može koristiti u web aplikacijama temeljenim na WebGL-u. U konačnici, Google namjerava podržati Basis Universal u svim glavnim preglednicima i promovirati ga kao prijenosni format teksture za WebGL i buduću specifikaciju WebGPU, koji je konceptualno sličan API-jima Vulkan, Metal i Direct3D 12.

Napominje se da mogućnost ugradnje videa s naknadnom obradom samo na strani GPU-a čini Basis Universal zanimljivim rješenjem za stvaranje dinamičkih korisničkih sučelja na WebAssembly i WebGL, koja mogu istovremeno prikazati stotine malih videozapisa s minimalnim opterećenjem CPU-a. Sve dok se SIMD upute ne mogu koristiti u WebAssemblyju s tradicionalnim kodecima, ova razina performansi još nije moguće postići, tako da se video temeljen na teksturi može koristiti u područjima gdje konvencionalni video nije primjenjiv. Kod s dodatnim optimizacijama za video trenutno je u pripremi za objavu, uključujući mogućnost korištenja I-okviri i P-okviri s podrškom za adaptivno punjenje (CR).

Izvor: opennet.ru

Dodajte komentar