Modern GPU development with Metal and SwiftUI

Last updated: 7 months ago

Abstract

Metal and SwiftUI are located on opposite side of complexity spectrum. It is not really obvious how to combine extremely low-level API with a declarative tool like SwiftUI. However not only it is totally possible, but actually can be a pleasure to deal with! Organizing GPU code into a maintainable and understandable code-base can be a bit of a challenge, but turns out to be pretty straightforward once you look at this problem from the right angle.

During the talk we will see how to build a simple photo-editor that can produce a Hollywood-class image filtering with extreme performance with UI being made with SwiftUI and Combine.

Target audience

Newbies to either Metal or SwiftUI. Minimal background will help get along with things faster but is not necessary by any means.

What to expect

The talk has two parts. First describes the key challenges of combining such things like SwiftUI and Metal. We will see what problems usually arise during the mix and will see how to overcome them.

Next, we will design and build a simple VSCO-app clone from the ground up. App can apply fancy filters to gallery photos using Combine, SwiftUI, Metal and a small piece of Adobe Photoshop.

Outcomes

Basics of SwitUI, Combine and Metal. Insights on how photo editors (image filters in particular) work. Deep dive into UIKit and SwiftUI integration.