← Portfolio

VAL-EYE

A 240x240 circular display running a live 3D scene with no GPU — entirely software-rasterized in C++ on an ESP32-S3, reacting in real time to VAL-9000's audio output.

  • Custom 3D software rasterizer — painter's algorithm, Lambertian shading, alpha-blended triangles
  • Audio-reactive: geometry splits and distorts in proportion to VAL-9000's speech amplitude
  • WiFi-connected, streaming amplitude data from the assistant live
  • Hardware button to trigger TTS playback on VAL-9000
Details

Real-Time 3D Renderer

The display renders a fully software-rasterized 3D scene in real time on the ESP32-S3. The scene consists of a shaded sphere, a counter-spinning octahedron and tetrahedron, and a rotating tick ring, all composited via a sprite buffer and pushed to the display each frame.

Key rendering techniques implemented from scratch in C++:

  • Painter's algorithm depth sorting for correct face draw order
  • Per-face Lambertian shading with a directional light vector
  • Alpha-blended triangle rasterization with manual RGB565 pixel blending
  • Wobble and counterspin — octahedron and tetrahedron rotate in opposite directions with independent phase-offset wobble on pitch and roll axes

Audio Reactivity

The octahedron splits along its axes in proportion to the current audio amplitude, driven live from the VAL-9000 assistant's audio stream. Rotation halts and the scene snaps to a canonical front-facing orientation when VAL-9000 is speaking, resuming smoothly when audio stops.

Connectivity

The device connects to WiFi, streams audio amplitude from VAL-9000, and can trigger TTS playback via a hardware button. Network state drives the scene mode — a connecting animation plays until WiFi is established.

← Portfolio