Google և Binomial բաց կոդով Basis Universal հյուսվածքների սեղմման համակարգ

Google և Binomial բացեցինք սկզբնաղբյուր տեքստեր Համընդհանուր հիմք, կոդեկ՝ հյուսվածքների արդյունավետ սեղմման համար և հարակից ունիվերսալ «.basis» ֆայլի ձևաչափ՝ պատկերների և տեսանյութերի վրա հիմնված հյուսվածքներ տարածելու համար: Հղման իրականացման կոդը գրված է C++ և մատակարարված լիցենզավորված Apache 2.0-ի համաձայն:

Basis Universal-ը լրացնում է նախկինում հրատարակված Draco 3D տվյալների սեղմման համակարգ և փորձում է լուծել GPU-ի համար հյուսվածքներ մատակարարելու խնդիրը: Մինչ այժմ մշակողները սահմանափակվում էին ընտրելով ցածր մակարդակի ձևաչափեր, որոնք հասնում են բարձր կատարողականության, բայց հատուկ են GPU-ին և շատ սկավառակի տարածություն են զբաղեցնում, և այլ ձևաչափերի միջև, որոնք հասնում են չափի կրճատման, բայց չեն կարող մրցակցել GPU-ի հյուսվածքների հետ:

«Basis Universal» ձևաչափը թույլ է տալիս հասնել բնիկ GPU հյուսվածքների կատարողականությանը, սակայն ապահովում է սեղմման ավելի բարձր մակարդակ:
Basis-ը միջանկյալ ձևաչափ է, որն ապահովում է GPU-ի հյուսվածքների արագ տրանսկոդավորումը տարբեր ցածր մակարդակի ձևաչափերի՝ օգտագործելուց առաջ ինչպես աշխատասեղանի համակարգերում, այնպես էլ շարժական սարքերում: Ներկայումս աջակցվում են PVRTC1 (4bpp RGB), BC7 (6 RGB ռեժիմ), BC1-5, ETC1 և ETC2 ձևաչափեր: Ապագա աջակցություն է սպասվում ASTC ձևաչափի (RGB կամ RGBA) և 4/5 RGBA ռեժիմների համար BC7 և 4bpp RGBA PVRTC1-ի համար:

Google և Binomial բաց կոդով Basis Universal հյուսվածքների սեղմման համակարգ

Հիմնական ձևաչափի հյուսվածքները զբաղեցնում են 6-8 անգամ ավելի քիչ վիդեո հիշողություն և պահանջում են փոխանցել մոտավորապես կիսով չափ տվյալներ, քան սովորական հյուսվածքները՝ հիմնված JPEG ձևաչափի վրա և 10-25%-ով պակաս, քան RDO ռեժիմում գտնվող հյուսվածքները: Օրինակ, JPEG պատկերի չափը 891 ԿԲ և ETC1 հյուսվածքը 1 ՄԲ է, տվյալների չափը Basis ձևաչափում ամենաբարձր որակի ռեժիմում 469 ԿԲ է: Տեսանյութերի հիշողության մեջ տեքստուրներ տեղադրելիս թեստերում օգտագործված JPEG և PNG հյուսվածքները սպառում էին 16 ՄԲ հիշողություն, մինչդեռ հյուսվածքները
BC2, PVRTC1 և ETC1 թարգմանության համար անհրաժեշտ է 1 ՄԲ հիշողություն, իսկ BC4 թարգմանության համար՝ 7 ՄԲ:

Google և Binomial բաց կոդով Basis Universal հյուսվածքների սեղմման համակարգ

Գործող հավելվածները Basis Universal-ին տեղափոխելու գործընթացը բավականին պարզ է: Բավական է վերակոդավորել առկա հյուսվածքները կամ պատկերները նոր ձևաչափի մեջ՝ օգտագործելով նախագծով նախատեսված «basisu» կոմունալը՝ ընտրելով որակի պահանջվող մակարդակը: Հաջորդը, հավելվածում, նախքան մատուցման կոդը, դուք պետք է նախաստորագրեք baseu տրանսկոդավորիչը, որը պատասխանատու է միջանկյալ ձևաչափը ներկայիս GPU-ի կողմից աջակցվող ձևաչափի թարգմանելու համար: Միևնույն ժամանակ, պատկերները ողջ մշակման շղթայում մնում են սեղմված, ներառյալ սեղմված ձևով բեռնված GPU-ում: Ամբողջ պատկերը կանխարգելիչ կերպով փոխակերպելու փոխարեն, GPU-ն ընտրողաբար վերծանում է պատկերի միայն անհրաժեշտ մասերը:

Այն աջակցում է տարասեռ հյուսվածքների զանգվածների (խորանարդային քարտեզների), ծավալային հյուսվածքների, հյուսվածքների զանգվածների, mipmap մակարդակների, տեսանյութերի հաջորդականությունների կամ կամայական հյուսվածքների բեկորների պահպանմանը մեկ ֆայլում: Օրինակ՝ հնարավոր է մի շարք պատկերներ փաթեթավորել մեկ ֆայլում՝ փոքր տեսանյութեր ստեղծելու համար, կամ միավորել մի քանի հյուսվածքներ՝ օգտագործելով ընդհանուր գունապնակ բոլոր պատկերների համար և հեռացնելով բնորոշ պատկերների ձևանմուշները: The Basis Universal encoder-ի ներդրումն աջակցում է բազմաթելային կոդավորումը՝ օգտագործելով OpenMP: Տրանսկոդավորիչը ներկայումս աշխատում է միայն մեկ թելային ռեժիմում:

Բացի հասանելի է Հիմք Ունիվերսալ ապակոդավորիչ բրաուզերների համար՝ մատուցված WebAssembly ձևաչափով, որը կարող է օգտագործվել WebGL-ի վրա հիմնված վեբ հավելվածներում: Վերջիվերջո, Google-ը մտադիր է աջակցել Basis Universal-ին բոլոր հիմնական բրաուզերներում և առաջ մղել այն որպես շարժական հյուսվածքային ձևաչափ WebGL-ի և ապագա հստակեցման համար: WebGPU, կոնցեպտուալ առումով նման է Vulkan, Metal և Direct3D 12 API-ներին:

Նշվում է, որ տեսանյութը հետագա մշակմամբ միայն GPU-ի կողմից ներկառուցելու հնարավորությունը Basis Universal-ին դարձնում է հետաքրքիր լուծում WebAssembly-ում և WebGL-ում դինամիկ օգտատերերի միջերեսներ ստեղծելու համար, որոնք կարող են միաժամանակ ցուցադրել հարյուրավոր փոքր տեսանյութեր՝ նվազագույն պրոցեսորի ծանրաբեռնվածությամբ: Քանի դեռ SIMD հրահանգները չեն կարող օգտագործվել WebAssembly-ում ավանդական կոդեկներով, կատարողականի այս մակարդակը դեռ հասանելի չէ, ուստի հյուսվածքների վրա հիմնված տեսանյութը կարող է օգտագործվել այն տարածքներում, որտեղ սովորական տեսանյութը կիրառելի չէ: Տեսանյութի լրացուցիչ օպտիմալացումներով ծածկագիրը ներկայումս պատրաստվում է հրապարակման, ներառյալ օգտագործման հնարավորությունը I-շրջանակներ և P-շրջանակներ հարմարվողական լցոնման (CR) աջակցությամբ:

Source: opennet.ru

Добавить комментарий