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

Τα περισσότερα από τα οπτικά εφέ που εμφανίζονται σήμερα στα παιχνίδια εξαρτώνται από την έξυπνη χρήση υφής - τα παιχνίδια χωρίς αυτά θα είναι θαμπό και άψυχα. Ας πάμε λοιπόν για καταδύσεις και δείτε πώς λειτουργούν!

Όπως πάντα, εάν δεν είστε έτοιμοι να κάνετε μια βαθιά βουτιά στον ιστό, μην πανικοβληθείτε - μπορείτε να ξεκινήσετε Δημιουργία 3D παιχνιδιών 101. Αλλά μόλις περάσουν τα βασικά, διαβάστε για την επόμενη ματιά μας στον κόσμο των τρισδιάστατων γραφικών.

Ας ξεκινήσουμε απλά

Επιλέξτε τα 3D παιχνίδια με τις καλύτερες πωλήσεις τους τελευταίους 12 μήνες και όλοι θα μοιραστούν κάτι κοινό: χάρτες υφής (ή απλά υφές). Αυτός είναι ένας πολύ κοινός όρος, οι περισσότεροι άνθρωποι θα δημιουργήσουν την ίδια εικόνα όταν εξετάζουν τις υφές: ένα απλό, τετράγωνο ή ορθογώνιο (γρασίδι, πέτρα, μέταλλο, ρούχα, πρόσωπο κ.λπ.) που περιέχει μια εικόνα μιας επιφάνειας.

Ωστόσο, όταν χρησιμοποιείται σε πολλαπλά επίπεδα και συνδυάζεται χρησιμοποιώντας πολύπλοκη αριθμητική, η χρήση αυτών των βασικών εικόνων στην τρισδιάστατη σκηνή μπορεί να παράγει εκπληκτικά ρεαλιστικές εικόνες. Για να δούμε πώς είναι δυνατόν, ας τα παραλείψουμε εντελώς και να δούμε πώς μπορούν να φαίνονται αντικείμενα στον τρισδιάστατο κόσμο χωρίς αυτά.




Όπως έχουμε δει σε προηγούμενα άρθρα, ο τρισδιάστατος κόσμος αποτελείται από γωνίες - απλά σχήματα που μπορούν να μετακινηθούν και να χρωματιστούν αργότερα. Αυτά στη συνέχεια χρησιμοποιούνται για την παραγωγή πρωτόγονων, τα οποία συμπιέζονται επίσης στο πλέγμα 2D pixel. Δεδομένου ότι δεν θα χρησιμοποιήσουμε υφές, πρέπει να χρωματίσουμε αυτά τα pixel.




Ονομάζεται μέθοδος που μπορεί να χρησιμοποιηθεί ευθεία σκίασηπεριλαμβάνει τη λήψη του χρώματος της πρώτης κορυφής της πρωτόγονης ουσίας και στη συνέχεια τη χρήση αυτού του χρώματος για όλα τα εικονοστοιχεία που εμπίπτουν στο πεδίο του σχήματος στο ράστερ. Μοιάζει με αυτό:




Προφανώς, αυτό δεν είναι μια ρεαλιστική τσαγιέρα, τουλάχιστον το χρώμα της επιφάνειας είναι λάθος. Τα χρώματα πηδούν από το ένα επίπεδο στο άλλο, χωρίς ομαλή μετάβαση. Μια λύση σε αυτό το πρόβλημα θα μπορούσε να είναι να χρησιμοποιήσετε κάτι που ονομάζεται Σκίαση Gouraud.




Αυτή είναι μια διαδικασία που παίρνει τα χρώματα των γωνιών και υπολογίζει πώς αλλάζει το χρώμα σε όλη την επιφάνεια του τριγώνου. Χρησιμοποιημένα μαθηματικά γραμμική παρεμβολήΑυτό σημαίνει ότι αν και φαίνεται φανταχτερό, στην πραγματικότητα, εάν το χρώμα μιας πρωτόγονης πλευράς είναι 0,2 κόκκινο και η άλλη πλευρά είναι 0,8 κόκκινο, το σχήμα έχει χρώμα μεταξύ 0,2 και 0,8 (δηλαδή 0,5).

Είναι σχετικά απλό να γίνει και το βασικό του πλεονέκτημα είναι η ταχύτητα. Πολλά πρώτα παιχνίδια 3D χρησιμοποίησαν αυτήν την τεχνική επειδή το υλικό που έκανε τους υπολογισμούς περιοριζόταν σε αυτό που μπορούσαν να κάνουν.




Αλλά ακόμη και αυτό έχει τα προβλήματά του, επειδή εάν ένα φως δείχνει ακριβώς στη μέση ενός τριγώνου, οι γωνίες του (γωνίες) μπορεί να μην το πιάσουν σωστά. Αυτό σημαίνει ότι οι φωτεινές στιγμές που προκαλούνται από το φως μπορούν να αγνοηθούν εντελώς.




Ενώ η επίπεδη και η σκίαση Gouraud περιλαμβάνονται στο οπλοστάσιο απόδοσης, τα παραπάνω παραδείγματα είναι ανοιχτοί υποψήφιοι για τη χρήση υφών για να τις θεραπεύσουν. Και για να κατανοήσουμε καλά τι συμβαίνει όταν μια υφή εφαρμόζεται σε μια επιφάνεια, θα επιστρέψουμε στο χρόνο ... μέχρι το 1996.

Ένα σύντομο ιστορικό παιχνιδιών και GPU

Το Quake είναι ένα παιχνίδι ορόσημο που κυκλοφόρησε πριν από 23 χρόνια Λογισμικό id. Παρόλο που δεν ήταν το πρώτο παιχνίδι που χρησιμοποίησε 3D πολύγωνα και υφές για τη δημιουργία του περιβάλλοντος, ήταν ένα από τα πρώτα που τα χρησιμοποίησε όλα τόσο αποτελεσματικά.

