Sistem pemampatan tekstur Universal Asas sumber terbuka Google dan Binomial

Google dan Binomial dibuka teks sumber Asas Sejagat, codec untuk pemampatan tekstur yang cekap dan format fail ".basis" universal yang berkaitan untuk mengedarkan tekstur berasaskan imej dan video. Kod pelaksanaan rujukan ditulis dalam C++ dan dibekalkan berlesen di bawah Apache 2.0.

Basis Universal melengkapi sebelum ini diterbitkan Sistem pemampatan data 3D Draco dan cuba menyelesaikan masalah dengan membekalkan tekstur untuk GPU. Sehingga kini, pembangun telah dihadkan untuk memilih antara format peringkat rendah yang mencapai prestasi tinggi tetapi khusus GPU dan menggunakan banyak ruang cakera, dan format lain yang mencapai pengurangan saiz tetapi tidak dapat bersaing dengan tekstur GPU dalam prestasi.

Format Basis Universal membolehkan anda mencapai prestasi tekstur GPU asli, tetapi memberikan tahap pemampatan yang lebih tinggi.
Basis ialah format perantaraan yang menyediakan transcoding pantas tekstur GPU kepada pelbagai format peringkat rendah untuk digunakan pada kedua-dua sistem desktop dan peranti mudah alih sebelum digunakan. Pada masa ini disokong ialah format PVRTC1 (4bpp RGB), BC7 (mod 6 RGB), BC1-5, ETC1 dan ETC2. Sokongan masa hadapan dijangka untuk format ASTC (RGB atau RGBA) dan mod 4/5 RGBA untuk BC7 dan 4bpp RGBA untuk PVRTC1.

Sistem pemampatan tekstur Universal Asas sumber terbuka Google dan Binomial

Tekstur dalam format asas menggunakan 6-8 kali lebih sedikit memori video dan memerlukan pemindahan kira-kira separuh data daripada tekstur biasa berdasarkan format JPEG dan 10-25% kurang daripada tekstur dalam mod RDO. Contohnya, dengan saiz imej JPEG 891 KB dan tekstur ETC1 1 MB, saiz data dalam format Asas ialah 469 KB dalam mod kualiti tertinggi. Apabila meletakkan tekstur dalam memori video, tekstur JPEG dan PNG yang digunakan dalam ujian menggunakan 16 MB memori, manakala tekstur dalam
Asas memerlukan 2 MB memori untuk terjemahan kepada BC1, PVRTC1 dan ETC1, dan 4 MB untuk terjemahan kepada BC7.

Sistem pemampatan tekstur Universal Asas sumber terbuka Google dan Binomial

Proses pemindahan aplikasi sedia ada ke Basis Universal agak mudah. Ia cukup untuk mengekod semula tekstur atau imej sedia ada ke dalam format baharu menggunakan utiliti "basisu" yang disediakan oleh projek, memilih tahap kualiti yang diperlukan. Seterusnya, dalam aplikasi, sebelum kod rendering, anda perlu memulakan transcoder basisu, yang bertanggungjawab untuk menterjemahkan format perantaraan ke dalam format yang disokong oleh GPU semasa. Pada masa yang sama, imej di seluruh rangkaian pemprosesan kekal dimampatkan, termasuk dimuatkan dalam bentuk mampat ke dalam GPU. Daripada mengalihkan pengekodan keseluruhan imej terlebih dahulu, GPU secara selektif menyahkod bahagian imej yang diperlukan sahaja.

Ia menyokong penjimatan tatasusunan tekstur heterogen (peta kiub), tekstur isipadu, tatasusunan tekstur, tahap mipmap, jujukan video atau serpihan tekstur sembarangan dalam satu fail. Sebagai contoh, adalah mungkin untuk membungkus satu siri imej dalam satu fail untuk mencipta video kecil, atau menggabungkan beberapa tekstur menggunakan palet biasa untuk semua imej dan menyahduplikasi templat imej biasa. Pelaksanaan pengekod Basis Universal menyokong pengekodan berbilang benang menggunakan OpenMP. Transkoder pada masa ini hanya berfungsi dalam mod satu benang.

tambahan ada Penyahkod Basis Universal untuk penyemak imbas, dihantar dalam format WebAssembly, yang boleh digunakan dalam aplikasi web berasaskan WebGL. Akhirnya, Google berhasrat untuk menyokong Basis Universal dalam semua pelayar utama dan mempromosikannya sebagai format tekstur mudah alih untuk WebGL dan spesifikasi masa hadapan WebGPU, yang secara konsepnya serupa dengan API Vulkan, Metal dan Direct3D 12.

Adalah diperhatikan bahawa keupayaan untuk membenamkan video dengan pemprosesan berikutnya hanya pada bahagian GPU menjadikan Basis Universal penyelesaian yang menarik untuk mencipta antara muka pengguna dinamik pada WebAssembly dan WebGL, yang boleh memaparkan ratusan video kecil secara serentak dengan beban CPU yang minimum. Sehingga arahan SIMD boleh digunakan dalam WebAssembly dengan codec tradisional, tahap prestasi ini masih belum boleh dicapai, jadi video berasaskan tekstur boleh digunakan di kawasan yang tidak boleh digunakan untuk video konvensional. Kod dengan pengoptimuman tambahan untuk video sedang disediakan untuk penerbitan, termasuk keupayaan untuk digunakan Bingkai-I dan bingkai-P dengan sokongan pelapik penyesuaian (CR).

Sumber: opennet.ru

Tambah komen