BASIC'te ZX Spectrum Raytracer

BASIC'te ZX Spectrum Raytracer

Kaynak Düğüm: 3085593

Yalnızca 912 baytlık JavaScript ile yazılmış bir ışın izleyici olan Tiny Raytracer'ın yazarı olan [Gabriel Gambetta] ışın izleyicileri hakkında birkaç şey biliyor. Uzun zamandır adam Birleşik Krallık tasarımı ZX Spectrum'un hastası olan bu iki aşk ilişkisi birleştirilebilir mi? Minik Raytracer ZX Spectrum'a sığabilir mi? BASIC'te mi? Cevap sevgili türümüzün birçok sınırlamasına rağmen olumlu.

<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- orta” 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” boyutlar=”(maks. genişlik: 400px) 100vw, 400px”>

Yalnızca 15 ana renkle ışın izleme

Hikaye [Gabriel]'in Sıfırdan Bilgisayar Grafikleri (CGFS) ışın izleyici algoritmaları ve düzenleme için VSCode kullanılarak ZX Spectrum'un çok sınırlı BASIC lehçesine taşınan mevcut bir kod tabanı, BAS2TAP bir bant görüntü dosyası (esasen bir ses parçası) oluşturmak ve ile yürütülmek için SİGORTA. Alet zinciri sıralandığında, [Gabriel] bir kürenin ışın kesişim denklemleriyle başa çıkmaya yetecek kadar kod ekliyor ve üç küreli bir sahneyi 32x22 piksel renkli bir görüntüye dönüştürüyor ve yalnızca 15 dakikalık bir çalışma süresi alıyor. Diğer hastalar, spektrumun, ön plan ve arka plan pikselleri için iki renk değerine sahip 32x22 blok nitelik dizisine (veya renk dizisine) sahip olduğunu hatırlayacaklardır. Her öznitelik bloğu, her biri ön plan (açık) veya arka plan (kapalı) olabilen 8×8 piksel içerir. Bir sonraki aşama, ışın izlemeyi tam 256 piksele genişleterek kodu hem pikselleri hem de blokları işleyecek şekilde genişletmekti. ×176 çözünürlük ve her blok için en yaygın iki rengi belirleyin ve tüm blok için olanlarla çalıştırın. Bir nevi spektrum-esq 'nitelik çatışması' tarzında işe yarıyor.

Ama şimdi çalışma süresi 17 saat! Daha sonra, çok sayıda spektrum BASIC hack'i ve bloğun her köşe pikseli için ışınlar yayınlamak ve eğer aynılarsa kalan 60 pikselin tamamını aynı şekilde renklendirmek ve devam etmek gibi bazı grafiksel yaklaşımlar kullanarak bir nokta performans ayarı yapılır. . Bu çaba çalışma süresini iki saate düşürdü.

Daha sonra [Gabriel] düz aydınlatma modelini cesurca bir kenara bırakıyor, tek bir ışık kaynağı modelliyor ve monokrom spektrum dünyasında kalan tek hileyi, basit bir yöntem kullanarak her blok için yoğunluk değerlerini titreştirme yöntemini ortaya çıkarıyor. 8×8 sıralı renk taklidi deseniHer şey göz önüne alındığında, bu pek de kötü görünmüyor. Tamamlanmaya giden yolda hızlı bir duraklama, gölge ekle ve çalışma süresi 17 saate geri döndü, ama buna değer. Açıkçası, bu, ağırlıklı olarak kürelerin yer aldığı tek bir sahne türü için optimize edilmiştir, ancak ilkeler ortadadır ve küpler yalnızca birkaç kod satırı uzaktadır. Alıcı var mı?

Raytracing, insanların uygunsuz donanımlara yerleştirmeyi sevdiği eğlenceli ama karmaşık görevlerden biridir. bu TI-84Plus CE grafik hesap makinesi gibive eğer buna erişmek biraz zorsa, burada da aynı derecede çılgın bir şey var düz eski Excel'de çalışıyor.

Zaman Damgası:

Den fazla Bir Gün Hack