Ένα άλλο πράγμα που έκανε ήταν να δείξει τι θα μπορούσε να γίνει με το OpenGL (το API γραφικών ήταν ακόμη στην πρώτη του αναθεώρηση), και βοήθησε επίσης πολύ στην πώληση του πρώτου προϊόντος της κάρτας γραφικών. Επαλήθευση σχολίου ve 3Dfx Vudu.

Σε σύγκριση με τα σημερινά πρότυπα, το Voodoo ήταν εξαιρετικά απλό: χωρίς υποστήριξη γραφικών 2D, χωρίς γωνιακή επεξεργασία και μόνο τα βασικά στοιχεία της επεξεργασίας pixel. Ήταν ακόμα μια ομορφιά:

Είχε ένα ολόκληρο τσιπ (TMU) για να πάρει ένα pixel από μια υφή και, στη συνέχεια, ένα άλλο chip (FBI) για να το αναμίξει με ένα pixel από το raster. Μπορεί να κάνει μερικά επιπλέον πράγματα όπως η δημιουργία ομίχλης ή εφέ διαφάνειας, αλλά αυτό ήταν σχεδόν αυτό.

Εάν δώσουμε μια επισκόπηση της αρχιτεκτονικής πίσω από το σχεδιασμό και τη λειτουργία της κάρτας γραφικών, μπορούμε να δούμε πώς λειτουργούν αυτές οι διαδικασίες.

Το τσιπ FBI παίρνει δύο χρωματικές τιμές και τις συνδυάζει. ένα από αυτά μπορεί να είναι μια αξία από έναν ιστό. Η διαδικασία ανάμειξης είναι μαθηματικά αρκετά απλή, αλλά διαφέρει ελαφρώς μεταξύ αυτού που αναμιγνύεται ακριβώς και ποιο API χρησιμοποιείται για την εκτέλεση οδηγιών.

Αυτό που κοιτάζουμε Προσφορές Direct3D Όσον αφορά τις λειτουργίες ανάμειξης και τις λειτουργίες ανάμειξης, μπορούμε να δούμε ότι κάθε pixel πολλαπλασιάζεται πρώτα με έναν αριθμό μεταξύ 0,0 και 1,0. Αυτό καθορίζει πόσο μεγάλο μέρος του χρώματος του pixel θα επηρεάσει την τελική εμφάνιση. Στη συνέχεια, τα δύο χρώματα pixel προστίθενται, αφαιρούνται ή αντιγράφονται. Σε ορισμένες λειτουργίες, η λειτουργία είναι πάντα μια λογική έκφραση στην οποία επιλέγεται κάτι σαν το πιο φωτεινό pixel.

Η παραπάνω εικόνα είναι ένα παράδειγμα του πώς λειτουργεί στην πράξη. του συντελεστή που χρησιμοποιείται για το αριστερό εικονοστοιχείο άλφα αξία. Αυτός ο αριθμός, διαφανής εικονοστοιχεία.

Τα υπόλοιπα βήματα περιλαμβάνουν την εφαρμογή μιας τιμής ομίχλης (που λαμβάνεται από έναν πίνακα προγράμματος που έχει δημιουργηθεί από τον προγραμματιστή και στη συνέχεια κάνει τα ίδια μαθηματικά μίξης). να κάνετε κάποιους ελέγχους και προσαρμογές διαφάνειας και διαφάνειας · πριν γράψετε τελικά το χρώμα του pixel στη μνήμη της κάρτας γραφικών.

Γιατί μάθημα ιστορίας; Παρά τη σχετική απλότητα του σχεδιασμού (ειδικά σε σύγκριση με τους σύγχρονους γίγαντες), η διαδικασία εξηγεί τα βασικά βασικά στοιχεία της υφής: πάρτε μερικές χρωματικές τιμές και αναμείξτε τις έτσι ώστε τα μοντέλα και τα περιβάλλοντα να δουν πώς θα έπρεπε να είναι σε μια συγκεκριμένη κατάσταση.

Τα σημερινά παιχνίδια εξακολουθούν να κάνουν όλα αυτά, η μόνη διαφορά είναι η ποσότητα υφής που χρησιμοποιείται και η πολυπλοκότητα των υπολογισμών ανάμειξης. Μαζί προσομοιώνουν τα οπτικά εφέ που εμφανίζονται σε ταινίες ή πώς αλληλεπιδρά το φως με διαφορετικά υλικά και επιφάνειες.

Βασικά στοιχεία της υφής

Για εμάς, μια υφή είναι μια επίπεδη, δισδιάστατη εικόνα που εφαρμόζεται σε πολύγωνα που αποτελούν τρισδιάστατες δομές στο πλαίσιο που εμφανίζεται. Για έναν υπολογιστή, δεν είναι τίποτα περισσότερο από ένα μικρό μπλοκ μνήμης με τη μορφή ενός δισδιάστατου πίνακα. Κάθε καταχώρηση στον πίνακα αντιπροσωπεύει μια τιμή χρώματος για ένα από τα εικονοστοιχεία στην εικόνα υφής (πιο γνωστό) συμπληρωματικό κείμενο - εικονοστοιχεία υφής).

Κάθε κορυφή σε ένα πολύγωνο έχει 2 συντεταγμένες (συνήθως sen, v) λέει ποιο pixel στην υφή σχετίζεται με αυτό. Η ίδια η γωνία έχει 3 σύνολα συντεταγμένων (Χ ve Z) και πληκτρολογώντας κείμενο στις γωνίες. χαρτογράφηση υφής.

