[Gabriel Gambetta] wie kilka rzeczy o ray tracingach, będąc autorem Tiny Raytracer, raytracera napisanego w zaledwie 912 bajtach JavaScript. Jako długoletni facet cierpiącym na zaprojektowany w Wielkiej Brytanii ZX Spectrum, czy można połączyć te dwa romanse? Czy Tiny Raytracer zmieści się na ZX Spectrum? W PODSTAWIE? Odpowiedź to odpowiedź twierdząca, aczkolwiek z wieloma ograniczeniami naszego ukochanego gatunku.
Historia zaczyna się od [Gabriela]. Algorytmy raytracera grafiki komputerowej od podstaw (CGFS). oraz istniejącą bazę kodu, która została przeniesiona do bardzo ograniczonego dialektu BASIC ZX Spectrum, przy użyciu VSCode do edycji, BAS2TAP wygenerować plik obrazu taśmy (w zasadzie ścieżkę dźwiękową) i wykonać go FUSE. Po posortowaniu zestawu narzędzi [Gabriel] dodaje tylko tyle kodu, aby poradzić sobie z równaniami przecięcia promieni kuli i renderuje scenę składającą się z trzech sfer do kolorowego obrazu o wymiarach 32 × 22 pikseli, co zajmuje zaledwie 15 minut działania. Inni cierpiący pamiętają, że widmo miało tablicę atrybutów blokowych 32×22 (lub tablicę kolorów) z dwiema wartościami kolorów dla pikseli pierwszego planu i tła. Każdy blok atrybutów zawiera 8×8 pikseli, z których każdy może znajdować się na pierwszym planie (włączony) lub w tle (wyłączony). Następnym etapem było rozszerzenie kodu tak, aby obsługiwał zarówno piksele, jak i bloki, po prostu rozszerzając śledzenie promieni do pełnego 256 ×176 i dla każdego bloku po prostu określ dwa najpopularniejsze kolory i użyj kolorów dla całego bloku. To w pewnym sensie działa, w sposób przypominający „zderzenie atrybutów” w widmie.
Ale teraz czas działania wynosi 17 godzin! Następnie mała poprawka wydajności, przy użyciu kilku hacków widma w BASIC-u i pewnych przybliżeń graficznych, takich jak rzucanie promieni dla każdego narożnego piksela bloku, a jeśli są identyczne, pokolorowanie wszystkich pozostałych 60 pikseli w ten sam sposób i ruszamy dalej . Wysiłek ten skrócił czas pracy do dwóch godzin.
Następnie [Gabriel] odważnie porzuca płaski model oświetlenia, modeluje pojedyncze źródło światła i wyciąga jedyną pozostałą sztuczkę w świecie widma monochromatycznego, czyli dithering wartości intensywności dla każdego bloku, używając prostego Uporządkowany wzór ditheringu 8×8, biorąc pod uwagę wszystko, nie wygląda to tak źle. Szybki przystanek w drodze do realizacji, do dodaj cienie a czas pracy wrócił do 17 godzin, ale warto. Oczywiście jest to zoptymalizowane pod kątem pojedynczego typu sceny, w której dominują kule, ale zasady są tam obecne, a kostki są tylko o kilka linijek kodu więcej. Są chętni?
Raytracing to jedno z tych zabawnych, ale złożonych zadań, które ludzie uwielbiają wciskać w nieodpowiedni sprzęt, jak ten kalkulator graficzny TI-84Plus CE, a jeśli dostęp do tego jest trochę trudny, oto coś równie szalonego działa w zwykłym, starym Excelu.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://hackaday.com/2024/01/26/a-zx-spectrum-raytracer-in-basic/
- :Jest
- :Gdzie
- 1
- 15%
- 17
- 400
- 60
- a
- O nas
- dostęp
- Dodaje
- Sprawy
- Wszystkie kategorie
- an
- i
- odpowiedź
- każdy
- SĄ
- Szyk
- AS
- audio
- autor
- z dala
- z powrotem
- tło
- Łazienka
- baza
- podstawowy
- BE
- jest
- umiłowani
- Bit
- Blokować
- Bloki
- ale
- by
- odlew
- wyraźnie
- kod
- podstawa kodu
- wspólny
- ukończenia
- kompleks
- za
- zawiera
- Corner
- mógłby
- sprawa
- Ustalać
- Rowy
- Nie
- każdy
- redagowanie
- wysiłek
- dość
- Równie
- równania
- istotnie
- Eter (ETH)
- wykonany
- Przede wszystkim system został opracowany
- Rozszerzać
- rozszerzenie
- Moda
- Cecha
- facet
- kilka
- filet
- dopasować
- mieszkanie
- W razie zamówieenia projektu
- od
- pełny
- zabawa
- Generować
- grafika
- hacki
- miał
- uchwyt
- Ciężko
- sprzęt komputerowy
- GODZINY
- HTML
- HTTPS
- identiques
- if
- obraz
- in
- skrzyżowanie
- najnowszych
- IT
- JAVASCRIPT
- właśnie
- Uprzejmy
- wie
- lekki
- Oświetlenie
- Ograniczony
- linie
- Popatrz
- miłość
- wiele
- Maksymalna szerokość
- sam
- minuty
- model
- modele
- monochromatyczny
- jeszcze
- większość
- przeniesienie
- netto
- Następny
- już dziś
- of
- poza
- Stary
- on
- ONE
- tylko
- Zoptymalizowany
- or
- ludzkiej,
- na zewnątrz
- Ludzie
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- piksel
- Równina
- plato
- Analiza danych Platona
- PlatoDane
- przeważnie
- pierwotny
- Zasady
- Ściąga
- Szybki
- całkiem
- RAY
- raytracing
- Zredukowany
- pozostały
- pamiętać
- renderuje
- Rozkład
- run
- taki sam
- scena
- zadraśnięcie
- Prosty
- po prostu
- pojedynczy
- kilka
- coś
- Źródło
- Widmo
- kula
- Spot
- STAGE
- rozpocznie
- Stop
- Historia
- taki
- chętnych
- biorąc
- taśma
- zadania
- że
- Połączenia
- Blok
- następnie
- Tam.
- Te
- rzeczy
- to
- tych
- czas
- do
- także
- Rysunek kalkowy
- śledzić
- szczypanie
- drugiej
- rodzaj
- za pomocą
- Wartości
- początku.
- była
- Droga..
- DOBRZE
- który
- cały
- Wikipedia
- będzie
- w
- działa
- świat
- wartość
- napisany
- zefirnet