Home Uncategorized ZX Spectrum: Entwickler bringt Raytracing auf 42 Jahre alten Computer

ZX Spectrum: Entwickler bringt Raytracing auf 42 Jahre alten Computer

von GamerKeys
257

Der Sinclair ZX Spectrum ist ein Heimcomputer, der ab dem 23. April 1982 vertrieben wurde. Das Gerät verfügte über 16 oder 48 KiB Arbeitsspeicher und 16 KB Festwertspeicher. Der Computer kann zudem nur eine Handvoll Farben darstellen, 15 an der Zahl, inklusive zwei Helligkeitsstufen und Schwarz. Zudem besitzt der Computer von Sir Clive Sinclair nur eine Gesamtauflösung von 256 x 192 Pixeln und ist nicht in der Lage, jede Farbe in jedem Pixel gleichzeitig darzustellen.

Gabriel Gambetta, Senior Software Engineer bei Google Zürich, testete kürzlich trotzdem, wie das alte Gerät mit Raytracing klarkommt.

ZX Spectrum braucht 17 Stunden für einen Raytracing-Frame

Über sein Vorgehen berichtet Gambetta in einem Blogbeitrag. Er portierte den grundlegenden Raytracing-Code in BASIC, der Programmiersprache, mit der der ZX Spectrum läuft. Der Entwickler war überrascht, dass der Code selbst ohne viele Anpassungen auf der begrenzten Hardware ein einfaches Bild mit vier Farben erzeugen konnte. Dieser Vorgang nahm jedoch bereits fast 15 Minuten in Anspruch. “Ich wusste von Anfang an, dass es möglich war, eine Art Raytracer zu implementieren, weil die Theorie und die Mathematik relativ einfach sind”, so Gambetta. “Aber ich wusste nicht, ob es in einer sinnvollen Zeitspanne ablaufen würde, denn das Ding war für heutige Verhältnisse langsam.”

“Um Speicherplatz zu sparen, wurde der Video-RAM in zwei Blöcke aufgeteilt: einen Bitmap-Block, der ein Bit pro Pixel verwendet, und einen Attributblock, der ein Byte pro 8 x 8 Pixelblock verwendet”, erklärt der Entwickler in seinem Blog. “Der Attributblock würde diesem Block zwei Farben zuweisen, genannt INK (Vordergrund) und PAPER (Hintergrund).” Das von Gambetta erzeugte Bild wurde praktisch durch Informationen von in die Szene geworfenen Strahlen eingefärbt. Es entspricht mehr oder weniger den 8 x 8 Pixel großen Blöcken mit einer Größe von nur 32 x 22 Pixeln.

Der nächste Schritt des Entwicklers bestand darin, die Auflösung auf nahezu das Maximum von 256 x 176 Pixeln zu erhöhen, um einzelne Pixel darstellen zu können. Dabei kam es jedoch zu einem Attributkonflikt, für den es keine Lösung gibt. Durch weitere Optimierungen des Codes und mithilfe von Dithering sei Gambetta in der Lage gewesen, ein 3D-Bild mit dem ZX Spectrum darzustellen, das Raytracing ähnelt. Ob dies jedoch auch “in einer sinnvollen Zeitspanne” dargestellt wurde, darf jeder für sich selbst beantworten. Für das Rendern eines einzelnen Frames soll der 42 Jahre alte Kasten fast …

You may also like

Hinterlasse deine Meinung

Die mobile Version verlassen