Για να το δούμε σε δράση, ας στραφούμε σε ένα εργαλείο που χρησιμοποιούμε πολλές φορές σε αυτήν τη σειρά άρθρων: Δημιουργία πραγματικού χρόνου WebGL εργαλείο. Προς το παρόν, z συντονίστε από τις γωνίες και κρατήστε τα πάντα σε επίπεδο επίπεδο.

Έχουμε την υφή από αριστερά προς τα δεξιά sen, v συντεταγμένες χαρτογραφημένες απευθείας σε γωνίες x, ε συντεταγμένες. Στη συνέχεια, οι κορυφαίες γωνίες y Οι συντεταγμένες του αυξήθηκαν, αλλά δεδομένου ότι η υφή χαρτογραφείται ακόμα απευθείας σε αυτές, η υφή τεντώνεται προς τα πάνω. Στην εικόνα στην άκρη δεξιά, αυτή τη φορά αλλάζει υφή: u Οι τιμές έχουν αυξηθεί, αλλά αυτό αναγκάζει τον ιστό να συνθλίβεται και στη συνέχεια να επαναλαμβάνεται.

Επειδή η υφή είναι τώρα αποτελεσματικά μεγαλύτερη, υψηλότερη u Η αξία του πρέπει να ταιριάζει σε πρωτόγονα - ουσιαστικά η υφή επαναλήφθηκε εν μέρει. Αυτός είναι ένας τρόπος να κάνετε κάτι που φαίνεται σε πολλά 3D παιχνίδια: tεπαναλαμβάνω. Κοινά παραδείγματα αυτού μπορούν να βρεθούν σε σκηνές με βραχώδη ή χλοώδη τοπία ή τούβλα.

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

Τώρα αυτή η υφή του κιβωτίου είναι 66 κιλά στην αρχική της μορφή gif και έχει ανάλυση 256 x 256 pixel. Η αρχική ανάλυση του τμήματος του πλαισίου που καλύπτεται από τις υφές του κιβωτίου είναι 1900 x 680, επομένως αυτή η περιοχή θα πρέπει να μπορεί να εμφανίζει μόνο 20 υφές κιβωτίων σε όρους εμβαδού pixel.

Προφανώς παίρνουμε περισσότερες από 20 διαδρομές, τόσες πολλές υφές στο στήθος στο παρασκήνιο πολύ Μικρότερο από 256 x 256 pixel. Πράγματι, είναι και έχουν περάσει από μια διαδικασία μείωση ιστών (ναι, αυτή είναι μια λέξη!). Ας προσπαθήσουμε ξανά, αλλά αυτή τη φορά πλησίασε ένα από τα στήθη.

Σημειώστε ότι η υφή έχει μέγεθος μόνο 256 x 256 pixel, αλλά εδώ μπορούμε να δούμε ότι μια υφή έχει πάνω από το μισό πλάτος μιας εικόνας πλάτους 1900 pixel. Αυτή η υφή πέρασε από κάτι που λέγεται αύξηση ιστών.

Αυτές οι δύο διαδικασίες υφής συμβαίνουν πάντα σε παιχνίδια 3D, επειδή όλες οι υφές που εφαρμόζονται στα πρωτόγονα πρέπει να κλιμακώνονται μαζί με πολύγωνα καθώς η κάμερα κινείται γύρω από τη σκηνή ή καθώς τα μοντέλα πλησιάζουν και απομακρύνονται. Μαθηματικά, αυτό δεν είναι μεγάλη υπόθεση, στην πραγματικότητα, ακόμη και οι απλούστερες ενσωματωμένες μάρκες γραφικών αναβοσβήνουν σε μια τέτοια δουλειά. Ωστόσο, η μείωση και η διεύρυνση των ιστών δημιουργεί νέα προβλήματα που πρέπει να λυθούν με κάποιο τρόπο.

Εισαγάγετε μίνι υφές

Το πρώτο πρόβλημα που πρέπει να διορθωθεί είναι για τους απομακρυσμένους ιστούς. Αν κοιτάξουμε ξανά την πρώτη εικόνα οριζόντιου κιβωτίου, οι σωστές στον ορίζοντα έχουν μέγεθος μόνο μερικά pixel. Δεν έχει νόημα για δύο λόγους να προσπαθήσετε να συμπιέσετε μια εικόνα 256 x 256 pixel σε μια τόσο μικρή περιοχή.

Πρώτον, μια μικρότερη υφή καταλαμβάνει λιγότερο χώρο μνήμης στην κάρτα γραφικών, η οποία είναι χρήσιμη για την προσπάθεια τοποθέτησης μιας μικρής ποσότητας cache. Αυτό σημαίνει ότι είναι λιγότερο πιθανό να αφαιρεθεί από την προσωρινή μνήμη και η επαναλαμβανόμενη χρήση αυτής της υφής θα εκμεταλλευτεί πλήρως τα δεδομένα στην κοντινή μνήμη. Ο δεύτερος λόγος έρχεται για μια στιγμή επειδή εξαρτάται από το ίδιο πρόβλημα για τις υφές με μεγέθυνση.

Μια κοινή λύση για τη χρήση μεγάλων ιστών που συνθλίβονται από μικρά πρωτόγονα, σύζευξη. Αυτές είναι ελαχιστοποιημένες εκδόσεις της αρχικής υφής. η ίδια η μηχανή του παιχνιδιού μπορεί να δημιουργηθεί (χρησιμοποιώντας την αντίστοιχη εντολή API για να γίνει αυτό) ή μπορεί να γίνει εκ των προτέρων από τους σχεδιαστές παιχνιδιών. Κάθε επίπεδο ιστού mipmap έχει τις μισές γραμμικές διαστάσεις του προηγούμενου.

Για την υφή του κιβωτίου, συμβαίνει κάτι τέτοιο: 256 x 256 → 128 x 128 → 64 x 64 → 32 x 32 → 16 x 16 → 8 x 8 → 4 x 4 → 2 x 2 → 1 x 1.

