Ο [Gabriel Gambetta] γνωρίζει λίγα πράγματα για τους ανιχνευτές ακτίνων, καθώς είναι ο συγγραφέας του Tiny Raytracer, ενός raytracer που γράφτηκε σε μόλις 912 byte JavaScript. Ως μακροχρόνιος σύντροφος πάσχων από το σχεδιασμένο από το Ηνωμένο Βασίλειο ZX Spectrum, θα μπορούσαν να συγχωνευτούν αυτοί οι δύο έρωτες; Θα μπορούσε το Tiny Raytracer να χωρέσει στο ZX Spectrum; Στο BASIC; Η απάντηση είναι μια καταφατική, αν και με τους πολλούς περιορισμούς του αγαπημένου μας είδους.
Η ιστορία ξεκινά με του [Gabriel] Computer Graphics From Scratch (CGFS) αλγόριθμοι raytracer και μια υπάρχουσα βάση κώδικα που μεταφέρθηκε στην πολύ περιορισμένη BASIC διάλεκτο του ZX Spectrum, χρησιμοποιώντας VSCode για επεξεργασία, BAS2TAP για να δημιουργήσετε ένα αρχείο εικόνας ταινίας (ουσιαστικά ένα κομμάτι ήχου) και να εκτελεστεί με ΑΣΦΑΛΕΙΩΝ. Με ταξινομημένη την αλυσίδα εργαλείων, ο [Gabriel] προσθέτει ακριβώς αρκετό κώδικα για να αντιμετωπίσει τις εξισώσεις τομής ακτίνων μιας σφαίρας και αποδίδει μια σκηνή τριών σφαιρών σε έγχρωμη εικόνα 32×22 pixel, απαιτώντας μόλις 15 λεπτά χρόνου εκτέλεσης. Οι άλλοι πάσχοντες θα θυμούνται ότι το φάσμα είχε μια συστοιχία χαρακτηριστικών μπλοκ 32×22 (ή πίνακα χρωμάτων) με δύο τιμές χρώματος για τα εικονοστοιχεία προσκηνίου και φόντου. Κάθε μπλοκ χαρακτηριστικών περιέχει 8×8 εικονοστοιχεία, καθένα από τα οποία θα μπορούσε να είναι στο προσκήνιο (ενεργό) ή στο παρασκήνιο (απενεργοποιημένο). Το επόμενο στάδιο ήταν στη συνέχεια να επεκταθεί ο κώδικας για να χειριστεί pixel καθώς και μπλοκ, επεκτείνοντας απλώς το raytracing στο πλήρες 256 Ανάλυση ×176 και για κάθε μπλοκ απλώς καθορίστε τα δύο πιο κοινά χρώματα και εκτελέστε με αυτά για ολόκληρο το μπλοκ. Λειτουργεί κατά κάποιο τρόπο, με ένα είδος «σύγκρουσης χαρακτηριστικών» που μοιάζει πολύ με το φάσμα.
Τώρα όμως ο χρόνος εκτέλεσης είναι 17 ώρες! Στη συνέχεια, ένα σημείο προσαρμογής της απόδοσης, χρησιμοποιώντας αρκετά φάσμα BASIC hacks, και ορισμένες γραφικές προσεγγίσεις, όπως ρίψη ακτίνων για κάθε γωνιακό εικονοστοιχείο του μπλοκ, και αν είναι πανομοιότυπα, χρωματίζοντας όλα τα υπόλοιπα 60 pixel με τον ίδιο τρόπο και συνεχίζουμε . Αυτή η προσπάθεια μείωσε τον χρόνο εκτέλεσης σε δύο ώρες.
Στη συνέχεια, ο [Gabriel] εγκαταλείπει γενναία το μοντέλο του επίπεδου φωτισμού, διαμορφώνει μια ενιαία πηγή φωτός και βγάζει το μοναδικό κόλπο που απομένει στον κόσμο του μονόχρωμου φάσματος, αυτό της διαφοράς τιμών έντασης για κάθε μπλοκ, χρησιμοποιώντας ένα απλό 8×8 διατεταγμένο μοτίβο αναρρόφησης, δεν φαίνεται πολύ κακό, λαμβάνοντας υπόψη όλα τα πράγματα. Μια γρήγορη στάση στο δρόμο προς την ολοκλήρωση, προς προσθέστε σκιές και ο χρόνος εκτέλεσης είναι πίσω στις 17 ώρες, αλλά αξίζει τον κόπο. Σαφώς, αυτό είναι βελτιστοποιημένο για έναν μεμονωμένο τύπο σκηνής, όπου οι σφαίρες εμφανίζονται κυρίως, αλλά οι αρχές είναι εκεί και οι κύβοι απέχουν λίγες ακόμη γραμμές κώδικα. Κάποιοι λήπτες;
Το Raytracing είναι ένα από εκείνα τα διασκεδαστικά, αλλά πολύπλοκα καθήκοντα που οι άνθρωποι απλώς λατρεύουν να ενσωματώνουν σε ακατάλληλο υλικό, όπως αυτή η αριθμομηχανή γραφημάτων TI-84Plus CE, και αν είναι λίγο δύσκολο να προσπελάσετε, εδώ είναι κάτι εξίσου τρελό τρέχει σε απλό παλιό Excel.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- PlatoHealth. Ευφυΐα βιοτεχνολογίας και κλινικών δοκιμών. Πρόσβαση εδώ.
- πηγή: https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/
- :είναι
- :που
- 1
- 15%
- 17
- 400
- 60
- a
- Σχετικα
- πρόσβαση
- Προσθέτει
- Υποθέσεων
- Όλα
- an
- και
- απάντηση
- κάθε
- ΕΙΝΑΙ
- Παράταξη
- AS
- ήχου
- συγγραφέας
- μακριά
- πίσω
- φόντο
- Κακός
- βάση
- βασικός
- BE
- είναι
- αγαπημένη
- Κομμάτι
- Αποκλεισμός
- Μπλοκ
- αλλά
- by
- ρίχνει
- σαφώς
- κωδικός
- βάση κώδικα
- Κοινός
- ολοκλήρωση
- συγκρότημα
- θεωρούνται
- Περιέχει
- Γωνία
- θα μπορούσε να
- συμφωνία
- Προσδιορίστε
- Σκάλες
- Όχι
- κάθε
- επεξεργασία
- προσπάθεια
- αρκετά
- εξίσου
- εξισώσεις
- κατ 'ουσίαν,
- Αιθέρας (ΕΤΗ)
- εκτελέστηκε
- υφιστάμενα
- Ανάπτυξη
- Επέκταση
- Μόδα
- Χαρακτηριστικό
- σύντροφος
- λίγοι
- Αρχεία
- ταιριάζουν
- ίσια
- Για
- από
- πλήρη
- διασκέδαση
- παράγουν
- γραφικών
- αμυχές
- είχε
- λαβή
- Σκληρά
- υλικού
- ΩΡΕΣ
- HTML
- HTTPS
- identiques
- if
- εικόνα
- in
- διασταύρωση
- σε
- IT
- το JavaScript
- μόλις
- Είδος
- ξέρει
- φως
- Φωτιστικά
- Περιωρισμένος
- γραμμές
- ματιά
- αγάπη
- πολοί
- max-width
- καταναλωτές
- πρακτικά
- μοντέλο
- μοντέλα
- μονόχρωμος
- περισσότερο
- πλέον
- κίνηση
- καθαρά
- επόμενη
- τώρα
- of
- off
- Παλιά
- on
- ONE
- αποκλειστικά
- Βελτιστοποιημένο
- or
- δικός μας
- έξω
- People
- επίδοση
- Εικονοκύτταρο
- Σκέτη
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- κυρίως
- πρωταρχικός
- αρχές
- Τραβά
- Γρήγορα
- αρκετά
- RAY
- ανίχνευση ακτίνων
- Μειωμένος
- υπόλοιπα
- θυμάμαι
- καθιστά
- Ανάλυση
- τρέξιμο
- ίδιο
- σκηνή
- μηδέν
- Απλούς
- απλά
- ενιαίας
- μερικοί
- κάτι
- Πηγή
- Φάσμα
- σφαίρα
- Spot
- Στάδιο
- ξεκινά
- στάση
- Ιστορία
- τέτοιος
- αποδέκτες
- λήψη
- ταινία
- εργασίες
- ότι
- Η
- Το μπλοκ
- τότε
- Εκεί.
- Αυτοί
- πράγματα
- αυτό
- εκείνοι
- ώρα
- προς την
- πολύ
- Εντοπισμός
- τροχιά
- μικροαλλαγές
- δύο
- τύπος
- χρησιμοποιώντας
- Αξίες
- πολύ
- ήταν
- Τρόπος..
- ΛΟΙΠΌΝ
- Ποιό
- ολόκληρο
- Wikipedia
- θα
- με
- λειτουργεί
- κόσμος
- αξία
- γραπτή
- zephyrnet