Google ja Binomial avoimen lähdekoodin Basis Universaali tekstuurin pakkausjärjestelmä

Google ja binomial avattu lähdetekstejä Yleinen perusta, koodekki tehokkaaseen pintakuvioiden pakkaamiseen ja siihen liittyvä yleinen ".basis"-tiedostomuoto kuva- ja videopohjaisten tekstuurien jakamiseen. Viitetoteutuskoodi on kirjoitettu C++ ja -kielellä toimitetaan lisensoitu Apache 2.0:lla.

Basis Universal täydentää aiemmin julkaistu Draco 3D -tiedonpakkausjärjestelmä ja yrittää ratkaista ongelman toimittamalla pintakuvioita GPU:lle. Tähän asti kehittäjät ovat rajoittuneet valitsemaan matalan tason formaattien välillä, jotka saavuttavat korkean suorituskyvyn, mutta ovat GPU-spesifisiä ja vievät paljon levytilaa, ja muita muotoja, jotka pienentävät kokoa, mutta eivät pysty kilpailemaan GPU-kuvioiden kanssa suorituskyvyltään.

Basis Universal -muodon avulla voit saavuttaa alkuperäisten GPU-tekstuurien suorituskyvyn, mutta se tarjoaa korkeamman pakkaustason.
Basis on välimuoto, joka mahdollistaa GPU-tekstuurien nopean transkoodauksen erilaisiin matalan tason muotoihin käytettäväksi sekä pöytätietokoneissa että mobiililaitteissa ennen käyttöä. Tällä hetkellä tuettuja muotoja ovat PVRTC1 (4bpp RGB), BC7 (6 RGB-tila), BC1-5, ETC1 ja ETC2. Tulevaisuudessa tukea odotetaan ASTC-muodolle (RGB tai RGBA) ja 4/5 RGBA -moodille BC7:lle ja 4 bpp RGBA:lle PVRTC1:lle.

Google ja Binomial avoimen lähdekoodin Basis Universaali tekstuurin pakkausjärjestelmä

Perusmuodon tekstuurit vievät 6-8 kertaa vähemmän videomuistia ja vaativat noin puolet niin paljon dataa kuin tyypilliset JPEG-muotoon perustuvat pintakuviot ja 10-25 % vähemmän kuin RDO-tilassa olevat pintakuviot. Esimerkiksi, kun JPEG-kuvakoko on 891 kt ja ETC1-kuviointi 1 Mt, tietokoko Basis-muodossa on 469 kt korkeimmassa laatutilassa. Kun tekstuurit sijoitetaan videomuistiin, testeissä käytetyt JPEG- ja PNG-tekstuurit kuluttivat 16 Mt muistia, kun taas tekstuurit
Perus vaati 2 Mt muistia kääntämiseen BC1:een, PVRTC1:een ja ETC1:een ja 4 Mt BC7:ään kääntämiseen.

Google ja Binomial avoimen lähdekoodin Basis Universaali tekstuurin pakkausjärjestelmä

Nykyisten sovellusten siirtäminen Basis Universaliin on melko yksinkertainen. Riittää, kun olemassa olevat tekstuurit tai kuvat koodataan uudelleen uuteen muotoon käyttämällä projektin tarjoamaa "basisu" -apuohjelmaa, valitsemalla haluttu laatutaso. Seuraavaksi sovelluksessa, ennen renderöintikoodia, sinun on alustettava basicu-transkooderi, joka vastaa välimuodon kääntämisestä nykyisen GPU:n tukemaan muotoon. Samanaikaisesti kuvat koko käsittelyketjussa pysyvät pakattuina, mukaan lukien ne ladataan pakattuna GPU:hun. Koko kuvan ennakoivan transkoodauksen sijaan GPU dekoodaa valikoivasti vain kuvan tarvittavat osat.

Se tukee heterogeenisten pintakuviotaulukoiden (kuutiokarttojen), tilavuustekstuurien, pintakuviotaulukoiden, mipmap-tasojen, videosekvenssien tai mielivaltaisten pintakuviofragmenttien tallentamista yhteen tiedostoon. Voit esimerkiksi pakata sarjan kuvia yhteen tiedostoon pienten videoiden luomiseksi tai yhdistää useita pintakuvioita käyttämällä yhteistä palettia kaikille kuville ja poistamalla tyypillisten kuvapohjien kopiot. Basis Universal -enkooderin toteutus tukee monisäikeistä koodausta OpenMP:n avulla. Transkooderi toimii tällä hetkellä vain yksisäikeisessä tilassa.

lisäksi saatavilla Basis Universaali dekooderi selaimille, toimitetaan WebAssembly-muodossa, jota voidaan käyttää WebGL-pohjaisissa verkkosovelluksissa. Lopulta Google aikoo tukea Basis Universalia kaikissa yleisimmissä selaimissa ja mainostaa sitä kannettavana tekstuurimuotona WebGL:lle ja tulevalle spesifikaatiolle. WebGPU, joka on käsitteellisesti samanlainen kuin Vulkan, Metal ja Direct3D 12 API.

On huomattava, että kyky upottaa videota ja sen myöhempää käsittelyä vain GPU-puolella tekee Basis Universalista mielenkiintoisen ratkaisun dynaamisten käyttöliittymien luomiseen WebAssemblyssa ja WebGL:ssä, jotka voivat näyttää samanaikaisesti satoja pieniä videoita minimaalisella suorittimen kuormituksella. Ennen kuin SIMD-ohjeita voidaan käyttää WebAssemblyssa perinteisten koodekkien kanssa, tämä suoritustaso ei ole vielä saavutettavissa, joten tekstuuripohjaista videota voidaan käyttää alueilla, joilla perinteinen video ei sovellu. Koodia, jossa on lisäoptimointeja videolle, valmistellaan parhaillaan julkaistavaksi, mukaan lukien käyttömahdollisuus I-kehykset ja P-kehykset mukautuvalla pehmusteella (CR) tuella.

Lähde: opennet.ru

Lisää kommentti