Οι χάρτες αντιστοίχισης είναι όλοι συσκευασμένοι μαζί, οπότε η υφή παραμένει το ίδιο όνομα αρχείου, αλλά τώρα είναι μεγαλύτερο. Ο ιστός συσκευάζεται με τέτοιο τρόπο ώστε sen, v Οι συντεταγμένες του όχι μόνο καθορίζουν ποιο texel θα εφαρμοστεί σε ένα pixel στο πλαίσιο, αλλά και από ποια χαρτογράφηση. Στη συνέχεια, οι προγραμματιστές κωδικοποιούν το πρόγραμμα απόδοσης για να καθορίσουν το χάρτη αντιστοίχισης που θα χρησιμοποιηθεί με βάση την τιμή βάθους του τετραγωνικού εικονοστοιχείου, οπότε αν είναι πολύ υψηλό, το εικονοστοιχείο βρίσκεται σε απόσταση, ώστε να μπορεί να χρησιμοποιηθεί ένα μικρό χάρτη αντιστοίχισης.

Οι αναγνώστες με έντονα μάτια μπορεί να έχουν δει το μειονέκτημα των χαρτών χαρτογράφησης και έρχονται σε βάρος των μεγαλύτερων υφών. Η αρχική υφή του κιβωτίου έχει μέγεθος 256 x 256 pixel, αλλά όπως μπορείτε να δείτε στην παραπάνω εικόνα, η χαρτογραφημένη υφή έχει τώρα 384 x 256. Ναι, υπάρχει πολύς ελεύθερος χώρος, αλλά ανεξάρτητα από το πώς το συσκευάζετε σε μικρότερες υφές, η συνολική αύξηση σε τουλάχιστον μία από τις διαστάσεις του ιστού είναι 50%.

Ωστόσο, αυτό ισχύει μόνο για προπαρασκευασμένους χάρτες αντιστοίχισης. Εάν η μηχανή παιχνιδιών έχει προγραμματιστεί να τα παράγει σωστά, η αύξηση δεν μπορεί ποτέ να υπερβεί το 33% του αρχικού μεγέθους υφής. Έτσι έχετε τα πλεονεκτήματα απόδοσης και τις οπτικές βελτιώσεις για μια σχετικά μικρή αύξηση της μνήμης στους χαρτογράφους ιστών.

Παρακάτω είναι μια κλειστή / ανοιχτή σύγκριση χαρτών χαρτών ιστών:

Στην αριστερή πλευρά της εικόνας, οι υφές του κιβωτίου χρησιμοποιούνται «ως έχουν», με αποτέλεσμα μια κοκκώδη εμφάνιση και υποτίθεται μοτίβα moire Μακριά. Ωστόσο, στη δεξιά πλευρά, η χρήση χαρτογράφησης προκαλεί μια πολύ πιο μαλακή μετάβαση στο τοπίο, όπου η υφή του κιβωτίου μετατρέπεται σε σταθερό χρώμα στον ορίζοντα.

Ωστόσο, κάποιος θέλει ασαφείς υφές που διαταράσσουν το φόντο του αγαπημένου τους παιχνιδιού;

Bilineer, τριπλές ρίγες, ανισότροπα - όλα ελληνικά για μένα

Η διαδικασία επιλογής pixel από μια υφή που θα εφαρμοστεί σε ένα pixel σε ένα πλαίσιο δειγματοληψία ιστώνκαι σε έναν τέλειο κόσμο, το μέγεθος, τη θέση, την κατεύθυνση κ.λπ. ανεξάρτητα από την υφή του, θα ήταν μια υφή που ταιριάζει ακριβώς με την αρχή της. Με άλλα λόγια, η δειγματοληψία υφής δεν είναι τίποτα περισσότερο από μια διαδικασία χαρτογράφησης 1 έως 1 pixel to pixel.

Δεδομένου ότι αυτό δεν συμβαίνει, η δειγματοληψία ιστών πρέπει να λαμβάνει υπόψη διάφορους παράγοντες:

  • Η υφή μεγεθύνεται ή μειώνεται;
  • Είναι η υφή πρωτότυπη ή χαρτογράφηση;
  • Σε ποια γωνία εμφανίζεται η υφή;

Ας τα αναλύσουμε ένα προς ένα. Το πρώτο είναι αρκετά σαφές: εάν η υφή μεγεθύνεται, θα υπάρχει περισσότερο κείμενο που θα καλύπτει το πρωτόγονο εικονοστοιχείο περισσότερο από το απαραίτητο. Με τη συρρίκνωση θα είναι το αντίθετο, κάθε texel θα πρέπει τώρα να καλύπτει περισσότερα από ένα pixel. Αυτό είναι λίγο πρόβλημα.

Δεύτερον, οι χαρτογράφοι αφήνουν τους ιστούς υπό γωνία, καθώς χρησιμοποιούνται για την παράκαμψη του προβλήματος της δειγματοληψίας ιστών με απομακρυσμένα πρωτόγονα. Και ναι, αυτό είναι επίσης ένα πρόβλημα. Γιατί; Δεδομένου ότι όλες οι υφές δημιουργούνται «ανοιχτές» για μια προβολή ή όλες μοιάζουν με μαθηματικά: η κανονική επιφάνεια της υφής είναι η ίδια με την επιφάνεια που εμφανίζεται στον ιστό.

Επομένως, για να έχετε πολύ λίγες ή πάρα πολλές υφές και να έχετε υφές υπό γωνία, φιλτράρισμα ιστών. Εάν δεν χρησιμοποιείτε αυτήν τη διαδικασία, αυτό είναι που παίρνετε:

