Shader - τι είναι; Τύποι, πλεονεκτήματα και μειονεκτήματα. Τι είναι τα shaders και πώς να εγκαταστήσετε τα shaders στο Minecraft Τι απαντούν τα shaders;

Σίγουρα είστε εξοικειωμένοι με την κατάσταση όταν σας άρεσε πολύ ένα shader, αλλά επειδή δεν έχετε τις απαραίτητες γνώσεις, δεν μπορείτε να εγκαταστήσετε το shader στο Minecraft. Μην ανησυχείτε, στο σημερινό άρθρο θα σας εξηγήσουμε αναλυτικά πώς να εγκαταστήσετε shaders στο Minecraft!

Όπως γνωρίζετε, τα περισσότερα shaders εγκαθίστανται μαζί με πρόσθετα mod, τα οποία με τη σειρά τους καταναλώνουν πολλή μνήμη βίντεο και πόρους RAM. Τι να κάνετε όμως αν σας αρέσει ένα mod που συνοδεύεται από όμορφα shaders και ταυτόχρονα έχετε έναν αδύναμο υπολογιστή ή φορητό υπολογιστή; Σήμερα θα εξετάσουμε επίσης τη λύση σε αυτό το ζήτημα. Λοιπόν, ας ξεκινήσουμε!

Τι είναι τα shader στο Minecraft και σε τι χρησιμεύουν;

Το Shaders Mod είναι μια εξαιρετικά ρεαλιστική τροποποίηση του Minecraft που παρέχει πιο ρεαλιστικό φωτισμό καθώς και πιο ρεαλιστικές σκιές που αντανακλούν σχήματα.

Έτσι, τα shader mods μεταμορφώνουν κυριολεκτικά τον κόσμο του Minecraft σε έναν πιο ρεαλιστικό, εντελώς ασύγκριτο με τον τυπικό κόσμο του παιχνιδιού. Επομένως, εάν θέλετε να μάθετε πόσο ρεαλιστικά μπορεί να είναι τα γραφικά στο Minecraft, συνεχίστε να διαβάζετε αυτό το άρθρο!

Πώς να κατεβάσετε shaders για το Minecraft;

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

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

Bbepc-lite-nvidia-fix.zip - Λήφθηκε 599 φορές - 72 KB

Chocapic13.zip - Λήφθηκε 682 φορές - 443 KB

Continuum.zip - Λήφθηκε 455 φορές - 131 KB

Kadir-nck-shader-v1.2.zip - Λήφθηκε 438 φορές - 30 KB

Plunderpixels_shaders_1.7.x.zip - Λήψη 440 φορές - 36 KB

Robobo1221.zip - Λήφθηκε 399 φορές - 180 KB

Πώς να εγκαταστήσετε shaders στο Minecraft 1.7.10, 1.8, 1.8.8, 1.10.2, 1.11.2, 1.12, 1.12.2;

  • Πρώτα απ 'όλα, πρέπει να κατεβάσετε το Optifine. Μπορείτε να το κάνετε αυτό κάνοντας κλικ στο κουμπί παρακάτω.

Optifine_1.7.10.rar - Λήφθηκε 668 φορές - 1 MB

Optifine_1.8.rar - Λήφθηκε 385 φορές - 1 MB

Optifine_1.8.8.rar - Λήφθηκε 323 φορές - 1.009 KB

Optifine_1.10.2.rar - Λήφθηκε 345 φορές - 1 MB

Optifine_1.11.2.rar - Λήφθηκε 405 φορές - 1 MB

Optifine_1.12.rar - Λήφθηκε 353 φορές - 1 MB

Optifine_1.12.2.rar - Λήφθηκε 797 φορές - 2 MB

  • Στη συνέχεια, εγκαταστήστε το Optifine mod. Χωρίς την εγκατάσταση, τα shaders δεν θα λειτουργήσουν.
  • Μετά από αυτό, κατεβάστε το shader που θέλετε να εγκαταστήσετε για το Minecraft.
  • Τώρα ανοίξτε το φάκελο με shaders, για να το κάνετε αυτό, πατήστε τη συντόμευση πληκτρολογίου Win+Rκαι μετά πληκτρολογήστε την εντολή: "%appdata%/.minecraft/shaderpacks"και πατήστε το κουμπί Εντάξει.
  • Θα πρέπει να μετακινήσετε τα shader που θέλετε να χρησιμοποιήσετε για το Minecraft στον φάκελο που ανοίγει.

  • Μετά τα παραπάνω βήματα, το μόνο που έχετε να κάνετε είναι να εκκινήσετε το Minecraft. Μπείτε στο μενού ρυθμίσεων και επιλέξτε την καρτέλα "Εκτέλεση". Εδώ πρέπει να απενεργοποιήσετε τη δυνατότητα "Γρήγορη απόδοση".

  • Στο κεφάλαιο "Ρυθμίσεις γραφικών"ανοίξτε την καρτέλα "Shaders"και ενεργοποιήστε το απαιτούμενο shader. Βγείτε από τις ρυθμίσεις, δημιουργήστε έναν κόσμο και απολαύστε τη νέα εμφάνιση του παιχνιδιού.

