Τεχνικές σκίασης/απεικόνισης βασισμένες στις φυσικές αρχές σχηματισμού εικόνας Η αρχιτεκτονική αλυσίδας γραφικών (κάθε πολύγωνο περνάει χωριστά από την αλυσίδα) σε συνδυασμό με τοπικά μοντέλα σκίασης έχει πολλά πλεονεκτήματα Ταχύτητα Υποστήριξη από το hardware Τεχνάσματα που μπορούν να προσομοιάσουν φαινόμενα καθολικής σκίασης Υπάρχούν όμως φαινόμενα καθολικής σκίασης που δεν μπορούμε να προσομοιάσουμε
Τεχνικές σκίασης/απεικόνισης βασισμένες στις φυσικές αρχές σχηματισμού εικόνας Χρήση καθολικών τεχνικών σκίασης / απεικόνισης βασισμένων στις φυσικές αρχές σχηματισμού εικόνας Σχηματισμός εικόνας βασισμένος στην πορεία των ακτινών του φωτός Διατήρηση της ενέργειας του φωτός σε μια σκηνή Εξίσωση απεικόνισης (rendering equation) & λύση της για συγκεκριμένες συνθήκες (επιφάνειες διάχυτης ανάκλασης) με την τεχνική radiosity
Παρακολούθηση ακτινών (ray tracing) Οι ακτίνες που φεύγουν από τη φωτεινή πηγή φτάνουν στο φακό ή χάνονται στο άπειρο, μέσω αντανακλάσεων και διάθλασης. Οι περισσότερες ακτίνες δεν φτάνουν στο φακό: σπατάλη πόρων Αντίστροφη διαδικασία : στέλνω ακτίνες από το φακό (COP) και διαμέσου κάθε pixel και ακολουθώ την πορεία τους. Πρέπει να αποδώσω τιμή σε κάθε pixel
Παρακολούθηση ακτινών (ray tracing)
Παρακολούθηση ακτινών (ray tracing) Ηακτίναφεύγειστοάπειρο: το pixel παίρνει την τιμή του background Η ακτίνα τέμνει ένα (αδιαφανές) αντικείμενο: το pixel παίρνει το χρώμα της τομής Αν υπολογίσω το χρώμα με το μοντέλο Phong, χωρίς αλληλεπιδράσεις τότε έχω ίδιο αποτέλεσμα με το local rendering (π.χ. της OpenGL) Διαφορά: ο ray tracer είναι image-oriented τεχνική
Παρακολούθηση ακτινών (ray tracing) Βελτίωση: εύρεση αν το σημείο τομής φωτίζεται απ ευθείας από κάποια πηγή με χρήση shadow / feeler rays από την τομή προς την πηγή
Παρακολούθηση ακτινών (ray tracing) Αν η ακτίνα σκιάς τέμνει αδιαφανή επιφάνεια πριν φτάσει στην πηγή τότε το σημείο στη σκιά Η πηγή δεν επιδρά στον τοπικό υπολογισμό φωτεινότητας (εκτός από την ambient συνιστώσα) Κέρδος: σκιές Κόστος: υπολογισμοί για την ακτίνα σκιάς (μία για κάθε τομή ακτίνας με αντικείμενο) Χειρισμός ημιδιαφανών αντικειμένων
Παρακολούθηση ακτινών (ray tracing) Περαιτέρω βελτίωση: αναδρομικό ray tracing Στην τομή της ακτίνας με το αντικείμενο κάνω 3 υπολογισμούς: Υπολογισμός της τοπικής σκίασης (με πιθανή χρήση shadow rays): απευθείας επίδραση της πηγής & ambient φωτός Υπολογισμός της επίδρασης από άλλα σώματα Αποστολή ακτίνας προς την κατεύθυνση τέλειας κατευθυντικής ανάκλασης Αποστολή ακτίνας προς την κατεύθυνση διάθλασης
Παρακολούθηση ακτινών (ray tracing) Για κάθε μια από τις ακτίνες κατευθυντικής ανάκλασης και διάθλασης κάνω τις ίδιες ενέργειες Υπολογισμός πιθανής τομής με αντικείμενα, τοπικός υπολογισμός φωτεινότητας στην τομή, αποστολή ακτινών κλπ Ο τελικός υπολογισμός αναδρομικός και από το τέλος προς την αρχή (bottom-up) Αθροίζω όλες τις συνεισφορές (με συντελεστές ανάκλασης) Δημιουργία δένδρου ακτινών
Παρακολούθηση ακτινών (ray tracing) Ουσιαστικά βλέπω τι φως έφτασε στο αντικείμενο θεωρώντας το τέλεια ανακλαστικό (και πιθανά ημιδιαφανές) Κανονικά θα έπρεπε να δω και τι γίνεται προς άλλες κατευθύνσεις (διάχυτη ανάκλαση) αλλά η πολυπλοκότητα τεράστια Το ray tracing αποδίδει σωστά επιφάνειες με μεγάλη κατευθυντική ανάκλαση
Παρακολούθηση ακτινών (ray tracing) Για τον αναδρομικό υπολογισμό πρέπει το πρόγραμμα να διαθέτει όλα τα αντικείμενα στη μνήμη Η μεγαλύτερη πολυπλοκότητα προέρχεται από τον υπολογισμό των τομών ακτίνας - αντικειμένων Επιφάνεια f(p)=0 Τομή: εύρεση του t για το οποίο f(p 0 +td)=0
Παρακολούθηση ακτινών (ray tracing) Αναλυτικός ή αριθμητικός υπολογισμός ανάλογα με τον τύπο της επιφάνειας Εύκολο για επιφάνειες 2ου βαθμού ή επίπεδα Τα επίπεδα δεν απαντώνται συχνά, συνήθως έχω πολύγωνα (τμήματα επιπέδου) ή πολύεδρα που προκύπτουν ως τομές επιπέδων
Παρακολούθηση ακτινών (ray tracing) Για πολύγωνα: υπολογισμός τομής με το αντίστοιχο επίπεδο και εύρεση αν το σημείο εσωτερικό του πολυγώνου Δοκιμές αντίστοιχες με αυτές για το γέμισμα ενός πολυγώνου Odd-even test, winding number
Έλεγχος εσωτερικού σημείου Αλγόριθμός άρτιων περιττών Αν ο αριθμός τομών του πολυγώνου με ευθεία από ένα σημείο προς ένα σημείο στο άπειρο (έξω από την έκταση του πολυγώνου) περιττός, το σημείο εντός του πολυγώνου. Μόνο για απλά πολύγωνα Η ευθεία δεν πρέπει να τέμνει κορυφές!
Έλεγχος εσωτερικού σημείου Αλγόριθμός περιέλιξης Μπορεί να εφαρμοστεί και σε μη απλά πολύγωνα. Φέρνω ευθεία από το υπό εξέταση σημείο προς ένα σημείο εκτός της έκτασης του πολυγώνου, μη παράλληλη με τις πλευρές του πολυγώνου. Ορίζω μια φορά διάσχισης του πολυγώνου Ορίζωτοκάθετοδιάνυσμαστηνευθεία (οποιοδήποτε από τα δύο πιθανά)
Έλεγχος εσωτερικού σημείου Ο αριθμός περιέλιξης είναι αρχικά μηδέν και αυξάνεται (μειώνεται) κατά 1 για κάθε τομή με ακμή του πολυγώνου που το εσωτερικό γινόμενο κάθετου διανύσματος και διανύσματος της ακμής (όπως ορίζεται από τη φορά) είναι θετικός (αρνητικός) Αν ο αριθμός περιέλιξης μη μηδενικός, το σημείο εντός του πολυγώνου.
Παρακολούθηση ακτινών (ray tracing) Για τα πολύεδρα: τα θεωρώ τομές επιπέδων Τα κάθετα διανύσματα όλων των επιπέδων δείχνουν προς τα έξω Επίπεδα που βλέπουν προς τον παρατηρητή (μπροστά) και αντίθετα από αυτόν (πίσω) Κάθετο διάνυσμα προς την αρχή ή την κατεύθυνση της ακτίνας Δοκιμή τομής ακτίνας- κυρτού πολυέδρου (η ακτίνα μπαίνει & βγαίνει 1 φορά)
Παρακολούθηση ακτινών (ray tracing)
Παρακολούθηση ακτινών (ray tracing) Αν υπάρχει τομή η ακτίνα μπαίνει από ένα επίπεδο που βλέπει τον παρατηρητή και βγαίνει από ένα που βλέπει αντίθετα Υπολογισμός τομών με όλα τα επίπεδα Είσοδος: μακρινότερη τομή με «μπροστά» επίπεδα Έξοδος: κοντινότερη τομή με «πίσω» επίπεδα
Παρακολούθηση ακτινών (ray tracing) Σημείο εισόδου πλησιέστερα στην αρχή της ακτίνας από το σημείο εξόδου Αν όχι, δεν έχω τομή
Παρακολούθηση ακτινών (ray tracing) Τερματισμός παρακολούθησης ακτινών Όταν ξεπεράσω ένα επίπεδο αναδρομής Όταν η ακτίνα φτάσει σε μεγάλη απόσταση (πάει στο άπειρο) Σφαίρα που περικλείει τα αντικείμενα, κεντραρισμένη στην αρχή. Αν η ακτίνα τμήσει τη σφαίρα τερματίζω Όταν η ενέργεια της ακτίνας πέσει κάτω από κάποια τιμή (υπολογίζοντας την απόσβεση από ανάκλαση / διάθλαση)
Παρακολούθηση ακτινών (ray tracing) Μείωση πολυπλοκότητας υπολογισμού τομών με χρήση bounding boxes. Εύκολος υπολογισμός τομής ακτίνας με bounding box Αναλυτικός υπολογισμός μόνο αν έχω τομή με το bounding box.
Παρακολούθηση ακτινών (ray tracing) Το ray tracing ουσιαστικά κάνει δειγματοληψία του χώρου Αποστολή ακτινών ανάλογα με τις τομές από προηγούμενες ακτίνες (stochastic sampling) Πυκνότερες ακτίνες εκεί που έχω πολλές τομές Κίνδυνος να «χάσω» μικρά αντικείμενα Το ray tracing προσφέρεται για παράλληλη υλοποίηση Τα αντικείμενα πρέπει να είναι διαθέσιμα σε κάθε ακτίνα (shared memory architectures)
Εξίσωση απεικόνισης (rendering equation) Φως μορφή ενέργειας Απεικόνιση βασισμένη στην αρχή διατήρησης της ενέργειας Κλειστό περιβάλλον με αντικείμενα
Εξίσωση απεικόνισης (rendering equation) Τα αντικείμενα μπορούν να απορροφήσουν, ανακλάσουν ή να εκπέμψουν φως Στο ray tracing ο σχηματισμός της εικόνας γίνεται ακολουθώντας τις ανακλάσεις ακτινών στα αντικείμενα Όταν παρατηρούμε μια σκηνή βλέπουμε την σταθερή (τελική) κατάσταση, δεν ενδιαφέρουν οι αντανακλάσεις που έλαβαν χώρα Ενεργειακή προσέγγιση: απευθείας προσδιορισμός της τελικής κατάστασης
Εξίσωση απεικόνισης (rendering equation) Σε μια επιφάνεια «έρχονται» και «φεύγουν» ακτίνες Ακτίνες που φεύγουν: από εκπομπή ή ανάκλαση φωτός Ακτίνες που έρχονται: από εκπομπή ή ανάκλαση φωτός από άλλα σώματα
Εξίσωση απεικόνισης (rendering equation) Το φως που φεύγει από το p ίσομετοφως που φτάνει από όλα τα p του χώρου και το φως που εκπέμπει το p μείον το φως που (πιθανά) απορροφάται.
Εξίσωση απεικόνισης (rendering equation) i( pp, ') v( pp, ')( ε( pp, ') ρ( pp, ', p'') i( p', p'') dp'') = + i(p,p ): ένταση φωτός (ενέργεια/χρόνο) που φεύγει από το p και φτάνει στο p Ηέντασηπουφεύγειαπότοp αποτελείται από δύο μέρη: Εκπομπή φωτός προς το p: όρος ε(p,p ) Ανακλάσεις στο p προς το p από όλα τα σημεία του χώρου p
Εξίσωση απεικόνισης (rendering equation) ρ(p,p,p ): συνάρτηση ανάκλασης, χαρακτηρίζει την επιφάνεια στο p v(p,p ): 0 αν υπάρχει αδιαφανής επιφάνεια μεταξύ p,p 1/r 2 όρος απόσβεσης με την απόσταση Απλή μορφή δύσκολη επίλυση: η ι έχει 6 ανεξάρτητες μεταβλητές, ηρ9 Πρέπει να εισαχθεί και το μήκος κύματος του φωτός
Εξίσωση απεικόνισης (rendering equation) Επίλυση δυνατή μόνο σε ορισμένες περιπτώσεις Για επιφάνειες τέλειας κατευθυντικής ανάκλασης η συνάρτηση ανάκλασης μη μηδενική μόνο για διανύσματα pp, p p που ικανοποιούν την συνθήκη τέλειας ανάκλασης. Στην περίπτωση αυτή το ray tracing αποτελεί μια λύση της εξίσωση απεικόνισης
Εξίσωση απεικόνισης (rendering equation) Δυνατότητα επίλυσης όταν οι επιφάνειες τέλειας διάχυτης ανάκλασης Η επιφάνεια αντανακλά και εκπέμπει φως το ίδιο προς όλες τις κατευθύνσεις, φαίνεται το ίδιο από όλες τις οπτικές γωνίες Τα ρ, ε δεν εξαρτώνται από το p
Ητεχνικήradiosity Τεχνικές τοπικής σκίασης δεν μπορούν να συμπεριλάβουν αλληλεπιδράσεις φωτός από διάχυτη ανάκλαση
Ητεχνικήradiosity Ητεχνικήradiosity λύνει την εξίσωση απεικόνισης για επιφάνειες τέλεια διαχυτικής ανάκλασης. Πρωτοχρησιμοποιήθηκε σε προβλήματα μετάδοσης θερμότητας. Χωρισμός της σκηνής σε μικρά επίπεδα πολύγωνα (patches), τέλεια διαχυτικά Κάθε ένα μπορεί να απεικονιστεί με ένα μοναδικό χρώμα
Ητεχνικήradiosity Υπολογισμός του χρώματος (ανεξάρτητο από τον παρατηρητή) Απεικόνιση της σκηνής (του συνόλου των patches) με κλασικό pipeline rendering n patches 1 μέχρι n με επιφάνεια a i b i radiosity του patch i: ένταση φωτός (ενέργεια/χρόνο) ανά μονάδα επιφάνειας που φεύγει από το patch (w/m 2 ) Γενικά b i (λ)
Ητεχνικήradiosity Η συνολική ένταση για ένα patch b i a i Συνολική ένταση φωτός που φεύγει: ένταση εκπεμπόμενου φωτός (σταθερή στην επιφάνεια) + ένταση φωτός που φτάνει στο i από άλλες επιφάνειες και ανακλάται ba = ea + f b a i i i i ρ ι ji j j j= 0 n
Ητεχνικήradiosity f ji : form factor των patches i, j : ποσοστό έντασης φωτός που φεύγει από το patch j και φτάνει στο patch i Εξαρτάται από τον σχετικό τους προσανατολισμό, την απόσταση και το αν υπάρχουν άλλα patches ενδιάμεσα. ρ ι ανακλαστικότητα του patch f ji a j = f ij a i ba = ea + f b a i i i i ρ ι ij j i j= 0 n
Ητεχνικήradiosity Εξίσωση radiosity b = e + f b i i ρ ι ij j j= 0 n Έχουμε n γραμμικές εξισώσεις με n αγνώστους (αν ξέρουμε τα form factors) Σε μορφή πινάκων (R διαγώνιος) b= e+ RFb = [ ] 1 b I RF e
Ητεχνικήradiosity Πρακτικές δυσκολίες στην επίλυση Τεράστιος αριθμός patches, επίλυση με τον κλασικό τρόπο συνήθως όχι δυνατή Επίλυση στηριζόμενοι στο γεγονός ότι ο F αραιός Επαναληπτικές μέθοδοι, μέθοδος Jacobi k + 1 k b = e+ RFb Tο γινόμενοπινάκωνo(n) επειδή ο F αραιός. Η μέθοδός συγκλίνει πάντα στη λύση
Ητεχνικήradiosity n k+ 1 k i = i + ρ ι ij j j= 0 b e f b Αν χρησιμοποιώ τις νέες τιμές των b i μόλις υπολογίζονται παίρνω τη μέθοδο Gauss-Seidel i 1 n k+ 1 k+ 1 k i = i + ρ ι ij j + ρ ι ij j j= 0 j= i+ 1 b e f b f b
Ητεχνικήradiosity Άλλη πιθανή ερμηνεία 1 [ I RF] = ( RF) i= 0 b = e + RF e + RF e + RF e + i 2 3 ( ) ( ) ( )...
Ητεχνικήradiosity Το δύσκολο κομμάτι είναι ο υπολογισμός των form factors Βήματα τεχνικής radiosity Χωρισμός της σκηνής σε patches Περισσότερα patches καλύτερη πιστότητα, μεγαλύτερη πολυπλοκότητα Διαδραστικός/προοδευτικός χωρισμός, μικρότερα patches εκεί που απαιτείται
Ητεχνικήradiosity
Ητεχνικήradiosity Υπολογισμός των form factors Απόδοση τιμών στα e, R Εύρεση των b και απεικόνιση των patches σαν πολύγωνα με diffuse reflection Mixed rendering (radiosity, ray tracing)
Διατάξεις μεγάλης κλίμακας Σε πολλές εφαρμογές έχω εκατομμύρια πολύγωνα Ανάγκη για συσκευές απεικόνισης με μεγάλη ανάλυση Ανάγκηγιαισχυράσυστήματαγραφικών
Διατάξεις μεγάλης κλίμακας Χρήση πολλών προβολικών με μερική επικάλυψη (Power wall) Χρήση flat screens σε διάταξη πίνακα
Διατάξεις μεγάλης κλίμακας Χρήση ομάδων υπολογιστών (cluster of computers) Μειωμένο κόστος σε σχέση με τα supercomputers Δύο είδη μονάδων επεξεργασίας: Geometry processors: transformations, clipping, shading Raster processors: rasterization, polygon filling, texture mapping Διάκριση, ιστορικής μόνο αξίας πλέον.
Διατάξεις μεγάλης κλίμακας Το βασικό πρόβλημα είναι πως κατανέμουμε το φόρτο στα υποσυστήματα (processor load balancing). Πλήρη εκμετάλλευση όλων των επεξεργαστών Κύριο γνώρισμα που διαφοροποιεί τους αλγορίθμους: που γίνεται η απόκρυψη κρυμμένων επιφανειών (ταξινόμηση) 3 κατηγορίες αλγορίθμων
Sort Middle rendering Κατανομή αρχετύπων με τη σειρά που δημιουργούνται, στους GP. Ένας GP μπορεί να επεξεργαστεί αρχέτυπα που βρίσκονται/θα βρεθούν οπουδήποτε στο χώρο. Χωρισμός του frame buffer σε τμήματα και ανάθεση κάθε τμήματος σε έναν raster processor (RP) Πρέπει να στείλουμε τα επεξεργασμένα αρχέτυπα στον κατάλληλο RP
Sort Middle rendering Απαιτείται διάταξη πριν το rasterization (sort middle) Προσφιλής μέθοδος σε high-end graphics workstations
Sort Last Rendering Ίδιος αριθμός GP, RP, αντιστοιχία ενός GP σε έναν RP. Πολλά PCs σε δίκτυο. Κατανομή αρχετύπων με τη σειρά που δημιουργούνται στους GP. Κάθε RP πρέπει να έχει τον δικό του πλήρη frame buffer & z-buffer. Κάθε ζεύγος GP-RP απεικονίζει σωστά τμήμα της γεωμετρίας Πρέπει να γίνει σύνθεση
Sort Last Rendering
Sort Last Rendering Την πληροφορία βάθους που χρειαζόμαστε για τη σύνθεση την έχουμε στους z-buffers. Απλούστερη προσέγγιση σύνθεσης: binary tree compositing.
Sort Last Rendering Log 2 n βήματα compositing, σε κάθε νέο βήμα χρήση των μισών επεξεργαστών Καλύτερη προσέγγιση: binary swap compositing
Sort Last Rendering n-1 βήματα Σε κάθε βήμα ένας επεξεργαστής παίρνει ένα τμήμα από τον προηγούμενο του και στέλνει ένα τμήμα στον επόμενό του Το τμήμα που λαμβάνει το συνθέτει και το στέλνει δεξιά στο επόμενο βήμα. Στο τέλος κάθε επεξεργαστής έχει το 1/n του frame buffer με σωστή μορφή Σε κάθε βήμα απασχολούνται όλοι οι επεξεργαστές
Sort First Rendering Αν ξέραμε απ την αρχή που στη σκηνή θα βρεθεί ένα αρχέτυπο και πού θα προβληθεί θα μπορούσαμε να αποδώσουμε ένα τμήμα της οθόνης σε ένα ζεύγος GP-RP Sorting στην αρχή
Sort First Rendering Δεν είναι δυνατόν να ξέρουμε εκ των προτέρων που θα πάνε τα αρχέτυπα Σε κάποια προβλήματα, ηδομήτης γεωμετρίας βοηθάει Αν αναθέσω πολύγωνο σε λάθος επεξεργαστή μπορεί αυτός να το στείλει στον σωστό Δεν κάνει καλό load balancing
Sort First Rendering Ιδανική αρχιτεκτονική για απεικονίσεις υψηλής ανάλυσης (power wall) Cluster of PCs, ένα για κάθε κομμάτι του wall, χωρίς τα μειονεκτήματα του sort last rendering Χωρίς την ανάγκη να διαθέτουν όλα frame buffer ίσο με το power wall Δεν απαιτείται μεταφορά δεδομένων στο sorting