Εδώ έχουμε αντικαταστήσει την υφή του κιβωτίου με μια υφή γράμματος R για να δείξουμε με μεγαλύτερη σαφήνεια πόσο σύγχυση θα έχει χωρίς φιλτράρισμα υφής!

API γραφικών όπως το Direct3D, το OpenGL και το Vulkan προσφέρουν όλα τα ίδια είδη φιλτραρίσματος, αλλά χρησιμοποιούν διαφορετικά ονόματα για αυτά. Στην πραγματικότητα, όλα πάνε έτσι:

  • Δειγματοληψία πλησιέστερου σημείου
  • Φιλτράρισμα γραμμικής υφής
  • Ανισοτροπικό φιλτράρισμα ιστών

Για όλες τις προθέσεις και σκοπούς, δειγματοληψία πλησιέστερου σημείου εάν δεν φιλτράρει - αυτό συμβαίνει επειδή είναι το πλησιέστερο pixel στο pixel που απαιτεί δειγματοληψία (δηλαδή αντιγραφή του από τη μνήμη) και στη συνέχεια ανάμειξη του pixel με το αρχικό του χρώμα.

Εδώ έρχεται γραμμικό φιλτράρισμα για τη διάσωση. Απαιτείται sen, v Οι συντεταγμένες texel αποστέλλονται στο υλικό για δειγματοληψία, αλλά αντί να λαμβάνουν το πλησιέστερο texel σε αυτές τις συντεταγμένες, το δείγμα τέσσερα κουλουράκια. Αυτά είναι ακριβώς πάνω, κάτω, αριστερά και δεξιά αυτού που επιλέχθηκε χρησιμοποιώντας το πλησιέστερο σημείο δειγματοληψίας.

Αυτά τα 4 υφάσματα αναμιγνύονται έπειτα χρησιμοποιώντας έναν σταθμισμένο τύπο. Για παράδειγμα, ο τύπος στο Vulkan:

T "Χρώμα", f Τέσσερα δείγματα υφασμάτων για το στραγγισμένο και 1 έως 4. αξίες άλφα ve βήτα Πόσο μακριά από το σημείο που ορίζεται από sen, v οι συντεταγμένες προέρχονται από τη μέση της βρύσης.

Ευτυχώς, οποιοσδήποτε εμπλέκεται σε παιχνίδια 3D, είτε παίζει είτε παίζει, συμβαίνει αυτόματα σε αυτό το τσιπ επεξεργασίας γραφικών. Στην πραγματικότητα, το τσιπ TMU στο 3dfx Voodoo το έκανε: δειγματοληψία 4 μονά και στη συνέχεια τα μίξεψε. Το Direct3D το καλεί παράξενα διγραμμικό φιλτράρισμα, Ωστόσο, από την εποχή του chip Quake και Voodoo TMU, οι κάρτες γραφικών μπόρεσαν να φιλτράρουν μόνο έναν κύκλο ώρας (εάν η υφή κάθεται άνετα σε στενή μνήμη), φυσικά.

Το γραμμικό φιλτράρισμα μπορεί να χρησιμοποιηθεί παράλληλα με τους χάρτες χαρτογράφησης και εάν θέλετε πραγματικά να σας αρέσει το φιλτράρισμα, μπορείτε να πάρετε 4 κείμενα από μία υφή, μετά άλλα 4 από το επόμενο επίπεδο χαρτογράφησης και στη συνέχεια να τα συνδυάσετε. Και το όνομα του Direct3D για αυτό; τρίγραμμος διήθηση. Τι τρι σχετικά με αυτήν τη διαδικασία; Η εικασία σας είναι τόσο καλή όσο η δική μας ...

Η τελευταία μέθοδος φιλτραρίσματος που αναφέρεται ονομάζεται anizotrop. Αυτό είναι στην πραγματικότητα μια προσαρμογή σύμφωνα με τη διαδικασία διμερούς ή τριμερούς φιλτραρίσματος. Αρχικά βαθμός ανισοτροπίας πρωτόγονη επιφάνεια (και εκπληκτικά περίπλοκο) - αυτή η τιμή αλλάζει την αναλογία διαστάσεων του πρωτόγονου λόγω του προσανατολισμού του:

Η παραπάνω εικόνα δείχνει την ίδια τετραγωνική αρχή με άκρα ίσου μήκους. αλλά καθώς απομακρυνόμαστε από την προοπτική μας, το τετράγωνο μοιάζει με ορθογώνιο και το πλάτος του υπερβαίνει το ύψος του. Έτσι το πρωτόγονο στα δεξιά έχει μεγαλύτερη ανισοτροπία από ό, τι στα αριστερά (και στην περίπτωση τετραγώνου, ο βαθμός είναι ακριβώς μηδέν).

Τα περισσότερα από τα σημερινά τρισδιάστατα παιχνίδια σάς επιτρέπουν να ενεργοποιήσετε το ανισότροπο φιλτράρισμα και, στη συνέχεια, να προσαρμόσετε το επίπεδό του (1x έως 16x), αλλά τι πραγματικά αλλάζει; Η ρύθμιση ελέγχει τον μέγιστο αριθμό επιπλέον δειγμάτων texel που λαμβάνονται ανά πρωτότυπο γραμμικό δείγμα. Για παράδειγμα, ας υποθέσουμε ότι το παιχνίδι έχει ρυθμιστεί να χρησιμοποιεί 8x ανισότροπο διγραμμικό φιλτράρισμα. Αυτό σημαίνει ότι αντί να λαμβάνει μόνο 4 τιμές κειμένου, θα φέρει 32 τιμές.

Είναι σαφές ότι η χρήση ανισοτροπικού φιλτραρίσματος μπορεί να παρατηρήσει:

