---
title: MetalFX
framework: MetalFX
role: collection
role_heading: Framework
platforms: [iOS 16.0+, iPadOS 16.0+, Mac Catalyst 16.0+, macOS 13.0+, visionOS 1.0+]
path: metalfx
---

# MetalFX

Boost your Metal app’s performance by upscaling lower-resolution content to save GPU time.

## Overview

Overview The MetalFX framework integrates with Metal to upscale a relatively low-resolution image to a higher output resolution in less time than it takes to render directly to the output resolution.

Use the GPU time savings to further enhance your app or game’s experience. For example, add more effects or scene details. MetalFX gives you two different ways to upscale your input renderings: Temporal antialiased upscaling Spatial upscaling If you can provide pixel color, depth, and motion information, add an MTLFXTemporalScaler instance to your render pipeline. Otherwise, add an MTLFXSpatialScaler instance, which only requires a pixel color input texture. Because the scaling effects take time to initialize, make an instance of either effect at launch or when a display changes resolutions. Once you’ve created an effect instance, you can use it repeatedly, typically once per frame.

## Topics

### Temporal scaling

- [Applying temporal antialiasing and upscaling using MetalFX](metalfx/applying-temporal-antialiasing-and-upscaling-using-metalfx.md)
- [MTLFXTemporalScaler](metalfx/mtlfxtemporalscaler.md)
- [MTLFXTemporalScalerDescriptor](metalfx/mtlfxtemporalscalerdescriptor.md)

### Spatial scaling

- [MTLFXSpatialScaler](metalfx/mtlfxspatialscaler.md)
- [MTLFXSpatialScalerDescriptor](metalfx/mtlfxspatialscalerdescriptor.md)
- [MTLFXSpatialScalerColorProcessingMode](metalfx/mtlfxspatialscalercolorprocessingmode.md)

### Classes

- [MTLFXFrameInterpolatorDescriptor](metalfx/mtlfxframeinterpolatordescriptor.md)
- [MTLFXTemporalDenoisedScalerDescriptor](metalfx/mtlfxtemporaldenoisedscalerdescriptor.md)

### Protocols

- [MTL4FXFrameInterpolator](metalfx/mtl4fxframeinterpolator.md)
- [MTL4FXSpatialScaler](metalfx/mtl4fxspatialscaler.md)
- [MTL4FXTemporalDenoisedScaler](metalfx/mtl4fxtemporaldenoisedscaler.md)
- [MTL4FXTemporalScaler](metalfx/mtl4fxtemporalscaler.md)
- [MTLFXFrameInterpolatableScaler](metalfx/mtlfxframeinterpolatablescaler.md)
- [MTLFXFrameInterpolator](metalfx/mtlfxframeinterpolator.md)
- [MTLFXFrameInterpolatorBase](metalfx/mtlfxframeinterpolatorbase.md)
- [MTLFXSpatialScalerBase](metalfx/mtlfxspatialscalerbase.md)
- [MTLFXTemporalDenoisedScaler](metalfx/mtlfxtemporaldenoisedscaler.md)
- [MTLFXTemporalDenoisedScalerBase](metalfx/mtlfxtemporaldenoisedscalerbase.md)
- [MTLFXTemporalScalerBase](metalfx/mtlfxtemporalscalerbase.md)
