Κατανοώντας το Premultiplied Alpha: Πλήρης Οδηγός για Developers
Στην ψηφιακή απεικόνιση, οι εικόνες με διαφάνεια αποθηκεύονται συνήθως χρησιμοποιώντας 'Straight Alpha'. Αυτό σημαίνει ότι το αρχείο περιέχει τέσσερα ξεχωριστά κανάλια: Κόκκινο, Πράσινο, Μπλε και Alpha (RGBA). Τα κανάλια χρωμάτων είναι εντελώς ανεξάρτητα από το κανάλι διαφάνειας. Για παράδειγμα, ένα pixel που είναι 50% διαφανές λευκό αποθηκεύεται ως R:255, G:255, B:255, A:127 (καθώς το 127 είναι περίπου το μισό του 255). Αυτή η μορφή υποστηρίζεται καθολικά από προγράμματα προβολής εικόνων και περιηγητές, καθιστώντας την προεπιλογή για τυπικά αρχεία PNG και WebP.
Ωστόσο, όταν οι προγραμματιστές παιχνιδιών και μηχανικοί γραφικών εργάζονται με μηχανές rendering όπως WebGL, OpenGL, Unity ή Unreal Engine, το Straight Alpha δημιουργεί σημαντικά υπολογιστικά και οπτικά προβλήματα. Για τη ανάμειξη ενός Straight Alpha texture πάνω από ένα φόντο, η GPU πρέπει να εκτελέσει έναν σύνθετο υπολογισμό: πολλαπλασιάζει το χρώμα του texture με το alpha του, πολλαπλασιάζει το χρώμα του φόντου με το αντίστροφο του alpha και τα προσθέτει. Όταν έχετε χιλιάδες επικαλυπτόμενα διαφανή σωματίδια — όπως καπνό, φωτιά ή μαγικά εφέ σε ένα βιντεοπαιχνίδι — η εκτέλεση αυτού του πολλαπλασιασμού σε πραγματικό χρόνο για κάθε pixel επηρεάζει σοβαρά τα FPS και την απόδοση της GPU.
Εδώ το Premultiplied Alpha γίνεται απαραίτητο. Μια εικόνα με προ-πολλαπλασιασμένο alpha ενσωματώνει αυτό το πρώτο βήμα πολλαπλασιασμού απευθείας στα δεδομένα του texture πριν φτάσει στη μηχανή. Χρησιμοποιώντας το προηγούμενο παράδειγμα του 50% διαφανούς λευκού pixel, η έκδοση premultiplied πολλαπλασιάζει τις τιμές RGB (255) με το ποσοστό alpha (0.5), αποθηκεύοντας το pixel ως R:127, G:127, B:127, A:127. Κάνοντας αυτούς τους υπολογισμούς εκ των προτέρων με το δωρεάν εργαλείο μας, γλιτώνετε την GPU από αυτή τη διαδικασία κατά την εκτέλεση, εξασφαλίζοντας πολύ πιο αποτελεσματικό compositing και πιο ομαλή απόδοση στο παιχνίδι.