Απλώς σύρετε προς τα πάνω λίγο και συγκρίνετε τη δειγματοληψία του πλησιέστερου σημείου για μέγιστο 16x ανισότροπο τριγραμμικό φιλτράρισμα. Τόσο απαλό, σχεδόν νόστιμο!

Αλλά πρέπει να υπάρχει μια τιμή για να εξοφλήσετε όλη αυτή την όμορφη γεύση υφής βουτύρου και σίγουρα απόδοση: όλο το μέγιστο, ανισότροπο τριγραμμικό φιλτράρισμα θα φέρει 128 δείγματα από μία υφή για κάθε επεξεργασμένο εικονοστοιχείο. Ακόμη και για το καλύτερο από τα πιο πρόσφατα GPU, αυτό δεν μπορεί να γίνει σε έναν κύκλο ρολογιού.

Αν έχουμε κάτι σαν AMD Radeon RX 5700 XTεπισημάνετε ότι κάθε μονάδα ιστού μέσα στον επεξεργαστή μπορεί να κλείσει 32 διευθύνσεις texel σε ένα βρόχο ρολογιού και, στη συνέχεια, να φορτώσει 32 texel από τη μνήμη (κάθε μέγεθος 32 bit) σε έναν άλλο κύκλο ρολογιού και, στη συνέχεια, να συναρμολογήσει 4 αργότερα. Ως εκ τούτου, αναμίχθηκε για 128 δείγματα texel που απαιτούν έναν κύκλο τουλάχιστον 16 ωρών.

Τώρα η βασική ταχύτητα ρολογιού των 5700 XT είναι 1605MHz, οπότε δεκαέξι κύκλοι χρειάζονται μόνο 10 nanosaniye. Απλώς κάντε το για κάθε pixel στο πλαίσιο 4K. ένας η μονάδα ιστού θα διαρκούσε μόλις 70 χιλιοστά του δευτερολέπτου. Εντάξει, ίσως η απόδοση δεν έχει σημασία!

Ακόμα και το 1996, το 3Dfx Voodoo ήταν αρκετά κομψό στο χειρισμό υφών. Το μέγιστο μπορεί να δοθεί σε 1 διγραμμικό φιλτραρισμένο texel ανά ώρα κύκλου και ενώ το τσιπ TMU αιωρούσε στα 50 MHz, σήμαινε ότι 50 εκατομμύρια τεξίνες μπορούσαν να κοπούν κάθε δευτερόλεπτο. Σε ένα παιχνίδι με ταχύτητα 800 x 600 και 30 fps, απαιτείται μόνο 14 εκατομμύρια ανά δευτερόλεπτο κείμενο.

Ωστόσο, όλα αυτά προϋποθέτουν ότι οι υφές βρίσκονται σε κοντινή μνήμη και ότι αντιστοιχίζεται μόνο ένα texin σε κάθε pixel. Πριν από είκοσι χρόνια, η ιδέα να εφαρμοστούν περισσότερες από μία υφές σε μια αρχή ήταν σχεδόν εντελώς άγνωστη, αλλά τώρα είναι συνηθισμένη. Ας δούμε γιατί συνέβη αυτή η αλλαγή.

Φωτισμός της διαδρομής προς θεαματικές εικόνες

Ρίξτε μια ματιά σε αυτήν τη σκηνή του Quake για να κατανοήσετε πώς το ύφασμα έχει γίνει τόσο σημαντικό:

Αυτή η σκοτεινή εικόνα ήταν η φύση αυτού του παιχνιδιού, αλλά μπορείτε να δείτε ότι το σκοτάδι δεν είναι παντού το ίδιο - τα μπαλώματα των τοίχων και του δαπέδου είναι φωτεινότερα από άλλα για να δώσουν μια γενική αίσθηση φωτισμού σε αυτήν την περιοχή.

Τα πρωτόγονα που σχηματίζουν τις πλευρές και το πάτωμα έχουν την ίδια υφή που εφαρμόζεται σε αυτά, αλλά υπάρχει μια δεύτερη υφή που ονομάζεται. ελαφρύς χάρτηςαναμειγνύεται με τιμές texel πριν αντιστοιχιστούν με τετράγωνα pixel. Κατά τη διάρκεια των ημερών Quake, οι χάρτες φωτός υπολογίστηκαν εκ των προτέρων και κατασκευάστηκαν από τη μηχανή παιχνιδιών και χρησιμοποιήθηκαν για τη δημιουργία στατικών και δυναμικών επιπέδων φωτός.

Το πλεονέκτημα της χρήσης τους ήταν ότι έγιναν περίπλοκοι υπολογισμοί φωτισμού σε υφές και όχι σε γωνίες, βελτιώνοντας ιδιαίτερα την εμφάνιση μιας σκηνής και πολύ μικρό κόστος απόδοσης. Προφανώς δεν είναι τέλειο: όπως μπορείτε να δείτε στο έδαφος, το όριο μεταξύ των φωτιζόμενων περιοχών και εκείνων στη σκιά είναι πολύ απλό.

Με πολλούς τρόπους, ένας ελαφρύς χάρτης είναι απλώς μια άλλη υφή (θυμηθείτε ότι είναι όλοι εκτός από δισδιάστατες συστοιχίες δεδομένων), οπότε αυτό που εξετάζουμε εδώ είναι η πρώιμη χρήση αυτού που είναι γνωστό. πολλαπλή υφή. Όπως υποδηλώνει το όνομα, είναι μια διαδικασία στην οποία δύο ή περισσότερες πινελιές εφαρμόζονται σε μια αρχή. Η χρήση ελαφρών χαρτών στο Quake ήταν μια λύση για να ξεπεραστούν οι περιορισμοί της σκίασης του Gouraud, αλλά καθώς αυξήθηκαν οι δυνατότητες των καρτών γραφικών, αυξήθηκαν επίσης οι εφαρμογές πολλαπλών δίσκων.

