Daydream Filter Hardware Module

A trippy hardware project that makes images and videos subtly “move” by continuously cycling their hue.

At a glance
Start date2025-01-15
Language(s)Python, GLSL
GitHub Repo(s)
Daydream Filter Hardware Module

Origins

This hardware version grew out of the Daydream Filter web extension. For the background behind the original effect, see the Daydream Filter Web Extension page.

The web extension worked well, but only for content inside a browser. I wanted something that applied the effect to anything on screen—a PC, a console, a streaming device, whatever. My early research pointed toward writing a custom graphics driver, but drivers sit too late in the rendering pipeline to apply this kind of animation. I also explored building an Xbox or Windows app, but both platforms sandbox applications in ways that prevent altering other apps’ graphics output.

I experimented with ReShade and even built a ReShade filter, but it only works with offline games or titles without anti‑cheat. That pushed me toward the next viable approach: using a single‑board computer (SBC) to process an HDMI input signal and output the modified signal through HDMI.

To do that, I needed an SBC with a real GPU. I initially tried the NVIDIA Jetson Nano—it looked new, but was actually several years old. It took weeks just to get it to boot. I wrote two versions of the Daydream effect (CUDA and OpenGL). CUDA never worked, but the OpenGL version did. Unfortunately, the latency was 2–2.5 seconds, which made it unusable.

I got rid of the Jetson and switched to an Orange Pi 5. This board was far more cooperative and brought latency down to roughly 0.3–0.5 seconds with HDMI Game Mode enabled. I suspected I could reduce latency further by using an SBC with a dedicated HDMI input instead of relying on a capture card, so I ordered an Orange Pi 5 Ultra.

That’s where things fell apart. The Ultra had almost no usable software support. Depending on the image, either the GPU didn’t exist, the HDMI input didn’t exist, or the board didn’t boot at all. After months of attempts, and with my Master’s defense suddenly moved up by five months, I had to abandon the Ultra and focus on polishing the working Orange Pi 5 version.

I added two hardware controls (saturation and animation speed) and built in automatic restarts so the system could run unattended.

Limitations

This approach only works with devices that output HDMI, though it could be adapted for other capture interfaces. The Orange Pi 5 also has a USB‑C port, so in theory it could accept USB‑C video input.

Latency is still present, so this isn’t ideal for latency‑sensitive games. The effect also shifts all colors continuously, which effectively induces temporary colorblindness — not great for games where team colors or UI colors matter.

How it works

View the <Link>Daydream Filter</Link> page to see how the effect works.