Γραφικά Υπολογιστών Εισαγωγή Γ. Παπαϊωάννου 2008-13
Σκοπός του Μαθήματος Εισαγωγή στις τεχνολογίες παραγωγής συνθετικής εικόνας Ανάλυση των βασικών μεθόδων απεικόνισης 2D δεδομένων Εισαγωγή στις δομές και μεθόδους περιγραφής 3D δεδομένων Παρουσίαση των βασικών αλγορίθμων 3D απεικόνισης Επιπρόσθετα: Εξοικείωση με τον προγραμματισμό εφαρμογών τριδιάστατων γραφικών (εργαστηριακό μάθημα OpenGL σε C/C++)
Εφαρμογές των Γραφικών Υπολογιστών (1) Ειδικά εφέ για ταινίες, διαφημιστικά κλπ Απεικόνιση και ζωντάνεμα του αδύνατου και εξοπραγματικού Κίνηση σε οποιαδήποτε κλίμακα μεγέθους Επιστημονική οπτικοποίηση Αναζήτηση σχέσεων και ανάδειξη πληροφορίας σε μεγάλα σύνολα δεδομένων Διαδραστική προσομοίωση Computer-Aided Design / Manufacturing / Engineering Σχεδιασμός πραγματικών προϊόντων με εικονικά εργαλεία μέσα στον υπολογιστή Προεπισκόπηση, κατεύθυνση μηχανών παραγωγής
Εφαρμογές των Γραφικών Υπολογιστών (1) Computer Games Οι πιο αποδοτικοί αλγόριθμοι γραφικών στοχεύουν και έχουν δημιουργηθεί για αυτή την αγορά Μεγάλο μερίδιο της βιομηχανίας υπολογιστών GUIs Υλοποίηση και επιτάχυνση διεπαφών Εικονική πραγματικότητα και φιλικά προς το χρήστη περιβάλλοντα διεπαφής Computer Art
Γιατί Επικοινωνία με Εικόνα; Γιατί «μια εικόνα αξίζει 1000 λέξεις» Η χρήση γραφικών και σχηματικών παραστάσεων απλουστεύει την κατανόηση σύνθετων σχέσεων και δεδομένων Αποτελεί πιο άμεσο και γρήγορο τρόπο επικοινωνίας απ ότι το κείμενο Παράδειγμα: Γ - Ο Α είναι παιδί του Β - Ο Β είναι παιδί του Γ και πατέρας του Ε - Ο Δ είναι παιδί του Γ Ε Β Δ
Η Ψηφιακή Εικόνα Είναι η χωρικά και χρωματικά κβαντισμένη οπτική πληροφορία, την οποία αναπαριστούμε με ψηφιακή μορφή σε έναν υπολογιστή. Τα χρώματα αποδίνονται ως πεπερασμένος αριθμός συνδυασμών βασικών χρωματικών συνιστωσών Οι διαφορετικές τιμές χρώματος διατάσσονται πάνω σε ένα κανονικό πλέγμα από εικονοστοιχεία (pixels) Το πλέγμα αυτό είναι στη συνηθέστερη περίπτωση ορθογώνιο
Η Ψηφιακή Εικόνα (συνέχεια) Ο όρος ψηφιακή εικόνα περιλαμβάνει τόσο την απεικόνιση σε ενεργό μέσο όπως η οθόνη, όσο και σε έντυπο υλικό Raster: Πίνακας εικονοστοιχείων
Αναπαράσταση Ψηφιακής Εικόνας Αναπαρίσταται σε ψηφιακή μορφή ως πίνακας Σε κάθε θέση είναι αποθηκευμένη η φωτεινότητα ή η χρωματική πληροφορία σε διακριτή, κβαντισμένη μορφή Μονοχρωματικά συστήματα απεικόνισης: pixel = ακέραιος αριθμός = φωτεινότητα του pixel (συνήθως 1 byte: 256 διαβαθμίσεις του γκρι) Η κωδικοποίηση του χρώματος σε εικόνες που προορίζονται για οθόνη (ενεργή απεικόνιση) : Μοντέλο RGB Δεν είναι το μοναδικό μοντέλο αναπαράστασης χρώματος Καταλληλότερο για οδήγηση συσκευών εκπομπής φωτός Γρήγοροι υπολογισμοί λόγω γραμμικής αντιστοιχίας με τη μετρούμενη (αντικειμενική) ένταση.
Κωδικοποίηση Χρώματος Συνηθισμένη απόδοση χρωμάτων: 8 bits ανά χρωματικό κανάλι, δηλαδή 24 bits ανά pixel (RGB) Σπανιότερα αποθηκευόταν με ευκρίνεια 12 ή 16 bits ανά κανάλι 2 24 χρώματα είναι αρκετά; Δυναμικό εύρος εντάσεων του ματιού: διακρίνονται οι διαβαθμίσεις Σήμερα: Ακρίβεια έως και 32 bits ανά κανάλι (κινητής υποδιαστολής)
Παλέτες Χρωμάτων Παλιά: η αποθήκευση εικόνων γινόταν με τη χρήση μιας παλέτας: Οικονομία μνήμης γραφικών Παλέτα χρωμάτων = προκαθορισμένος πίνακας από το υλικό ή την εφαρμογή που περιέχει τη χρωματική πληροφορία που θα σταλεί στην έξοδο προς την οθόνη Η ψηφιακή εικόνα περιέχει αριθμούς αναφοράς (IDs) στην προκαθορισμένη παλέτα που αντιστοιχούν στα χρώματα (έμμεση κωδικοποίηση χρώματος) Σήμερα, GIF format (παλέτα 256 χρωμάτων)
«Πραγματικό» Χρώμα Ο όρος true color επινοήθηκε για την περιγραφή των εικόνων με μια απευθείας αναπαράσταση των χρωμάτων με φωτεινότητα ανά κανάλι, σε αντιδιαστολή με την τεχνική της παλέτας 8 bits Παλέτα Πραγματικό χρώμα pixels ID ID ID > 32 bits pixels R G B R G B 0 1 255 R G B R G B R G B
Εσωτερική Αναπαράσταση Εικόνας void GetPixel(char * pixel, int i, int j, int w, int h, void * data) { } memcpy(pixel, ((char*)data)+3*(w*j+i), 3);
Είδη Γραφικών 2D (2Δ) Διδιάστατα (επίπεδα) γραφικά Είναι η δημιουργία και μετατροπή σε ψηφιακή εικόνα επίπεδων διανυσματικών σχημάτων και συμβόλων (glyphs) Η διαδικασία αυτή αποκαλείται «Rasterization», y (10,11) (1,1) x Αρχική Πληροφορία Απεικόνιση γραμμής
Απεικόνιση «Εγγράφων» και Κειμένου Η απεικόνιση κειμένου σε μια τυπική οθόνη είναι μια διαδικασία παραγωγής 2Δ γραφικών:
Είδη Γραφικών 3D (3Δ) Τριδιάστατα γραφικά Είναι οι μέθοδοι περιγραφής, προβολής και μετατροπής σε ψηφιακή εικόνα τριδιάστατων αντικειμένων (συνθετική εικόνα) Τα 3Δ γραφικά είναι πολύ ευρύτερος τομέας από τα 2D γραφικά με αρκετά σύνθετες διαδικασίες Αλγόριθμοι απεικόνισης 3D συντεταγμένες και συνδέσεις Συνθετική εικόνα
Γραφικά Πραγματικού (ή Μη;) Χρόνου Τα φωτορεαλιστικά γραφικά χρησιμοποιούν πολύπλοκες προσομοιώσεις φυσικών φαινομένων για τη σύνθεση της εικόνας: Δε μπορούν να υπολογιστούν σε πραγματικό χρόνο Γραφικά πραγματικού χρόνου: Προσέγγιση, προϋπολογισμός και επιτάχυνση με H/W των παραπάνω μεθόδων
Γραφικά Πραγματικού Χρόνου Στο μάθημα αυτό θα ασχοληθούμε με γραφικά πραγματικού χρόνου, δηλαδή εκείνες τις τεχνικές σύνθεσης εικόνας που στηρίζονται στην άμεση απεικόνιση των γεωμετρικών δεδομένων Άμεση απεικόνιση: Η γεωμετρία σχεδιάζεται όπως έρχεται στον αλγόριθμο απεικόνισης, χωρίς να μεσολαβήσει στάδιο προσομοίωσης Φωτισμός και χρώμα: Τοπική εξάρτηση Υποβοήθηση για ρεαλιστικότερα αποτελέσματα με: Shaders Υφή και σκιές
Τοπικός Καθολικός Φωτισμός Ανάκλαση/διάθλαση Color Bleeding Έμμεσος Φωτισμός Σκιές
Τα Κύρια Στάδια της Απεικόνισης
Τα στάδια της (3Δ) Απεικόνισης
Η Σύγχρονη Κάρτα Γραφικών Geometry Processor
Το H/W Γραφικών Μαζική Παραλληλία
GPUs Οι GPUs είναι μαζικά παράλληλοι επεξεργαστές Πολλές ΜΗ ΓΡΑΦΙΚΕΣ εφαρμογές σήμερα προσπαθούν να εκμεταλλευτούν την ισχύ των GPUs
Τυπική Αρχιτεκτονική μιας Σύγχρονης GPU
Προσαρμογέας Οθόνης Καταχωρητής Εικόνας: τμήμα της μνήμης γραφικών Παλιά, τη σχεδίαση των βασικών 2D σχημάτων αναλάμβανε ο κεντρικός επεξεργαστής του συστήματος (σημερινό VGA mode) Ο ρόλος του προσαρμογέα οθόνης ήταν: Nα παρέχει τον καταχωρητή εικόνας Nα τον σαρώνει σειριακά και να οδηγεί τον DAC που έστελνε τα αναλογικά σήματα για τα τρία χρώματα στην οθόνη Αλγόριθμοι σχεδίασης σχημάτων τυποποιήθηκαν και πέρασαν σε ειδικά ολοκληρωμένα κυκλώματα της κάρτας γραφικών, τους rasterisers (αρχικά ονομάστηκαν window accelerators) Αποδέσμευση της CPU: Στέλνει απλά εντολές στο hardware μέσω του οδηγού της κάρτας γραφικών
Χαρακτηριστικά μιας Κάρτας Γραφικών Ποσότητα και ταχύτητα Μνήμης οθόνης (σε GB και GB/s ) Πλάτος διαύλου μνήμης (bits) Μέγιστη ανάλυση (σε pixels) Γραμμικότητα χρωματικής απόδοσης Αριθμός παράλληλων πυρήνων (shader cores) Ταχύτητα πυρήνων GPU Interfaces (είδος, αριθμός, TV out, DVI-D, HD-15, HDTV/HDMI, υποστήριξη stereo κλπ ) Και πλέον κατανάλωση! Υποστήριξη χαρακτηριστικών (GLSL και HLSL version, OpenGL και D3D, CUDA, OpenCL)
Καταχωρητής Εικόνας (Frame Buffer) RAM ταυτόχρονης εγγραφής και ανάγνωσης Οι εντολές σχεδίασης φτάνουν στον επεξεργαστή απεικόνισης γραφικών, ο οποίος γεμίζει τα pixels του καταχωρητή εικόνας που αντιστοιχούν στο σχήμα Κύκλωμα οδήγησης εξόδου: Διαβάζει ακολουθιακά τα δεδομένα από τη μνήμη Τροφοδοτεί συνεχώς την οθόνη με πληροφορία για κάθε pixel Οι δύο λειτουργίες γίνονται ασύγχρονα: Επεξεργαστής γραφικών: Τυχαία προσπέλαση στον frame buffer Κύκλωμα εξόδου: Σειριακή προσπέλαση
Flickering και Double-buffering Τυχαία εγγραφή/σειριακή ανάγνωση flicker Λύση: Δύο αντίγραφα του frame buffer Στον ένα καταχωρητή γράφει η GPU Από τον άλλο καταχωρητή διαβάζει το κύκλωμα εξόδου Όταν παραχθεί το σήμα κάθετου συγχρονισμού (VSYNC), οι δείκτες διευθύνσεων των καταχωρητών εναλλάσονται Αποτέλεσμα: O επεξεργαστής σχεδιάζει πάντα στον κρυφό buffer Η εικόνα εξόδου είναι καθαρή χωρίς σκουπίδια από προηγούμενη σχεδίαση
Δεδομένα Σχεδίασης Τι είναι; Τύπος αντικειμένου σχεδίασης (γραμμές, τρίγωνα, αναλυτικές επιφάνειες κλπ) Που είναι; Συντεταγμένες σημείων στο χώρο ή στο επίπεδο Πως είναι; Συνδεσμολογία συντεταγμένων Με τι μοιάζουν; Χρώμα, υφή, σκίαση, ανακλαστικότητα κλπ
Ανασκόπηση Βασικών Γεωμετρικών Εννοιών Χώρος 3D σημείων: Χώρος 3D διανυσμάτων: AB AC CB C a A 3 E Σημείο + Διάνυσμα = Σημείο Σημείο + Σημείο = ΔΕΝ ΥΠΑΡΧΕΙ! Διάνυσμα + Διάνυσμα = Διάνυσμα R P, P E, V = P P R 3 3 1 2 2 1 3 = +, E = ( a A, a A, a A ) x y z 3 Α C Β
Διανύσματα Μήκος Διανύσματος: V = v + v + v = 2 2 2 x y z P P = ( x x ) + ( y y ) + ( z z ) 2 2 2 2 1 2 1 2 1 2 1 Μοναδιαίο διάνυσμα: δηλώνει κατεύθυνση και έχει μοναδιαίο μήκος. Θα το συναντήσουμε αργότερα και ως «κανονικό διάνυσμα» επιφανείας N = V V
Διανύσματα Βάσης Ο χώρος R 3 Ο R 3 καθορίζεται από οποιαδήποτε τριάδα γραμμικά ανεξάρτητων διανυσμάτων, δηλαδή κάθε διάνυσμα του R 3 μπορεί να περιγραφεί ως γραμμικός συνδυασμός των διανυσμάτων βάσης Θα χρησιμοποιούμε την ορθοκανονική βάση του R 3 η οποία αποτελείται από τρία μοναδιαία διανύσματα που συμπίπτουν με τους άξονες Χ, Υ και Ζ:
Το Ορθοκανονικό Σύστημα Συντεταγμένων i, jk, i = (1,0,0) j = (0,1, 0) k = (0, 0,1) j i k
Γινόμενα Διανυσμάτων Εσωτερικό Γινόμενο: Αποτέλεσμα ΑΡΙΘΜΟΣ AB = a b + a b + a b x x y y z z Εξωτερικό Γινόμενο: Αποτέλεσμα ΔΙΑΝΥΣΜΑ A B= ( ab ab) i+ ( ab ab) j+ ( ab ab) k y z z y z x x z x y y x A B B A
Πίνακες Το διάνυσμα ως πίνακας: Πολλαπλασιασμός πινάκων Πχ: ax A= ( ax, ay, az) = a y ax ay a = z a z = C= AB c ab n : ij in n= 1 nj a b e ae + bf c d = f ce + df T
Σχεδίαση Βασικών 2D Σχημάτων Γεωμετρία στο Επίπεδο Μετασχηματισμοί στο Χώρο Ιεραρχίες Αντικειμένων Προβολές Σχεδίαση 3D Πολυγώνων Φωτισμός Επιφανειών Απεικόνιση Υφής Βασική Κίνηση Αλγόριθμοι Σκιών Παρακολούθηση Ακτίνας