Συχνές ερωτήσεις/απαντήσεις Shader

Πού βρίσκεται ο φάκελος shaderpacks;

Διαδρομή φακέλου: "%appdata%/.minecraft/shaderpacks."

Γιατί δεν μπορώ να βρω το κουμπί Shaders στο μενού Επιλογές;

Βεβαιωθείτε ότι έχετε εγκαταστήσει το Optifine και χρησιμοποιείτε τη σωστή έκδοση.

Πού μπορώ να κατεβάσω το Optifine;

Για να κάνετε λήψη του Optifine, πρέπει να χρησιμοποιήσετε τους συνδέσμους που παρέχονται στο παραπάνω άρθρο.

Υπάρχει όριο στην εγκατάσταση shaders;

Δεν υπάρχουν περιορισμοί. Αλλά μπορείτε να χρησιμοποιήσετε μόνο ένα πακέτο shader σε μια περίοδο παιχνιδιού.

Τα shaders λειτουργούν σε διακομιστές;

Όχι πάντα, αλλά οι περισσότεροι διακομιστές παιχνιδιών υποστηρίζουν τη δουλειά τους.

Βίντεο: Πώς να εγκαταστήσετε shaders στο Minecraft 1.7.10;

– Igor (Διαχειριστής)

Σε αυτό το άρθρο, θα σας πω με απλά λόγιατι είναι τα shaders και γιατί χρειάζονται;

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

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

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

Τι είναι τα shaders και γιατί χρειάζονται;

Shader- ένα πρόγραμμα υπολογιστή (κώδικας) που μπορεί να εκτελεστεί σε επεξεργαστές κάρτας βίντεο χωρίς άσκοπη σπατάλη ισχύος της CPU. Επιπλέον, είναι δυνατή η κατασκευή αγωγών από αυτά τα shaders (διαδοχική χρήση τους). Δηλαδή, το ίδιο shader μπορεί να εφαρμοστεί σε διάφορους τύπους γραφικών αντικειμένων, γεγονός που απλοποιεί σημαντικά τη διαδικασία δημιουργίας κινούμενων εικόνων.

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

Η μείωση του συνολικού φορτίου της CPU δεν είναι ο σκοπός της δημιουργίας των δικών σας shaders. Αξίζει να γίνει κατανοητό ότι πολλά παιχνίδια και βίντεο επαναχρησιμοποιούν τις ίδιες δυνατότητες. Για παράδειγμα, γιατί να γράψετε, για παράδειγμα, εφέ νερού από την αρχή σε δεκάδες παρόμοια προγράμματα κινούμενης εικόνας, εάν μπορείτε να χρησιμοποιήσετε έτοιμες βιβλιοθήκες όπως το OpenGL ή το DirectX; Τα τελευταία περιέχουν πολλά ήδη εφαρμοσμένα shader και παρέχουν μια πιο βολική μέθοδο για να γράψετε το δικό σας (δεν χρειάζεται να γράφετε εντολές χαμηλού επιπέδου για τη GPU).

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

Ποιο είναι το όφελος της προσέγγισης shader;

Υπάρχει κάποια σύγχυση με τα shaders, καθώς υπάρχουν διαφορετικά πρότυπα γλώσσας προγραμματισμού για διαφορετικές βιβλιοθήκες (GLSL - OpenGL, HLSL - DirectX κ.λπ.) και αυτό δεν μετράει το γεγονός ότι οι ίδιοι οι κατασκευαστές καρτών βίντεο μπορούν να υποστηρίξουν διαφορετικές δυνατότητες. Ωστόσο, το πλεονέκτημα της χρήσης τους μπορεί εύκολα να εκτιμηθεί κοιτάζοντας την παραπάνω εικόνα με ένα παράδειγμα της διαφοράς οθόνης μεταξύ του DirectX 9 και του DirectX 10.

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

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

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

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

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