Το 3Dfx Voodoo, όπως και άλλες κάρτες της εποχής του, περιορίστηκε στο πόσο θα μπορούσε να κάνει σε μια απόδοση πέρασμα. Πρόκειται ουσιαστικά για μια πλήρη ακολουθία απόδοσης: από την επεξεργασία γωνιών έως την εκτόξευση του πλαισίου και, στη συνέχεια, την αλλαγή των pixel σε ένα τελικό buffer πλαισίου. Πριν από είκοσι χρόνια, τα παιχνίδια σχεδόν πάντα έκαναν ένα μόνο πέρασμα.

Ο λόγος για αυτό ήταν ότι ήταν πολύ δαπανηρό όσον αφορά την απόδοση, καθώς θέλετε να επεξεργαστείτε τις γωνίες δύο φορές μόνο για να εφαρμόσετε περισσότερη υφή. Λίγα χρόνια μετά το Voodoo, έπρεπε να περιμένουμε μέχρι να γίνουν διαθέσιμες οι κάρτες γραφικών ATI Radeon και Nvidia GeForce 2, ώστε να μπορέσουμε να κάνουμε multi-draw σε μία μετάβαση απόδοσης.

Αυτές οι GPU είχαν πολλές μονάδες υφής ανά ενότητα επεξεργασίας εικονοστοιχείων (δηλ., αγωγόςΉταν μια ουρά που έφερε ένα φιλτραρισμένο texel από δύο ξεχωριστές υφές. Αυτό έκανε τη χαρτογράφηση φωτός ακόμη πιο δημοφιλής και άλλαξε τις τιμές φωτός λόγω αλλαγών στο περιβάλλον του παιχνιδιού, καθιστώντας τα παιχνίδια πλήρως δυναμικά.

Αλλά υπάρχουν πολλά περισσότερα που μπορούν να γίνουν με πολλές υφές, οπότε ας ρίξουμε μια ματιά.

Είναι φυσιολογικό να πολλαπλασιάζεται το ύψος

Σε αυτήν τη σειρά άρθρων σχετικά με την απόδοση 3D, δεν έχουμε εξετάσει πώς ο ρόλος της GPU ταιριάζει πραγματικά σε ολόκληρο το ζήτημα (θα το κάνουμε ακόμα, όχι ακόμα!). Αλλά αν επιστρέψεις Επεισόδιο 1και κοιτάξτε όλη την περίπλοκη δουλειά της επεξεργασίας γωνιών, ίσως νομίζετε ότι αυτό είναι το πιο δύσκολο μέρος ολόκληρης της σειράς για την απόδοση του επεξεργαστή γραφικών.

Ήταν εδώ και πολύ καιρό και οι προγραμματιστές παιχνιδιών έχουν καταβάλει κάθε δυνατή προσπάθεια για να μειώσουν αυτόν τον φόρτο εργασίας. Αυτό σήμαινε να φτάσετε στην τσάντα οπτικών κόλπων και να αφαιρέσετε όσο το δυνατόν περισσότερες συντομεύσεις και κόλπα, δίνοντας την ίδια οπτική εμφάνιση με τη χρήση πολλαπλών γωνιών παντού, αλλά στην πραγματικότητα τη μη χρήση πολλών για να την ξεκινήσετε.

Και τα περισσότερα από αυτά τα κόλπα, χάρτες ανύψωσης ve κανονικοί χάρτες. Τα δύο σχετίζονται με το γεγονός ότι το δεύτερο μπορεί να δημιουργηθεί από το πρώτο, αλλά προς το παρόν, ας δούμε μια τεχνική που ονομάζεται: χαρτογράφηση χτυπήματος.

Η χαρτογράφηση κονδύλων περιλαμβάνει τη χρήση μιας 2D ακολουθίας που ονομάζεται χάρτης ανύψωσης, η οποία μοιάζει με μία μόνο έκδοση του αρχικού ιστού. Για παράδειγμα, στην παραπάνω εικόνα, υπάρχει μια ρεαλιστική υφή από τούβλα που εφαρμόζεται σε 2 επίπεδες επιφάνειες. Ο χάρτης υφής και ύψους μοιάζει με αυτό:

Τα χρώματα του χάρτη ύψους αντιπροσωπεύουν τους κανόνες της επιφάνειας τούβλου (καλύψαμε αυτό που είναι φυσιολογικό Επεισόδιο 1 αυτή η σειρά άρθρων). Όταν η ακολουθία απόδοσης φτάσει στο σημείο εφαρμογής της υφής τούβλου στην επιφάνεια, πραγματοποιείται μια σειρά υπολογισμών για την προσαρμογή του χρώματος της υφής τούβλου στο κανονικό.

Ως αποτέλεσμα, αν και τα τούβλα είναι ακόμα εντελώς επίπεδα, φαίνονται πιο τρισδιάστατα. Ειδικά αν κοιτάξετε προσεκτικά τις άκρες των τούβλων, μπορείτε να δείτε τα όρια της τεχνικής: η υφή φαίνεται λίγο στριμμένη. Ωστόσο, για μια γρήγορη προσθήκη περισσότερων λεπτομερειών σε μια επιφάνεια, η χαρτογράφηση κονδύλων είναι πολύ δημοφιλής.

Ένας κανονικός χάρτης είναι σαν ένας χάρτης ύψους, αλλά τα χρώματα αυτής της υφής είναι φυσιολογικά. Με άλλα λόγια, δεν απαιτείται υπολογισμός για την ομαλοποίηση του χάρτη υψομέτρου. Ίσως αναρωτιέστε πώς τα χρώματα μπορούν να χρησιμοποιηθούν για την αναπαράσταση ενός βέλους στο διάστημα. Η απάντηση είναι απλή: κάθε texel είναι ένα συγκεκριμένο R, G, B τιμές (κόκκινο, πράσινο, μπλε) και αυτοί οι αριθμοί είναι άμεσα Χ ve Z τιμές για το κανονικό διάνυσμα.

Στο παραπάνω παράδειγμα, το αριστερό διάγραμμα δείχνει πώς αλλάζει η κατεύθυνση της κανονικής σε μια ανώμαλη επιφάνεια. Για να αντιπροσωπεύσουμε τους ίδιους κανονικούς σε μια επίπεδη υφή (μεσαίο διάγραμμα), τους αποδίδουμε ένα χρώμα. Στην περίπτωσή μας, R, G, B Αύξηση των τιμών (0.255.0) για την ευθεία και στη συνέχεια την ποσότητα κόκκινου για τα αριστερά και μπλε για τα δεξιά.

Σημειώστε ότι αυτό το χρώμα δεν συνδυάζεται με το αρχικό εικονοστοιχείο - λέει στον επεξεργαστή σε ποια κατεύθυνση βλέπει το κανονικό, έτσι ώστε η κάμερα να μπορεί να υπολογίσει με ακρίβεια τις γωνίες μεταξύ των φώτων και της επιφάνειας με υφή.

Όταν χρησιμοποιείται δυναμικός φωτισμός στη σκηνή, τα οφέλη του χτυπήματος και του κανονικού ταιριάσματος λάμπουν πραγματικά και η διαδικασία απόδοσης υπολογίζει τα αποτελέσματα των αλλαγών φωτός ανά pixel, όχι για κάθε γωνία. Τα σύγχρονα παιχνίδια χρησιμοποιούν πολύ υφή για να βελτιώσουν την ποιότητα της μαγείας τώρα.

Αυτός ο ρεαλιστικός τοίχος είναι απλώς απλώς μια επίπεδη επιφάνεια - οι λεπτομέρειες σχετικά με τούβλα και κονίαμα δεν γίνονται χρησιμοποιώντας εκατομμύρια πολύγωνα. Αντ 'αυτού, κάνει μόνο 5 υφές και πολλές έξυπνες μαθηματικές εργασίες.

Ο χάρτης ανύψωσης χρησιμοποιήθηκε για την παραγωγή του κανονικού χάρτη για την προσομοίωση της διαδρομής σκίασης τούβλων στον εαυτό τους και όλων των μικρών αλλαγών στην επιφάνεια. Η υφή τραχύτητας χρησιμοποιήθηκε για να αλλάξει τον τρόπο με τον οποίο το φως αντανακλά διαφορετικά στοιχεία του τοίχου (π.χ. ένα ισοπεδωμένο τούβλο αντανακλά πιο σταθερά από το τραχύ κονίαμα).

Ο τελευταίος χάρτης, με την ένδειξη AO στην παραπάνω εικόνα, αποτελεί μέρος μιας διαδικασίας που ονομάζεται συμφόρηση πολυμέσων: αυτή είναι μια τεχνική που θα εξετάσουμε σε ένα μεταγενέστερο άρθρο, αλλά προς το παρόν είναι απλώς σκιές.

Η αντιστοίχιση ιστών είναι πολύ σημαντική

Είναι απολύτως απαραίτητο για το σχεδιασμό παιχνιδιών με υφή. Αποκτήστε την έκδοση 2019 του Warhorse Studio Το Βασίλειο έρχεται: Σωτηρία Ένα RPG πρώτου προσώπου που ιδρύθηκε στη Βοημία του 15ου αιώνα, μια αρχαία χώρα στη Μέση Ανατολή Ευρώπη. Οι σχεδιαστές ήταν πρόθυμοι να δημιουργήσουν έναν ρεαλιστικό κόσμο όσο το δυνατόν περισσότερο για την εν λόγω περίοδο. Και ο καλύτερος τρόπος για να ζωντανεύει ο ηθοποιός πριν από εκατοντάδες χρόνια είναι ότι κάθε θέα στο τοπίο, κτίριο, σετ ρούχων, μαλλιά, καθημερινά προϊόντα κ.λπ. Ήταν να έχει τη σωστή εμφάνιση για αυτό.

Κάθε μοναδική υφή σε αυτή τη μοναδική εικόνα του παιχνιδιού κατασκευάστηκε από τους καλλιτέχνες και τη χρήση τους από τη μηχανή απόδοσης που ελέγχεται από τον προγραμματιστή. Μερικά είναι μικρά, βασικά και χρειάζονται πολύ λίγα για το φιλτράρισμα ή την επεξεργασία άλλων ιστών (όπως φτερούγες κοτόπουλου).

Άλλοι είναι υψηλής ανάλυσης και δείχνουν πολλές λεπτές λεπτομέρειες. φιλτράρεται ανισοτροπικά και αναμειγνύεται με κανονικούς χάρτες και άλλες υφές - απλώς κοιτάξτε το πρόσωπο του ανθρώπου στο προσκήνιο. Οι διαφορετικές απαιτήσεις της υφής κάθε αντικειμένου στη σκηνή εξηγούνται από τους προγραμματιστές.

Όλα αυτά συμβαίνουν τώρα σε πολλά παιχνίδια, επειδή οι παίκτες περιμένουν περισσότερες λεπτομέρειες και ρεαλισμό. Οι υφές θα αναπτυχθούν και θα χρησιμοποιηθούν περισσότερο σε μια επιφάνεια, αλλά η διαδικασία δειγματοληψίας και εφαρμογής του σε εικονοστοιχεία θα είναι ουσιαστικά η ίδια με εκείνη του Quake. Η καλύτερη τεχνολογία δεν πεθαίνει ποτέ, ανεξάρτητα από το πόσο παλιά!