Google і Binomial адкрылі код сістэмы сціску тэкстур Basis Universal

Кампаніі Google і Binomial адкрылі зыходныя тэксты Універсальная аснова, кодэка для эфектыўнага сціску тэкстур і злучанага з ім універсальнага файлавага фармату «.basis» для распаўсюджвання тэкстур на базе малюнкаў і відэа. Код эталоннай рэалізацыі напісаны на мове З++ і пастаўляецца пад ліцэнзіяй Apache 2.0.

Basis Universal дапаўняе раней апублікаваную сістэму сціску 3D-дадзеных Draco і спрабуе вырашыць праблему з пастаўкай тэкстур для 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

Тэкстуры ў фармаце basis займаюць у 6-8 разоў менш відэапамяці і патрабуе перадачы прыкладна ў два разы менш дадзеных, чым тыпавыя тэкстуры на аснове фармату JPEG і на 10-25% менш, чым тэкстуры ў рэжыме RDO. Напрыклад, пры памеры JPEG-малюнка ў 891 Кб, а тэкстуры ETC1 у 1 Мб, памер дадзеных у фармаце Basis складае 469 Кб у рэжыме найвышэйшай якасці. Пры размяшчэнні тэкстуры ў відэапамяці, якія выкарыстоўваюцца ў тэстах тэкстуры ў фармаце JPEG і PNG выдаткавалі 16 Мб памяці, у той час як для тэкстур у фармаце
Basis запатрабавалася 2 Мб памяці ў выпадку трансляцыі ў BC1, PVRTC1 і ETC1, і 4 Мб у выпадку трансляцыі ў BC7.

Google і Binomial адкрылі код сістэмы сціску тэкстур Basis Universal

Працэс перакладу існуючых прыкладанняў на Basis Universal дастаткова просты. Дастаткова перакадзіраваць наяўныя тэкстуры або выявы ў новы фармат пры дапамозе ўтыліты «basisu», якая прадастаўляецца праектам, выбраўшы неабходны ўзровень якасці. Далей у дадатку перад кодам адмалёўкі трэба ініцыялізаваць перакадавальнік basisu, які адказвае за трансляцыю прамежкавага фармату ў які падтрымліваецца бягучым GPU фармат. Пры гэтым выявы на ўсім ланцужку апрацоўкі застаюцца сціснутымі, у тым ліку загружаюцца ў сціснутым выглядзе ў GPU. Замест папераджальнага перакадавання выявы цалкам, GPU выбарачна дэкадуе толькі неабходныя часткі малюнка.

Падтрымліваецца захаванне ў адным файле неаднародных масіваў тэкстур (cubemap), аб'ёмных тэкстур, масіваў тэкстур, узроўняў mipmap, паслядоўнасцяў відэа ці адвольных урыўкаў тэкстур. Напрыклад, магчымае пакаванне ў адным файле серыі малюнкаў для стварэння невялікіх відэа ці аб'яднанне некалькіх тэкстур з выкарыстаннем агульнай для ўсіх малюнкаў палітры і дэдуплікацыяй тыпавых шаблонаў малюнкаў. Рэалізацыя кадавальніка Basis Universal падтрымлівае шматструменнае кадаваньне з выкарыстаннем OpenMP. Перакадавальнік пакуль працуе толькі ў аднаструменным рэжыме.

Дадаткова даступны дэкадавальнік Basis Universal для браўзэраў, які пастаўляецца ў фармаце WebAssembly, які можна выкарыстоўваць у web-прыкладаннях на базе WebGL. У канчатковым рахунку, Google мае намер дамагчыся падтрымай Basis Universal ва ўсіх асноўных браўзэрах і прасунуць яго ў якасці пераноснага фармату тэкстур для WebGL і будучай спецыфікацыі. WebGPU, канцэптуальна падобнай з API Vulkan, Metal і Direct3D 12.

Адзначаецца, што магчымасць убудавання відэа з яго наступнай апрацоўкай толькі на боку GPU робіць Basis Universal цікавым рашэннем для стварэння дынамічных інтэрфейсаў карыстача на WebAssembly і WebGL, у якіх могуць адначасова адлюстроўвацца сотні невялікіх відэа з мінімальнай нагрузкай на CPU. Да з'яўлення магчымасці выкарыстання інструкцый SIMD у WebAssembly пры традыцыйных кодэках падобны ўзровень прадукцыйнасці пакуль недасяжны, таму відэа на аснове тэкстур можа выкарыстоўвацца ў абласцях, дзе звычайнае відэа непрымяняльна. У цяперашні час рыхтуецца да публікацыі код з дадатковымі аптымізацыямі для відэа, які ўключае магчымасць выкарыстання I-кадраў і P-кадраў з падтрымкай адаптыўнай запаўнення (CR).

Крыніца: opennet.ru

Дадаць каментар