Native WebGPU / WebGL Profiler for Mac
Xcode GPU frame debugging for WebGL/WebGPU—finally fills the native profiler gap.
A native macOS video player that rebuilds every frame as light on a CRT.
Metal shaders simulate individual RGB phosphors and electron beam timing better than RetroArch.
Retro gaming enthusiasts, emulation hobbyists, macOS developers
RetroArch · OpenEmu · CRT-Guest-Advanced
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.
Xcode GPU frame debugging for WebGL/WebGPU—finally fills the native profiler gap.
Timestamped memory bookmarks with transcript context beat Overcast's simple chapters.
Screen Studio alternative at 20MB with manual zoom anchors and native macOS performance.
Metal rendering is nice, but Neovide already does GPU acceleration cross-platform.
Daily snake puzzle with color-matching twists on iOS and Mac.
1.6MB native player is tiny, but Music.app and VLC already handle local files.