Pelacak Sinar Spektrum ZX, Dalam BASIC

Pelacak Sinar Spektrum ZX, Dalam BASIC

Node Sumber: 3085593

[Gabriel Gambetta] mengetahui beberapa hal tentang ray tracer, sebagai penulis Tiny Raytracer, raytracer yang ditulis hanya dalam 912 byte JavaScript. Sebagai waktu yang lama sesama penderita ZX Spectrum rancangan Inggris, bisakah kedua hubungan cinta ini digabungkan? Bisakah Tiny Raytracer cocok dengan ZX Spectrum? Di DASAR? Jawabannya adalah sebuah afirmatif, meskipun dengan banyak keterbatasan pada spesies kesayangan kita.

<img decoding="async" data-attachment-id="661085" data-permalink="https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/screenshot-from-2024-01-25-21-02-18/" data-orig-file="https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png" data-orig-size="940,648" data-comments-opened="1" data-image-meta="{"aperture":"0","credit":"","camera":"","caption":"","created_timestamp":"0","copyright":"","focal_length":"0","iso":"0","shutter_speed":"0","title":"","orientation":"0"}" data-image-title="Screenshot from 2024-01-25 21-02-18" data-image-description="

https://gabrielgambetta.com/zx-raytracer.html

” data-image-caption data-medium-file=”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic.png” data-file besar =”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png?w=800″ class=”wp-image-661085 ukuran- sedang” src=”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic.png” alt width=”400″ height=”276″ srcset= ”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png 940w, https://platoaistream.com/wp-content/uploads/ 2024/01/a-zx-spectrum-raytracer-in-basic-1.png?resize=250,172 250w, https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer -in-basic-1.png?resize=400,276 400w, https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png?resize= 800,551 800w” ukuran=”(lebar maksimal: 400px) 100vw, 400px”>

Ray tracing hanya dengan 15 warna primer

Ceritanya dimulai dengan cerita [Gabriel]. Algoritma raytracer Computer Graphics From Scratch (CGFS). dan basis kode yang sudah ada yang di-porting ke dialek BASIC ZX Spectrum yang sangat terbatas, menggunakan VSCode untuk mengedit, BAS2TAP untuk menghasilkan file gambar kaset (pada dasarnya trek audio) dan dijalankan dengan SEKERING. Setelah rantai alat diurutkan, [Gabriel] menambahkan kode secukupnya untuk menangani persamaan perpotongan sinar sebuah bola, dan merender pemandangan tiga bola menjadi gambar berwarna 32x22 piksel, hanya membutuhkan waktu proses 15 menit. Rekan penderita akan mengingat spektrum tersebut memiliki susunan atribut blok (atau susunan warna) 32×22 dengan dua nilai warna untuk piksel latar depan dan latar belakang. Setiap blok atribut berisi 8×8 piksel, yang masing-masing dapat berada di latar depan (aktif) atau latar belakang (nonaktif.) Tahap selanjutnya adalah memperluas kode untuk menangani piksel serta blok, cukup dengan memperluas raytracing ke ukuran penuh. resolusi ×256, dan untuk setiap blok cukup tentukan dua warna yang paling umum, dan jalankan dengan warna tersebut untuk keseluruhan blok. Ini semacam berhasil, dengan gaya 'bentrokan atribut' yang sangat mirip spektrum.

Tapi sekarang waktu prosesnya adalah 17 jam! Berikutnya, titik penyesuaian kinerja, menggunakan beberapa peretasan spektrum BASIC, dan beberapa perkiraan grafis seperti memancarkan sinar untuk setiap piksel sudut blok, dan jika identik, mewarnai 60 piksel sisanya dengan sama dan melanjutkan. . Upaya ini mengurangi waktu proses menjadi dua jam.

Berikutnya [Gabriel] dengan berani membuang model pencahayaan datar, membuat model sumber cahaya tunggal, dan menerapkan satu-satunya trik yang tersisa di dunia spektrum monokrom, yaitu dengan mengubah nilai intensitas untuk setiap blok, menggunakan metode sederhana 8×8 memesan pola gentar, itu tidak terlihat terlalu buruk, semua hal dipertimbangkan. Berhenti sebentar dalam perjalanan menuju penyelesaian, untuk menambahkan bayangan dan waktu pengoperasiannya kembali ke 17 jam, tapi itu sepadan. Jelasnya, ini dioptimalkan untuk satu tipe pemandangan, yang didominasi fitur bola, namun prinsipnya tetap ada, dan kubus hanya berjarak beberapa baris kode saja. Ada peminat?

Raytracing adalah salah satu tugas yang menyenangkan namun rumit yang suka dimasukkan ke dalam perangkat keras yang tidak sesuai, seperti kalkulator grafik TI-84Plus CE ini, dan jika itu agak sulit diakses, ini adalah sesuatu yang sama gilanya berjalan di Excel lama biasa.

Stempel Waktu:

Lebih dari Hack Sehari