ZX Spectrum Raytracer, BASIC-ben

ZX Spectrum Raytracer, BASIC-ben

Forrás csomópont: 3085593

[Gabriel Gambetta] tud néhány dolgot a sugárkövetőkről, mivel ő a Tiny Raytracer szerzője, egy mindössze 912 bájt JavaScript-be írt raytracer. Hosszú időnként fickó az Egyesült Királyságban tervezett ZX Spectrum szenvedője, összevonható ez a két szerelmi kapcsolat? A Tiny Raytracer belefér a ZX Spectrumba? BASIC-ben? A válasz igenlő, bár szeretett fajunk számos korlátjával együtt.

<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-large-file =”https://platoaistream.com/wp-content/uploads/2024/01/a-zx-spectrum-raytracer-in-basic-1.png?w=800″ class=”wp-image-661085 size- medium” 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 800 400w” méretek=”(max. szélesség: 100px) 400vw, XNUMXpx”>

Sugárkövetés mindössze 15 alapszínnel

A történet [Gabriellel] kezdődik Computer Graphics From Scratch (CGFS) raytracer algoritmusok és egy meglévő kódbázis, amelyet a ZX Spectrum nagyon korlátozott BASIC dialektusára portoltak át, a VSCode segítségével szerkesztve, BAS2TAP szalagos képfájl (lényegében hangsáv) létrehozásához, és ezzel végrehajtva FUSE. Az eszközlánc rendezése után [Gabriel] éppen annyi kódot ad hozzá, hogy kezelje egy gömb sugármetszésegyenleteit, és egy három gömbből álló jelenetet 32 ​​× 22 pixeles színes képpé renderel, ami mindössze 15 percet vesz igénybe. A betegek emlékezni fognak arra, hogy a spektrumnak volt egy 32×22-es blokk attribútumtömbje (vagy színtömbje), két színértékkel az előtér és a háttér képpontjaihoz. Minden attribútumblokk 8×8 pixelt tartalmaz, amelyek mindegyike lehet előtérben (bekapcsolt) vagy háttérben (kikapcsolva) ×256 felbontású, és minden blokkhoz egyszerűen határozza meg a két leggyakoribb színt, és futtassa azokkal az egész blokkra. Valahogy működik, nagyon spektrum-esq „tulajdonság-összeütközés” típusú módon.

De most 17 óra az üzemidő! Következő lépés a teljesítmény módosítása, jó néhány spektrum BASIC hack használatával, és néhány grafikus közelítéssel, mint például sugarak leadása a blokk minden sarokpixelére, és ha ezek megegyeznek, a maradék 60 képpont azonos színezése és továbblépés. . Ez az erőfeszítés két órára csökkentette a futási időt.

Következő [Gábriel] bátran lemond a lapos világítási modellről, egyetlen fényforrást modellez, és egy egyszerű módszerrel előveszi a monokróm spektrum világ egyetlen megmaradt trükkjét, az egyes blokkok dithering intenzitásértékeit. 8×8 rendelt dither minta, ez nem tűnik túl rossznak, mindent figyelembe véve. Gyors megálló a befejezés felé vezető úton árnyékok hozzáadása és a futási idő visszaállt 17 órára, de megéri. Nyilvánvaló, hogy ez egyetlen jelenettípusra van optimalizálva, olyanra, ahol túlnyomórészt a gömbök jelennek meg, de az elvek megvannak, és a kockák csak néhány sornyi kódnyira vannak. Vannak fogadók?

A sugárkövetés egyike azoknak a szórakoztató, de összetett feladatoknak, amelyeket az emberek szeretnek nem megfelelő hardverbe ékelni, mint ez a TI-84Plus CE grafikus számológép, és ha ez egy kicsit nehezen elérhető, akkor itt van valami ugyanolyan őrült sima régi Excelben fut.

Időbélyeg:

Még több Hack A Day