Back to browse
GitHub Repository

A native macOS video player that rebuilds every frame as light on a CRT.

0 starsSwift

Phosphor – a CRT TV video player for your Mac

by JoAz111·Jul 19, 2026·4 points·2 comments

AI Analysis

●●●BangerWizardryEye CandyNiche Gem

Metal shaders simulate individual RGB phosphors and electron beam timing better than RetroArch.

Strengths
  • Reconstructs frames via analytical excitation curves instead of applying static scanline overlays.
  • Hyper-optimized for Apple Silicon with multi-pass Metal rendering keeping frames on GPU.
  • Supports distinct aperture grille, slot mask, and shadow mask phosphor patterns at physical pixel resolution.
Weaknesses
  • macOS-only implementation excludes Windows and Linux retro gaming communities entirely.
  • Reference-informed simulation lacks measurement data from specific real-world CRT tube models.
Category
Target Audience

Retro gaming enthusiasts, emulation hobbyists, macOS developers

Similar To

RetroArch · OpenEmu · CRT-Guest-Advanced

Post Description

I built Phosphor. Phosphor is a CRT TV on your Mac. It can take almost any video file and play it as if it’s being shown on a real CRT.

It tries to emulate a CRT all the way down to the electron beam and the individual red, green, and blue phosphors. It simulates the beam scanning across the screen, 240p and 480i raster modes, phosphor persistence, glow, bloom, convergence, composite-video artifacts, and curved glass.

It’s built natively using Swift and Metal and is hyper optimized for Apple Silicon, so it runs like butter. Video frames stay on the GPU, and the expensive CRT reconstruction only runs when a new video frame arrives.

You can choose between aperture grille, slot mask, and shadow mask phosphors. You can also switch between RGB, S-Video, NTSC, and PAL signals, along with consumer TV, Trinitron, and studio-monitor profiles.

Parts of the renderer are based on CRT-Guest-Advanced HD, which I adapted to native Metal and expanded with beam timing, individual phosphor masks, HDR output, direct video playback, and a bunch of Apple Silicon specific optimizations.

I’ve always found it odd that we have great CRT shaders for retro emulation but not for viewing old videos the way they were meant to be watched, and I’m really happy I managed to make this a reality.

Would love to get feedback, especially from people who know CRTs well. It’s 100% free and open source.

Similar Projects