ALWAYS use when the user wants to add MetalFX temporal upscaling, super-resolution, or upscaling to a Metal app - whether they say "add MetalFX", "add temporal upscaling", "render at lower resolution and upscale",…
---
name: using-metalfx-temporal-upscaler
description: ALWAYS use when the user wants to add MetalFX temporal upscaling, super-resolution, or upscaling to a Metal app — whether they say "add MetalFX", "add temporal upscaling", "render at lower resolution and upscale", "add DLSS-like upscaling", "add FSR-like upscaling", TAA, motion vectors, jitter pattern, or mention MTLFXTemporalScaler (Metal 3) or MTL4FXTemporalScaler (Metal 4) directly.
---
# Adding MetalFX Temporal Upscaling to a Metal App
This skill walks through integrating `MTLFXTemporalScaler` into an existing Metal rendering application. The scaler renders at a lower resolution and uses motion vectors, depth, and temporal jitter to produce a high-quality upscaled output.
## Prerequisites
- macOS 13.0+ / iOS 16.0+
- Apple Silicon recommended
- `@import MetalFX;` (auto-links with `CLANG_ENABLE_MODULES = YES`)
- The app must already render a 3D scene with a projection matrix and model-view-projection transforms
## Overview of Changes
The integration touches 3 areas:
1. **Shaders** — Add motion vector output (MRT) and subpixel jitter to the vertex shader
2. **Renderer** — Create offscreen render targets, the temporal scaler, and a new 3-pass render flow
3. **Shared types** — Add previous-frame MVP and jitter offset to the per-frame data struct
Read `references/integration-guide.md` for the complete technical reference including API details, texture formats, jitter sequences, motion vector conventions, and troubleshooting.
… install to load the full skill