Google και Binomial ανοιχτού κώδικα Basis Universal σύστημα συμπίεσης υφής

Google και Binomial άνοιξε κείμενα πηγής Καθολική βάση, έναν κωδικοποιητή για αποτελεσματική συμπίεση υφής και μια σχετική καθολική μορφή αρχείου ".basis" για τη διανομή υφών που βασίζονται σε εικόνα και βίντεο. Ο κώδικας υλοποίησης αναφοράς είναι γραμμένος σε C++ και παρέχονται άδεια σύμφωνα με το Apache 2.0.

Βάση Universal συμπληρώματα προηγουμένως δημοσίευσε Σύστημα συμπίεσης δεδομένων Draco 3D και προσπαθεί να λύσει το πρόβλημα με την παροχή textures για την 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 KB και υφή ETC1 1 MB, το μέγεθος δεδομένων στη μορφή Basis είναι 469 KB στη λειτουργία υψηλότερης ποιότητας. Κατά την τοποθέτηση υφών στη μνήμη βίντεο, οι υφές JPEG και PNG που χρησιμοποιήθηκαν σε δοκιμές κατανάλωναν 16 MB μνήμης, ενώ οι υφές σε
Βάση απαιτούνται 2 MB μνήμης για μετάφραση σε BC1, PVRTC1 και ETC1, και 4 MB για μετάφραση σε BC7.

Google και Binomial ανοιχτού κώδικα Basis Universal σύστημα συμπίεσης υφής

Η διαδικασία μετεγκατάστασης υπαρχουσών εφαρμογών στο Basis Universal είναι αρκετά απλή. Αρκεί να επανακωδικοποιήσετε υπάρχουσες υφές ή εικόνες σε νέα μορφή χρησιμοποιώντας το βοηθητικό πρόγραμμα "basisu" που παρέχεται από το έργο, επιλέγοντας το απαιτούμενο επίπεδο ποιότητας. Στη συνέχεια, στην εφαρμογή, πριν από τον κώδικα απόδοσης, πρέπει να αρχικοποιήσετε τον μετακωδικοποιητή βάσης, ο οποίος είναι υπεύθυνος για τη μετάφραση της ενδιάμεσης μορφής στη μορφή που υποστηρίζεται από την τρέχουσα GPU. Ταυτόχρονα, οι εικόνες σε ολόκληρη την αλυσίδα επεξεργασίας παραμένουν συμπιεσμένες, συμπεριλαμβανομένης της φόρτωσης σε συμπιεσμένη μορφή στη GPU. Αντί της προληπτικής διακωδικοποίησης ολόκληρης της εικόνας, η GPU αποκωδικοποιεί επιλεκτικά μόνο τα απαραίτητα μέρη της εικόνας.

Υποστηρίζει την αποθήκευση ετερογενών συστοιχιών υφής (cubemaps), ογκομετρικών υφών, συστοιχιών υφής, επιπέδων mipmap, ακολουθιών βίντεο ή αυθαίρετων θραυσμάτων υφής σε ένα αρχείο. Για παράδειγμα, είναι δυνατό να συσκευάσετε μια σειρά εικόνων σε ένα αρχείο για να δημιουργήσετε μικρά βίντεο ή να συνδυάσετε πολλές υφές χρησιμοποιώντας μια κοινή παλέτα για όλες τις εικόνες και να αφαιρέσετε τυπικά πρότυπα εικόνων. Η υλοποίηση του κωδικοποιητή Basis Universal υποστηρίζει κωδικοποίηση πολλαπλών νημάτων με χρήση OpenMP. Ο μετακωδικοποιητής λειτουργεί προς το παρόν μόνο σε λειτουργία μονού νήματος.

επιπλέον διαθέσιμος Βάση Καθολικός αποκωδικοποιητής για προγράμματα περιήγησης, που παραδίδεται σε μορφή WebAssembly, ο οποίος μπορεί να χρησιμοποιηθεί σε εφαρμογές web που βασίζονται σε WebGL. Τελικά, η Google σκοπεύει να υποστηρίξει το Basis Universal σε όλα τα μεγάλα προγράμματα περιήγησης και να το προωθήσει ως φορητή μορφή υφής για WebGL και μελλοντική προδιαγραφή WebGPU, εννοιολογικά παρόμοια με τα API Vulkan, Metal και Direct3D 12.

Σημειώνεται ότι η δυνατότητα ενσωμάτωσης βίντεο με την επακόλουθη επεξεργασία του μόνο στην πλευρά της GPU καθιστά το Basis Universal μια ενδιαφέρουσα λύση για τη δημιουργία δυναμικών διεπαφών χρήστη σε WebAssembly και WebGL, που μπορούν ταυτόχρονα να προβάλλουν εκατοντάδες μικρά βίντεο με ελάχιστο φόρτο CPU. Έως ότου οι οδηγίες SIMD μπορούν να χρησιμοποιηθούν στο WebAssembly με παραδοσιακούς κωδικοποιητές, αυτό το επίπεδο απόδοσης δεν είναι ακόμη δυνατό, επομένως το βίντεο που βασίζεται σε υφή μπορεί να χρησιμοποιηθεί σε περιοχές όπου το συμβατικό βίντεο δεν ισχύει. Αυτήν τη στιγμή προετοιμάζεται για δημοσίευση κώδικας με πρόσθετες βελτιστοποιήσεις για βίντεο, συμπεριλαμβανομένης της δυνατότητας χρήσης I-frames και P-frames με υποστήριξη προσαρμοστικής επένδυσης (CR).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο