Google va Binomial ochiq manbali Basis Universal teksturani siqish tizimi

Google va binom ochildi manba matnlar Umumjahon asoslari, teksturani samarali siqish uchun kodek va tasvir va videoga asoslangan teksturalarni tarqatish uchun tegishli universal ".basis" fayl formati. Malumotni amalga oshirish kodi C++ da yozilgan va ta'minlangan Apache 2.0 ostida litsenziyalangan.

Basis Universal ilgari to'ldiradi nashr etildi Draco 3D ma'lumotlarni siqish tizimi va GPU uchun teksturalarni etkazib berish bilan bog'liq muammoni hal qilishga harakat qiladi. Hozirgacha ishlab chiquvchilar yuqori unumdorlikka erishadigan, lekin GPU-ga xos bo‘lgan va diskda juda ko‘p joy egallagan past darajali formatlar va hajmini qisqartirishga erishadigan, lekin ishlash bo‘yicha GPU teksturalari bilan raqobatlasha olmaydigan boshqa formatlar o‘rtasida tanlov bilan cheklanib qolishgan.

Basis Universal formati sizga mahalliy GPU teksturalarining ishlashiga erishish imkonini beradi, lekin yuqori darajadagi siqishni ta'minlaydi.
Basis - foydalanishdan oldin ish stoli tizimlarida ham, mobil qurilmalarda ham foydalanish uchun turli xil past darajadagi formatlarga GPU teksturalarini tezkor transkodlashni ta'minlovchi oraliq format. Hozirda PVRTC1 (4bpp RGB), BC7 (6 RGB rejimi), BC1-5, ETC1 va ETC2 formatlari qo'llab-quvvatlanadi. Kelajakda ASTC formati (RGB yoki RGBA) va BC4 uchun 5/7 RGBA va PVRTC4 uchun 1bpp RGBA rejimlari uchun yordam kutilmoqda.

Google va Binomial ochiq manbali Basis Universal teksturani siqish tizimi

Asosiy formatdagi teksturalar 6-8 baravar kam video xotirani egallaydi va JPEG formatidagi odatiy teksturalarga qaraganda taxminan yarmi va RDO rejimidagi teksturalarga qaraganda 10-25% kamroq ma'lumotlarni uzatishni talab qiladi. Misol uchun, JPEG tasvir hajmi 891 KB va ETC1 teksturasi 1 MB bo'lgan holda, Basis formatidagi ma'lumotlar hajmi eng yuqori sifat rejimida 469 KB ni tashkil qiladi. Teksturalarni video xotiraga joylashtirishda testlarda ishlatiladigan JPEG va PNG teksturalari 16 MB xotirani iste'mol qilgan, teksturalar esa XNUMX MB xotirani iste'mol qilgan.
BC2, PVRTC1 va ETC1 ga tarjima qilish uchun 1 MB xotira va BC4 ga tarjima qilish uchun 7 MB xotira talab qilinadi.

Google va Binomial ochiq manbali Basis Universal teksturani siqish tizimi

Mavjud ilovalarni Basis Universal-ga ko'chirish jarayoni juda oddiy. Mavjud to'qimalarni yoki tasvirlarni loyiha tomonidan taqdim etilgan "basisu" yordam dasturidan foydalanib, kerakli sifat darajasini tanlab, yangi formatga qayta kodlash kifoya. Keyinchalik, dasturda, ko'rsatish kodidan oldin, oraliq formatni joriy GPU tomonidan qo'llab-quvvatlanadigan formatga o'tkazish uchun mas'ul bo'lgan baseu transkoderini ishga tushirishingiz kerak. Shu bilan birga, butun ishlov berish zanjiri bo'ylab tasvirlar siqilgan holda qoladi, shu jumladan siqilgan shaklda GPUga yuklanadi. Butun tasvirni oldindan transkod qilish o'rniga, GPU faqat rasmning kerakli qismlarini tanlab dekodlaydi.

U heterojen tekstura massivlarini (kub xaritalari), hajmli teksturalarni, tekstura massivlarini, mipmap darajalarini, video ketma-ketliklarini yoki ixtiyoriy tekstura qismlarini bitta faylda saqlashni qo'llab-quvvatlaydi. Misol uchun, kichik videolarni yaratish uchun bir faylda bir qator rasmlarni to'plash yoki barcha tasvirlar uchun umumiy palitradan foydalangan holda bir nechta teksturalarni birlashtirish va odatiy rasm shablonlarini deuplikatsiya qilish mumkin. Basis Universal kodlovchi ilovasi OpenMP yordamida ko'p tarmoqli kodlashni qo'llab-quvvatlaydi. Transkoder hozirda faqat bitta tarmoqli rejimda ishlaydi.

qo'shimcha ravishda mavjud WebGL-ga asoslangan veb-ilovalarda ishlatilishi mumkin bo'lgan WebAssembly formatida yetkazib berilgan brauzerlar uchun universal dekoder. Oxir oqibat, Google Basis Universal-ni barcha asosiy brauzerlarda qo'llab-quvvatlash va uni WebGL uchun portativ tekstura formati va kelajakdagi spetsifikatsiya sifatida ilgari surish niyatida. WebGPU, bu kontseptual jihatdan Vulkan, Metal va Direct3D 12 API-lariga o'xshash.

Ta'kidlanishicha, videoni keyinchalik qayta ishlash bilan faqat GPU tomoniga joylashtirish imkoniyati Basis Universal-ni WebAssembly va WebGL-da dinamik foydalanuvchi interfeyslarini yaratish uchun qiziqarli yechimga aylantiradi, bu esa bir vaqtning o'zida minimal protsessor yuki bilan yuzlab kichik videolarni namoyish qilishi mumkin. SIMD ko'rsatmalaridan WebAssembly-da an'anaviy kodeklar bilan foydalanilmaguncha, bu unumdorlik darajasiga hali erishib bo'lmaydi, shuning uchun an'anaviy video qo'llanilmaydigan joylarda teksturaga asoslangan videodan foydalanish mumkin. Video uchun qo‘shimcha optimallashtirilgan kod hozirda nashrga tayyorlanmoqda, shu jumladan foydalanish imkoniyati I-ramkalar va P-ramkalar moslashuvchan to'ldirish (CR) qo'llab-quvvatlashi bilan.

Manba: opennet.ru

a Izoh qo'shish