Η εγκατάσταση αποτελείται από δύο στάδια, πρώτα πρέπει να εγκαταστήσετε το shader mod και, στη συνέχεια, πρόσθετα πακέτα shader για αυτό

ΒΗΜΑ # 1 - Εγκατάσταση του shader mod

  1. Λήψη και εγκατάσταση Java
  2. Εγκαθιστώ OptiFine HD
    ή ShadersMod;
  3. Αποσυσκευάστε το αρχείο που προκύπτει σε οποιαδήποτε τοποθεσία.
  4. Εκκινούμε το αρχείο jar, γιατί είναι εγκαταστάτης?
  5. Το πρόγραμμα θα σας δείξει τη διαδρομή προς το παιχνίδι, εάν όλα είναι σωστά, κάντε κλικ στο Yes, Ok, Ok.
  6. Ας πάμε στο .minecraftκαι δημιουργήστε ένα φάκελο εκεί shaderpacks;
  7. Μπαίνουμε στο πρόγραμμα εκκίνησης και βλέπουμε ένα νέο προφίλ στη γραμμή με το όνομα "ShadersMod", εάν όχι, τότε επιλέξτε το χειροκίνητα.
  8. Στη συνέχεια, πρέπει να κατεβάσετε πακέτα shader

ΒΗΜΑ # 2 - Εγκατάσταση του πακέτου shader

  1. Κατεβάστε το πακέτο shader που σας ενδιαφέρει (λίστα στο τέλος του άρθρου)
  2. Πατήστε τα πλήκτρα WIN+R
  3. Παω σε .minecraft/shaderpacks. Εάν δεν υπάρχει τέτοιος φάκελος, τότε δημιουργήστε τον.
  4. Μετακινήστε ή εξαγάγετε το αρχείο shader σε .minecraft/shaderpacks. Η διαδρομή πρέπει να μοιάζει με αυτό: .minecraft/shaderpacks/SHADER_FOLDER_NAME/shaders/[.fsh και .vsh αρχεία μέσα]
  5. Εκκινήστε το Minecraft και πηγαίνετε Ρυθμίσεις > Shaders. Εδώ θα δείτε μια λίστα με τα διαθέσιμα shader. Επιλέξτε αυτό που χρειάζεστε
  6. Στις ρυθμίσεις shader, ενεργοποιήστε το "tweakBlockDamage", απενεργοποιήστε το "CloudShadow" και το "OldLighting"

Sonic Ether's Unbelievable Shaders
Σκίαστρες Sildur
Chocapic13's Shaders
yShaders του sensi277
MrMeep_x3's Shaders
Cel Shaders της Naelego
Shaders του RRe36
DeDelner's CUDA Shaders
Bruceatsr44's Acid Shaders
Shaders του Beed28
Ziipzaap's Shader Pack
Robobo1221's Shaders
Shaders του dvv16
Stazza85 super Shaders
hoo00's Shaders pack B
Τα κυματιστά φυτά του Regi24
MrButternuss ShaderPack
Τα φοβερά γραφικά του DethRaid στα Nitro Shaders
Edi's Shader ForALLPc
CrankerMan's TME Shaders
Kadir Nck Shader (για skate702)
Οι Shaders του Werrus
Το Life Nexus Shaders του Knewtonwako
Shaderpack CYBOX
CrapDeShoes CloudShade Alpha
Shader AirLocke42
BSL Shaders του CaptTatsu
Τα σκίαστρα του Τρίλιτον
ShadersMcOfficial's Bloominx Shaders (Chocapic13" Shaders)
Continuum Shaders του dotModded
Qwqx71"s Lunar Shaders (chocapic13"s shader)

Προορίζεται για εκτέλεση από επεξεργαστές κάρτας γραφικών (GPU). Οι Shaders μεταγλωττίζονται σε μία από τις εξειδικευμένες γλώσσες προγραμματισμού (βλ.) και μεταγλωττίζονται σε οδηγίες για την GPU.

Εφαρμογή

