Google un Binomial atvērtā pirmkoda Basis Universāla tekstūras saspiešanas sistēma

Google un Binomiāls atvērts avota teksti Universālais pamats, kodeku efektīvai tekstūru saspiešanai un ar to saistīto universālo ".basis" faila formātu attēlu un video tekstūru izplatīšanai. Atsauces ieviešanas kods ir rakstīts C++ un piegādāts licencēts saskaņā ar Apache 2.0.

Basis Universal papildina iepriekš publicēts Draco 3D datu saspiešanas sistēma un mēģina atrisināt problēmu ar tekstūru piegādi GPU. Līdz šim izstrādātāji ir aprobežojušies ar izvēli starp zema līmeņa formātiem, kas nodrošina augstu veiktspēju, bet ir specifiski GPU un aizņem daudz vietas diskā, un citus formātus, kas samazina izmēru, bet nespēj konkurēt ar GPU faktūrām veiktspējas ziņā.

Basis Universal formāts ļauj sasniegt vietējo GPU tekstūru veiktspēju, taču nodrošina augstāku saspiešanas līmeni.
Basis ir starpformāts, kas nodrošina ātru GPU tekstūru pārkodēšanu uz dažādiem zema līmeņa formātiem, ko pirms lietošanas var izmantot gan galddatoru sistēmās, gan mobilajās ierīcēs. Pašlaik tiek atbalstīti formāti PVRTC1 (4bpp RGB), BC7 (6 RGB režīms), BC1-5, ETC1 un ETC2. Nākotnē ir paredzēts atbalsts ASTC formātam (RGB vai RGBA) un 4/5 RGBA režīmiem BC7 un 4 bpp RGBA PVRTC1.

Google un Binomial atvērtā pirmkoda Basis Universāla tekstūras saspiešanas sistēma

Tekstūras pamata formātā aizņem 6–8 reizes mazāk video atmiņas, un tām ir jāpārsūta aptuveni uz pusi mazāk datu nekā tipiskām tekstūrām, kuru pamatā ir JPEG formāts, un par 10–25% mazāk nekā faktūrām RDO režīmā. Piemēram, ja JPEG attēla izmērs ir 891 KB un ETC1 tekstūra ir 1 MB, datu lielums Basis formātā ir 469 KB augstākās kvalitātes režīmā. Ievietojot tekstūras video atmiņā, testos izmantotās JPEG un PNG tekstūras patērēja 16 MB atmiņas, savukārt tekstūras
Pamatā nepieciešami 2 MB atmiņas, lai tulkotu uz BC1, PVRTC1 un ETC1, un 4 MB, lai tulkotu uz BC7.

Google un Binomial atvērtā pirmkoda Basis Universāla tekstūras saspiešanas sistēma

Esošo lietojumprogrammu migrēšana uz Basis Universal ir diezgan vienkārša. Pietiek pārkodēt esošās faktūras vai attēlus jaunā formātā, izmantojot projekta nodrošināto utilītu “basisu”, izvēloties nepieciešamo kvalitātes līmeni. Pēc tam lietojumprogrammā pirms renderēšanas koda ir jāinicializē Basesu pārkodētājs, kas ir atbildīgs par starpformāta tulkošanu pašreizējā GPU atbalstītajā formātā. Tajā pašā laikā attēli visā apstrādes ķēdē paliek saspiesti, tostarp tiek ielādēti saspiestā veidā GPU. Tā vietā, lai iepriekš pārkodētu visu attēlu, GPU selektīvi dekodē tikai nepieciešamās attēla daļas.

Tas atbalsta neviendabīgu tekstūru masīvu (kuba karšu), tilpuma faktūru, tekstūru masīvu, mipmap līmeņu, video secību vai patvaļīgu tekstūras fragmentu saglabāšanu vienā failā. Piemēram, ir iespējams iepakot attēlu sēriju vienā failā, lai izveidotu mazus videoklipus, vai apvienot vairākas faktūras, izmantojot kopēju paleti visiem attēliem un atdalot tipiskas attēlu veidnes. Basis Universal kodētāja ieviešana atbalsta vairāku pavedienu kodēšanu, izmantojot OpenMP. Pārkodētājs pašlaik darbojas tikai viena vītnes režīmā.

papildus pieejams Pamats Universāls pārlūkprogrammu dekodētājs, kas tiek piegādāts WebAssembly formātā, ko var izmantot tīmekļa lietojumprogrammās, kuru pamatā ir WebGL. Galu galā Google plāno atbalstīt Basis Universal visās lielākajās pārlūkprogrammās un reklamēt to kā pārnēsājamu WebGL tekstūras formātu un turpmāku specifikāciju. WebGPU, kas konceptuāli līdzinās Vulkan, Metal un Direct3D 12 API.

Tiek atzīmēts, ka iespēja iegult video ar tā turpmāko apstrādi tikai GPU pusē padara Basis Universal par interesantu risinājumu dinamisku lietotāja saskarņu izveidei WebAssembly un WebGL, kas var vienlaikus parādīt simtiem mazu video ar minimālu CPU slodzi. Kamēr SIMD instrukcijas nevar izmantot WebAssembly ar tradicionālajiem kodekiem, šāds veiktspējas līmenis vēl nav sasniedzams, tāpēc uz tekstūru balstītu video var izmantot vietās, kur parastie video nav piemērojami. Kods ar papildu optimizāciju video pašlaik tiek sagatavots publicēšanai, tostarp iespēja izmantot I-rāmji un P-kadri ar adaptīvā polsterējuma (CR) atbalstu.

Avots: opennet.ru

Pievieno komentāru