In diesem Live-Stream demonstriert ein Entwickler die Portierung eines MIPS-Prozessor-Emulators (biddyMips) und eines minimalistischen Betriebssystems (funbox) auf die Grafikkarten-Plattform Shadertoy. Der Stream behandelt die Überwindung strikter Plattform-Restriktionen (keine externen Assets, ausschließlich Code-basierte Datenspeicherung), die Behebung komplexer Puffer-Synchronisationsprobleme zwischen Render-Passes, die Implementierung speichergebundener Ein-/Ausgabe (MMIO) für Tastatur- und Maussteuerung sowie die Ausführung von Programmen wie einer Fixpunkt-Mandelbrot-Demo und einem rudimentären Breakout-Spiel direkt im Shader.
Wichtigste Punkte & Zeitstempel
0:04 MIPS-Emulator auf Shadertoy: Vorstellung von biddyMips, einem kompakten MIPS-Architektur-Emulator, der entwickelt wurde, um die strengen Einschränkungen von Shadertoy (fehlende Möglichkeit zum Laden externer Dateien oder Texturen) zu umgehen.
0:06 Funbox-Betriebssystem: Entwicklung von funbox, einer Kombination aus Betriebssystem-Kernel und Unix-ähnlicher Shell (mit integrierten Hilfsprogrammen wie free, dd, echo), die auf eine Größe von 18 KB optimiert wurde.
0:08 Puffer-Synchronisation: Analyse und Lösung eines Render-Puffer-Konflikts in Shadertoy, bei dem die asynchrone Ausführungsreihenfolge von Buffer A und Buffer B sowie Maus-Resets den Arbeitsspeicher während der Datenausgabe fälschlicherweise überschrieben.
0:13 Ausführungsgeschwindigkeit: Skalierung der Emulationsleistung von einem CPU-Befehl pro Frame auf über 1.024 Befehle pro Frame, um eine flüssige Ausführung von Konsolenanwendungen zu gewährleisten.
0:28 Fixpunkt-Grafik (Mandelbrot): Implementierung eines Programms zur Berechnung der Mandelbrot-Menge in C unter Verwendung von Fixpunktarithmetik, gerendert über direkt in den Videospeicher gemappte Pixel-Arrays.
0:48 Peripherie-Anbindung (MMIO): Einrichtung einer speichergebundenen Ein-/Ausgabe für Tastatur- und Mausereignisse, inklusive Fehlerbehebung bei browserspezifischen Scan-Code-Abweichungen unter Firefox und LibraWolf.
2:15 Funbox-Systemstart: Erfolgreiches Booten der funbox-Shell innerhalb der Shadertoy-Simulation, wodurch standardmäßige Systembefehle wie Prozessübersichten (ps) und Speicherabfragen (free) ausführbar werden.
2:24 Breakout-Entwicklung: Programmierung und schrittweise Fehlerbehebung eines einfachen Breakout-Spiels, bei dem Kollisionslogik, Paddel-Steuerung und Ball-Trajektorien auf dem text- und pixelbasierten Overlay-Bildschirm implementiert werden.
Glossar
MIPS: Eine weit verbreitete, minimalistische RISC-Mikroprozessorarchitektur, die häufig in eingebetteten Systemen und Ausbildungsumgebungen eingesetzt wird.
Shadertoy: Eine browserbasierte Online-Plattform für die Entwicklung und Präsentation von GLSL-Shadern, die primär für Echtzeit-Computergrafik und Simulationen auf der GPU genutzt wird.
Fixpunktarithmetik: Ein Rechenverfahren zur Darstellung von Bruchzahlen auf Prozessoren ohne dedizierte Gleitkommaeinheit (FPU), bei dem Ganzzahlen mit einem festen Skalierungsfaktor verwendet werden.
Speichergebundene Ein-/Ausgabe (MMIO): Ein Architekturmuster, bei dem Ein- und Ausgabegeräte denselben Adressraum wie der physische Arbeitsspeicher (RAM) nutzen, sodass die CPU über Standard-Speicherbefehle mit Peripherie kommuniziert.
Scan-Code: Ein hardwareabhängiger numerischer Code, den eine Computertastatur beim Drücken oder Loslassen einer Taste an das System sendet.
Render-Puffer (Buffer A/B): Getrennte, sequenziell berechnete Textur- oder Datenpuffer in Shadertoy, die es erlauben, den Zustand von Berechnungen über mehrere Bildwiederholholraten hinweg zu speichern (GPGPU-Simulation).
Kernel: Die Kernkomponente eines Betriebssystems, die als Schnittstelle zwischen der Hardwareschicht und den Anwendungsprogrammen dient und Ressourcen wie Speicher und Rechenzeit verwaltet.