Πριν από τη χρήση των shaders, χρησιμοποιήθηκε η δημιουργία διαδικαστικής υφής (για παράδειγμα, χρησιμοποιήθηκε στο παιχνίδι Unreal για τη δημιουργία κινούμενων υφών νερού και φωτιάς) και multitexturing (η γλώσσα shader που χρησιμοποιήθηκε στο παιχνίδι Quake 3 βασίστηκε σε αυτό). Αυτοί οι μηχανισμοί δεν παρείχαν την ίδια ευελιξία με τους shaders.

Με την εμφάνιση των αγωγών γραφικών με δυνατότητα επαναδιαμόρφωσης, κατέστη δυνατή η εκτέλεση μαθηματικών υπολογισμών στη GPU (GPGPU). Οι πιο γνωστές μηχανές GPGPU είναι το nVidia CUDA, το Microsoft DirectCompute και το OpenCL ανοιχτού κώδικα.

Τύποι shader

Vertex shaders

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

Παράδειγμα κώδικα για σκίαση κορυφής στη γλώσσα:

vs.2.0 dcl_position v0 dcl_texcoord v3 m4x4 oPos, v0, c0 mov oT0, v3

Σκίαστρες γεωμετρίας

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

Οι σκιαστήρες γεωμετρίας χρησιμοποιήθηκαν για πρώτη φορά σε κάρτες γραφικών της σειράς Nvidia 8.

Σκίαση εικονοστοιχείων (θραύσματος).

Ένας σκιαστής εικονοστοιχείων λειτουργεί με κομμάτια και υφές εικόνας bitmap - επεξεργάζεται δεδομένα που σχετίζονται με εικονοστοιχεία (για παράδειγμα, χρώμα, βάθος, συντεταγμένες υφής). Το pixel shader χρησιμοποιείται στο τελευταίο στάδιο της διοχέτευσης γραφικών για να σχηματίσει ένα τμήμα της εικόνας.

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

ps.1.4 texld r0, t0 mul r0, r0, v0

Πλεονεκτήματα και μειονεκτήματα

Πλεονεκτήματα:

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

Ελαττώματα:

  • την ανάγκη εκμάθησης μιας νέας γλώσσας προγραμματισμού·
  • την ύπαρξη διαφορετικών συνόλων εντολών για GPU από διαφορετικούς κατασκευαστές.

Γλώσσες προγραμματισμού

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

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

Επαγγελματική απόδοση

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

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

