Metal Upscaler
Render the world below native resolution, upscale it cleanly, keep the HUD razor sharp.
Built for Apple Silicon Macs, where Retina panels mean you're usually pushing far more pixels than you need to.
What it does
Minecraft draws the world at a fraction of your display resolution, then reconstructs it to full size before the HUD is drawn. You get the framerate of a lower resolution with an image far closer to native — and your text, inventory and UI never lose a pixel of sharpness, because they're always rendered at 100%.
Presets
Familiar ratios, the same convention other upscalers use:
| Preset | Scale | Pixels drawn |
|---|---|---|
| Native AA | 100% | 100% |
| Ultra Quality | 77% | ~59% |
| Quality | 67% | ~44% |
| Balanced | 59% | ~35% |
| Performance | 50% | 25% |
| Ultra Performance | 33% | ~11% |
Or set your own with the Custom slider.
A filter that respects pixel art
Bilinear upscaling turns Minecraft's hard-edged textures into mush. Metal Upscaler defaults to Lanczos with anti-ringing — it reconstructs edges properly, and clamps every pixel to its own neighbourhood so you never get the bright and dark halos that plain Lanczos leaves along block edges.
Dynamic resolution
Set a target framerate and let the scale float to hold it. Steps are quantised so the resolution drifts rather than pumping between values.
MetalFX (experimental)
Apple's own spatial scaler, running on real Metal textures shared with OpenGL through an IOSurface. Off by default and honestly labelled: on the OpenGL path it carries a real interop cost, and the built-in Lanczos filter is usually faster. It's there to measure.
Plays well with others
Works alongside Sodium, Iris and shaderpacks, and Distant Horizons. Options appear in vanilla Video Settings, and in Sodium's own settings screen when it's installed. F3 shows the live render resolution.
Planned
- Frame generation via MetalFX — Apple's frame interpolator is available on Apple Silicon; the blocker is that Minecraft doesn't produce motion vectors, which have to be solved first
- MetalFX temporal upscaling, same dependency
Honest expectations
This helps when you're fill-rate bound — high resolution, shaders, high render distance. It does nothing for the CPU-bound half of a Minecraft frame (chunk meshing, entity ticking). If Native AA and Ultra Performance give you the same framerate, you're CPU-bound and Sodium is the tool you want.

