Guglo kaj Binomial malfermfonteca Bazo Universala tekstura kunprema sistemo

Guglo kaj Binomo malfermita fontkodo Universala Bazo, kodeko por efika tekstura kunpremo kaj rilata universala ".basis" dosierformato por distribuado de bild- kaj video-bazitaj teksturoj. La referenca efektivigkodo estas skribita en C++ kaj provizis licencita sub Apache 2.0.

Bazo Universalaj komplementoj antaŭe eldonita Draco 3D datumkunprema sistemo kaj provas solvi la problemon kun liverado de teksturoj por la GPU. Ĝis nun, programistoj estis limigitaj al elekto inter malaltnivelaj formatoj kiuj atingas altan rendimenton sed estas GPU-specifaj kaj okupas multe da diskospaco, kaj aliaj formatoj kiuj atingas grandeco-redukton sed ne povas konkuri kun GPU-teksturoj en rendimento.

La Baza Universala formato permesas vin atingi la agadon de indiĝenaj GPU-teksturoj, sed provizas pli altan nivelon de kunpremo.
Bazo estas meza formato kiu disponigas rapidan transkodigon de GPU-teksturoj al diversaj malaltnivelaj formatoj por uzo sur kaj labortablaj sistemoj kaj porteblaj aparatoj antaŭ uzo. Nuntempe subtenataj estas formatoj PVRTC1 (4bpp RGB), BC7 (6 RGB-reĝimo), BC1-5, ETC1 kaj ETC2. Estonta subteno estas atendata por ASTC-formato (RGB aŭ RGBA) kaj 4/5 RGBA-reĝimoj por BC7 kaj 4bpp RGBA por PVRTC1.

Guglo kaj Binomial malfermfonteca Bazo Universala tekstura kunprema sistemo

Teksturoj en la baza formato okupas 6-8 fojojn malpli da videomemoro kaj postulas translokigi proksimume duonon da datumoj ol tipaj teksturoj bazitaj sur la JPEG-formato kaj 10-25% malpli ol teksturoj en RDO-reĝimo. Ekzemple, kun JPEG bildgrandeco de 891 KB kaj ETC1 teksturo de 1 MB, la datumgrandeco en la Baza formato estas 469 KB en la plej altkvalita reĝimo. Dum metado de teksturoj en videomemoro, JPEG kaj PNG teksturoj uzitaj en testoj konsumis 16 MB da memoro, dum teksturoj en
Bazo postulis 2 MB da memoro por tradukado al BC1, PVRTC1 kaj ETC1, kaj 4 MB por tradukado al BC7.

Guglo kaj Binomial malfermfonteca Bazo Universala tekstura kunprema sistemo

La procezo de migrado de ekzistantaj aplikoj al Basis Universal estas sufiĉe simpla. Sufiĉas rekodi ekzistantajn teksturojn aŭ bildojn en novan formaton uzante la ilon "basisu" provizitan de la projekto, elektante la bezonatan kvalitan nivelon. Poste, en la aplikaĵo, antaŭ la bildiga kodo, vi devas pravalorigi la basisu-transkodilon, kiu respondecas pri tradukado de la meza formato al la formato subtenata de la nuna GPU. Samtempe, bildoj tra la tuta pretiga ĉeno restas kunpremitaj, inkluzive de ŝarĝitaj en kunpremita formo en la GPU. Anstataŭ antaŭprecipe transkodi la tutan bildon, la GPU selekteme malkodas nur la necesajn partojn de la bildo.

Ĝi subtenas konservadon de heterogenaj teksturaj tabeloj (kubmapoj), volumetraj teksturoj, teksturaj tabeloj, mipmap-niveloj, videosekvencoj aŭ arbitraj teksturaj fragmentoj en unu dosiero. Ekzemple, eblas paki serion da bildoj en unu dosiero por krei malgrandajn filmetojn, aŭ kombini plurajn teksturojn uzante komunan paletron por ĉiuj bildoj kaj deduplikante tipajn bildŝablonojn. La efektivigo de Basis Universal-kodigilo subtenas plurfadenan kodigon uzante OpenMP. La transkodilo nuntempe nur funkcias en unufadena reĝimo.

aldone disponebla Baza Universala malĉifrilo por retumiloj, liverita en WebAssembly-formato, kiu povas esti uzita en WebGL-bazitaj retejo-aplikoj. Finfine, Guglo intencas subteni Basis Universal en ĉiuj ĉefaj retumiloj kaj reklami ĝin kiel porteblan teksturformaton por WebGL kaj estonta specifo. WebGPU, koncipe simila al la Vulkan, Metalo kaj Direct3D 12 APIoj.

Oni rimarkas, ke la kapablo enmeti videon kun ĝia posta prilaborado nur ĉe la GPU-flanko igas Basis Universal interesa solvo por krei dinamikajn uzantinterfacojn sur WebAssembly kaj WebGL, kiuj povas samtempe montri centojn da malgrandaj filmetoj kun minimuma CPU-ŝarĝo. Ĝis SIMD-instrukcioj povas esti uzataj en WebAssembly kun tradiciaj kodekoj, ĉi tiu nivelo de rendimento ankoraŭ ne estas atingebla, do tekstur-bazita video povas esti uzata en lokoj kie konvencia video ne estas aplikebla. Kodo kun pliaj optimumigoj por video estas nuntempe preta por publikigo, inkluzive de la kapablo uzi I-kadroj kaj P-kadroj kun adapta remburaĵo (CR) subteno.

fonto: opennet.ru

Aldoni komenton