RenderMan Η γλώσσα προγραμματισμού shader που εφαρμόστηκε στο λογισμικό RenderMan της Pixar ήταν η πρώτη γλώσσα προγραμματισμού shader. Το RenderMan API, που αναπτύχθηκε από τον Rob Cook και περιγράφεται στην Προδιαγραφή διεπαφής RenderMan, είναι το de facto πρότυπο για επαγγελματική απόδοση, που χρησιμοποιείται σε όλες τις παραγωγές της Pixar. OSL OSL - Αγγλικά. Η Open Shading Language είναι μια γλώσσα προγραμματισμού shader που αναπτύχθηκε από Sony Pictures Imageworksκαι μοιάζει με γλώσσα. Χρησιμοποιείται στο ιδιόκτητο πρόγραμμα Arnold, που αναπτύχθηκε από τη Sony Pictures Imageworks και σχεδιάστηκε για απόδοση, και στο δωρεάν πρόγραμμα Blender, σχεδιασμένο για τη δημιουργία τρισδιάστατων γραφικών υπολογιστή. Απόδοση σε πραγματικό χρόνο GLSL GLSL (eng. το Open G.L. μικρόέχοντας μεγάλογλώσσαακούστε)) είναι μια γλώσσα προγραμματισμού shader που περιγράφεται στο πρότυπο OpenGL και βασίζεται στην έκδοση της γλώσσας που περιγράφεται στο πρότυπο ANSI C. Η γλώσσα υποστηρίζει τις περισσότερες δυνατότητες ANSI C και υποστηρίζει τύπους δεδομένων που χρησιμοποιούνται συχνά κατά την εργασία με τρισδιάστατα γραφικά (διανύσματα, πίνακες). Η λέξη "shader" στο GLSL αναφέρεται σε μια ανεξάρτητα μεταγλωττισμένη ενότητα γραμμένη σε αυτή τη γλώσσα. Η λέξη "πρόγραμμα" αναφέρεται σε ένα σύνολο μεταγλωττισμένων shaders που συνδέονται μεταξύ τους. Cg (Αγγλικά) ντοΓια σολραφικούς) είναι μια γλώσσα προγραμματισμού shader που αναπτύχθηκε από την nVidia μαζί με τη Microsoft. Η γλώσσα είναι παρόμοια με τη γλώσσα και τη γλώσσα HLSL, που αναπτύχθηκε από τη Microsoft και περιλαμβάνεται σε DirectX 9. Η γλώσσα χρησιμοποιεί τους τύπους "int", "float", "half" (αριθμός κινητής υποδιαστολής 16 bit). Η γλώσσα υποστηρίζει λειτουργίες και δομές. Η γλώσσα έχει ιδιαίτερες βελτιστοποιήσεις με τη μορφή "συσκευασμένων πινάκων" (

" itemprop="image">

"Τι είναι τα shaders;" - Πολύ Συχνή ερώτησηπερίεργοι παίκτες και επίδοξοι προγραμματιστές παιχνιδιών. Σε αυτό το άρθρο θα σας πω ξεκάθαρα και ξεκάθαρα για αυτά τα τρομερά shaders.

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

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

Η απόδοση ενός πλαισίου είναι στην πραγματικότητα μια δουλειά ρουτίνας: πρέπει να πάρετε "γεωμετρία" - πολυγωνικά μοντέλα (κόσμος, χαρακτήρας, όπλο, κ.λπ.) και να την ραστεροποιήσετε. Τι είναι το rasterize; Ολόκληρο το τρισδιάστατο μοντέλο αποτελείται από μικροσκοπικά τρίγωνα, τα οποία ο ραστεροποιητής μετατρέπει σε pixel (δηλαδή, "rasterize" σημαίνει μετατροπή σε pixel). Μετά τη ραστεροποίηση, λάβετε δεδομένα υφής, παραμέτρους φωτισμού, ομίχλη κ.λπ. και υπολογίστε κάθε εικονοστοιχείο που προκύπτει από το πλαίσιο του παιχνιδιού, το οποίο θα εμφανίζεται στην οθόνη του παίκτη.

Άρα, η κεντρική μονάδα επεξεργασίας (CPU - Central Processing Unit) είναι πολύ έξυπνος τύπος για να τον αναγκάσει να κάνει μια τέτοια ρουτίνα. Αντίθετα, είναι λογικό να διατεθεί κάποιο είδος μονάδας υλικού που θα ανακουφίζει την CPU, ώστε να μπορεί να κάνει πιο σημαντική πνευματική δουλειά.

Αυτή η μονάδα υλικού ήταν ένας επιταχυντής γραφικών ή μια κάρτα γραφικών (GPU - Graphics Processing Unit). Τώρα η CPU προετοιμάζει τα δεδομένα και φορτώνει τον συνάδελφό της με εργασίες ρουτίνας. Λαμβάνοντας υπόψη ότι η GPU δεν είναι πλέον μόνο ένας συνάδελφος, αλλά ένα πλήθος πυρήνων minion, μπορεί να αντεπεξέλθει σε αυτό το είδος εργασίας ταυτόχρονα.

Αλλά δεν έχουμε λάβει ακόμη απάντηση στο κύριο ερώτημα: Τι είναι τα shaders; Περίμενε, φτάνω σε αυτό.

Τα καλά, ενδιαφέροντα και κοντά σε φωτορεαλιστικά γραφικά απαιτούσαν από τους προγραμματιστές καρτών βίντεο να εφαρμόσουν πολλούς αλγόριθμους σε επίπεδο υλικού. Σκιές, φως, ανταύγειες και ούτω καθεξής. Αυτή η προσέγγιση, με την εφαρμογή αλγορίθμων σε υλικό, ονομάζεται «Σταθερός αγωγός ή μεταφορέας» και όπου απαιτούνται γραφικά υψηλής ποιότητας, δεν βρίσκεται πλέον. Τη θέση του πήρε ο “Programmable Pipeline”.

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

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

Και τώρα, επιτέλους, φτάσαμε στην απάντηση στο κύριο ερώτημά μας.

"Τι είναι τα shaders;"

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

Τι είναι τα shaders; Για παράδειγμα, αυτό το εφέ μπορεί να επιτευχθεί, αυτό είναι ένας σκίαστρος νερού που εφαρμόζεται σε μια σφαίρα.

Γραφικός αγωγός

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

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

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

Για πρώτη φορά, η πλήρης υποστήριξη για shaders εμφανίστηκε σε κάρτες βίντεο της σειράς GeForce 3, αλλά τα βασικά στοιχεία εφαρμόστηκαν στο GeForce256 (με τη μορφή Register Combiners).

Τύποι σκίαστρων

Ανάλογα με το στάδιο του αγωγού, τα shaders χωρίζονται σε διάφορους τύπους: κορυφή, θραύσμα (pixel) και γεωμετρία. Και οι νεότεροι τύποι σωλήνων έχουν επίσης σκίαστρους tessellation. Δεν θα συζητήσουμε λεπτομερώς τον αγωγό γραφικών· ακόμα σκέφτομαι να γράψω ένα ξεχωριστό άρθρο σχετικά με αυτό, για όσους αποφασίσουν να μελετήσουν τα shaders και τον προγραμματισμό γραφικών. Γράψτε στα σχόλια αν σας ενδιαφέρει, θα ξέρω αν αξίζει τον χρόνο σας.

Vertex shader

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

Σκίαση γεωμετρίας

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

Σκίαση pixel

Τα pixel shaders εκτελούν χαρτογράφηση υφής, φωτισμό και διάφορα εφέ υφής όπως ανάκλαση, διάθλαση, ομίχλη, Bump Mapping, κ.λπ. Τα pixel shaders χρησιμοποιούνται επίσης για μετα-εφέ.

Ένας σκιαστής εικονοστοιχείων λειτουργεί με κομμάτια και υφές εικόνας bitmap - επεξεργάζεται δεδομένα που σχετίζονται με εικονοστοιχεία (για παράδειγμα, χρώμα, βάθος, συντεταγμένες υφής). Το pixel shader χρησιμοποιείται στο τελευταίο στάδιο της διοχέτευσης γραφικών για να σχηματίσει ένα τμήμα της εικόνας.

Σε τι γράφονται τα shaders;

Αρχικά, τα shader μπορούσαν να γραφτούν σε μια γλώσσα που μοιάζει με assembler, αλλά αργότερα εμφανίστηκαν γλώσσες shader υψηλό επίπεδο, παρόμοια με τη γλώσσα C, όπως: Cg, GLSL και HLSL.

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

RenderMan

Όλα όσα συζητήσαμε παραπάνω ισχύουν για γραφικά σε πραγματικό χρόνο. Υπάρχουν όμως γραφικά που δεν είναι σε πραγματικό χρόνο. Ποια είναι η διαφορά - realtime - real time, δηλαδή εδώ και τώρα - να δίνεις 60 καρέ ανά δευτερόλεπτο στο παιχνίδι, αυτή είναι μια διαδικασία σε πραγματικό χρόνο. Αλλά η απόδοση ενός πολύπλοκου καρέ για κινούμενα σχέδια αιχμής για αρκετά λεπτά δεν είναι σε πραγματικό χρόνο. Το κλειδί είναι ο χρόνος.

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

Υπερρεαλιστικά γραφικά στο Sand piper

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

*Το βίντεο μπορεί να απαγορευτεί στο YouTube, αν δεν ανοίξει, το Google Pixar Sandpiper - ένα σύντομο γελοιογραφία για ένα γενναίο Sandpiper είναι πολύ χαριτωμένο και χνουδωτό. Θα σας αγγίξει και θα δείξει πόσο ωραία μπορεί να είναι τα γραφικά υπολογιστή.

Αυτό είναι λοιπόν το RenderMan από την Pixar. Έγινε η πρώτη γλώσσα προγραμματισμού shader. Το RenderMan API είναι το de facto πρότυπο για επαγγελματική απόδοση, που χρησιμοποιείται σε όλη τη δουλειά της Pixar και όχι μόνο.

Χρήσιμες πληροφορίες

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

  • , - μια τεχνική για τη δημιουργία εκπληκτικών εφέ σε σύγχρονα βιντεοπαιχνίδια. Δείτε το άρθρο και το βίντεο με μαθήματα σχετικά με τη δημιουργία εφέ στο Unity3d
  • , - Αν σκέφτεστε να αναπτύξετε βιντεοπαιχνίδια, ως επαγγελματική σταδιοδρομία ή χόμπι, αυτό το άρθρο περιέχει ένα εξαιρετικό σύνολο συστάσεων σχετικά με το "Where To Start", "What Books to Dead" κ.λπ.

Εάν έχετε ερωτήσεις

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


Μπλουζα