Sign in

Matt Pfeiffer ᯅ

@mattpfeiffer.bsky.social
1K followers 716 following 142 posts

 Platforms Engineer | Audio/Graphics | RealityKit | Metal

PostsRepliesMedia
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 26/03/2026
Hello from Apple Park!! I've taken a little break from sharing on socials, but my Vision Pro journey is alive and well over here. I'm still scrolling around online and rooting for all of you in the visionOS community. Excited for our future 🙏
1150
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 03/12/2025
Excited to share that I'm joining Apple to work on Immersive Analytics! Big thank you to everyone who's been engaging with my Vision Pro experiments. I'm really grateful to have the opportunity to keep pushing in this direction career-wise 🙏
4230
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 22/11/2025
RealityKit experiment #86 (code in the replies) Here's a simple PSVR2 Sense Controller example that handles the inputs, tracks the aim anchor, and triggers haptics
1124
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 12/11/2025
RealityKit experiment #85 (code in the replies) I made one more update to my Logitech Muse example to preserve the anchor orientation when spawning the model. Switched to cubes to demonstrate and added a little axis indicator at the aim
1101
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 06/11/2025
RealityKit experiment #84 (code in the replies) Here's an update to my Logitech Muse example that handles the pressure values for the tip and secondary button
151
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 27/10/2025
RealityKit experiment #83 (code in the replies) This example turns the Logitech Muse into a virtual laser pen for point-to-point measurements. The surface intersection point is determined by raycasting along the stylus' aim-origin vector against the scene reconstruction meshes
193
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 24/10/2025
RealityKit experiment #82 (code in the replies) Here’s a simple Logitech Muse example that tracks the aim, handles the action buttons, and triggers haptics
282
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 05/10/2025
RealityKit experiment #81 (code in the replies) I found a scan of a human skeleton and wanted to try to visualize it in RealityKit. The PLY file had millions of triangles, so I had to decimate the mesh. It ended up being really satisfying to see the wireframe at different LODs
171
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 02/10/2025
RealityKit experiment #80 (gist in the replies) LowLevelMesh “Falling Sand” dissolution and reassemble effect created with SDF shapes and Marching Cubes. A Metal compute shader uses a spatial sweep to "release" triangles that rigidly start to fall
292
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 25/09/2025
RealityKit experiment #79 (code in the replies) Animating 3D text by converting the output of MeshResource(extruding:) to a LowLevelMesh and applying a Metal compute shader The MeshResource was interesting to unpack since it had multiple models/parts plus instance transforms
181
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 18/09/2025
RealityKit experiment #78 (gist in the replies) LowLevelMesh explode-and-assemble animation created by meshing an SDF using Marching Cubes and rigidly pushing it’s triangles outward
293
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 29/08/2025
RealityKit experiment #77 (gist in the replies) Color-blending metaballs created from animated sphere SDFs via Marching Cubes. LowLevelMesh vertices store per-vertex color in the Geometry Color vertex attribute, read by ShaderGraphMaterial
181
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 20/08/2025
RealityKit experiment #76 (gist in the replies) LowLevelMesh blob from meshing the smooth-min of animated sphere SDFs with marching cubes. Glassy ShaderGraphMaterial is based on Apple's "Implementing adjustable material" sample
4183
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 13/08/2025
RealityKit experiment #75 (gist in the replies) LowLevelMesh shape shifting by interpolating between two signed distance fields and meshing with marching cubes
3286
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 08/08/2025
RealityKit experiment #74 (gist in the replies) - LowLevelMesh with disconnected geometry - Marching Cubes + SDF for vertex positions - Vertex normals from SDF gradient - Polynomial smooth-min to blend the shapes
2255
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 22/07/2025
RealityKit experiment #73 (gist in the replies) Here's a simple burn fade example. The ShaderGraphMaterial directly sets the color and opacity from the UV2 attribute of the LowLevelMesh vertices and the Metal compute shader updates those color/opacity values
152
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 20/07/2025
RealityKit experiment #72 (gist in the comments) LowLevelMesh Torus Spinner - incrementally adds vertices/indices (or shifts the indexOffset when removing) - multiple layers of varying opacity and minor radius are stacked with additive blend mode for the glow effect
2102
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 16/07/2025
RealityKit experiment #71 (gist in the comments) - Loads mesh & texture from USDZ - LowLevelMesh verts use float4 color+alpha in uv2 - ShaderGraphMaterial blends texture with uv2.rgb, sets opacity from uv2.w - Metal Compute Shader animates uv2
1103
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 06/07/2025
RealityKit experiment #70 (gist in the comments) Grass Mesh with Wind 🌬️🌿 - Single LowLevelMesh with part for each blade - Poisson Disk Sampling for evenly distributed blade placement - Incremental mesh growth performed on CPU - Compute Shader for offsetting vertices on GPU
2244
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 04/07/2025
RealityKit experiment #69 🇺🇸🔊 (gist in the comments) Happy 4th of July!! - LowLevelMesh + compute shader for flag - Burst particles + point light for fireworks - Entity.playAudio(resource:) for sound - MeshResource(extruding:) for text
141
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 30/06/2025
RealityKit experiment #68 (gist in the comments) One LowLevelMesh with 50 procedurally growing branches. Each branch pre-allocates vertex/index space with offsets. Using multiple parts with index offsets organizes the bookkeeping which enables growing each branch incrementally
171
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 29/06/2025
RealityKit experiment #67 (gist in the comments) LowLevelMesh with multiple parts and material indexing
162
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 28/06/2025
RealityKit experiment #66 (gist in the comments) LowLevelMesh growing/shrinking branch
131
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 22/06/2025
RealityKit experiment #65 (code in the comments) LowLevelMesh sphere to circular plane morph using Metal compute shader
1102
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 21/06/2025
RealityKit experiment #64 (code in the comments) LowLevelMesh sphere to rectangular plane morph using Metal compute shader
1254
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 14/06/2025
RealityKit experiment #63 (code in the comments) Procedural tree with LowLevelMesh. Branching is still pretty simple, but figured I'd share before going too deep into growth direction algorithms
2171
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 01/06/2025
RealityKit experiment #62 (code in the comments) Pancake effect using LowLevelMesh and a Metal compute shader. It progressively compresses all vertices towards the minimum Z bound
140
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 26/05/2025
RealityKit experiment #61 (code in the comments) Height map image to animated 3D terrain pipeline using LowLevelMesh, LowLevelTexture, and Metal compute shaders Inspired by Apple's tutorial on the topic (link in replies)
3383
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 25/05/2025
RealityKit experiment #60 (code in the comments) Takes USDZ model, extracts vertex/texture data into LowLevelMesh & LowLevelTexture, then uses compute shaders to morph the vertices to a sphere and fade the texture to white
3183
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 24/05/2025
Added socials to the Contact Me so I (hopefully) don’t miss critical feedback like this again: "As I strum, the tempo goes all over the place. The way guitar players hold the pick replicates a click trigger on a Vision Pro. Adding a lock function would solve this."
040
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 17/05/2025
Just updated the visionOS tuner + metronome app with support for combined or split windows After getting back into sax practice sessions with the Vision Pro, I realized that managing two windows was kind of a pain
062
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 11/05/2025
SwiftUI 🤝 MTKView update #4 (code in the replies) Added this Signed Distance Function drawing example and got quite carried away. It is mesmerizing how many cool, morphing patterns you can create by applying simple math to a 2D SDF primitive
2100
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 10/05/2025
visionOS Combine and Split View #2 (code in the comments) Thanks to @vrhermit.com's recommendation, this now opens the new window next to the existing window (in 1-2 order) I found that I needed defaultWindowPlacement and defaultSize. defaultSize determined the distance from the existing window
3101
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 10/05/2025
visionOS Combine and Split View (code in the comments) The idea is to have only one instance for each view but allow them to be combined or split up
2141
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 27/04/2025
SwiftUI 🤝 MTKView update #3 (code in the comments) I'm beginning to go through The Book of Shaders and port its examples to Metal. Trying to battle-test and refine my compute shader patterns
2232
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 06/04/2025
SwiftUI 🤝 MTKView example #2 (code in the comments) Worked up a protocol pattern for using a single MTKView to run different Metal texture shaders regardless of the properties they require. The goal is to be able to quickly spin up and preview new shaders in SwiftUI
1211
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 22/03/2025
SwiftUI 🤝 MTKView #1 (code in the comments) Ever since playing around with compute shaders in visionOS, I've wanted them accessible on all platforms. Here's a simple, cross platform pattern for creating a SwiftUI MetalView
192
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 15/03/2025
SwiftUI Slider with fill coming from center (code in the comments) Similar to last post - overlay a new track and thumb over the top of the native slider (disable hit testing on the overlay so gestures are hitting the slider) SFSymbol effects at the bounds for a touch of love
120
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 11/03/2025
Reskin a SwiftUI Slider the easy way (code in the comments) If you can live with having the same height as the native slider, you can just overlay a new track and thumb with disabled hit testing
160
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 07/01/2025
In case this helps anyone.. If you accidentally add a breakpoint inside your swift macro generated code (inside the dropdown), you may get stuck on build with a noisy error message about how "the replacement path doesn't exist". Delete that breakpoint
091
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 05/01/2025
Apple Image Playground API Tutorial (link with code in comments) Did you know the API supports source images and long-form text? Or that it integrates with UIKit using a delegate conformance? 🤯 My first video tutorial - I'm trying new formats this year. Would love feedback!
1140
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 20/12/2024
Is there currently a way to do bookmarks with Bluesky?
240
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 17/12/2024
I know we've all poked fun at the state of Apple Intelligence, but my non-tech friends and family love Image Playground. I think the full-sized images are a little laughable and that's actually a feature not a bug. They are humorous. Genmojis are pretty cool too imo
150
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 11/12/2024
Waited till today to download macOS 15.2 + visionOS 2.2 and I have to say this is a huge upgrade! The new Wide/Ultrawide aspect ratios make the Mac Virtual Display a killer app for the Apple Vision Pro Now if only I could still use iPhone Mirroring while in sidecar...
071
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 07/12/2024
RealityKit experiment #59 (code in the comments) Another LowLevelMesh metal shader. It's come to my attention that a sphere can be constructed through simply normalizing the vertices of a cube. This method gives you complete control over the sphere's resolution
2243
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 06/12/2024
RealityKit experiment #58 (gist in the replies) Expanding on Apple’s low level mesh plane example, you can make a cube mesh using 6 planes. When doing so, you will want to be mindful of the triangle winding order so that all faces point outwards
191
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 05/12/2024
RealityKit experiment #57 (gist in the comments) Apple has a simple LowLevelMesh plane example that is a great start for understanding vertices / indices / triangle winding order. I put together that example + made a GPU/metal shader implementation of the same mesh
191
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 28/11/2024
RealityKit experiment #56 (code in the replies) Happy Thanksgiving! - Downloads .usdz file from online url - Creates model entity and clones it ⁃ Plays model’s animation
2101
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 26/11/2024
RealityKit experiment #55 (code in the replies) Simple LowLevelTexture + Gaussian Blur example - separate compute shader pass using intermediate texture - shared C struct definition between swift/metal
2101
Matt Pfeiffer ᯅ @mattpfeiffer.bsky.social · 22/11/2024
RealityKit experiment #54 (gist in the comments) Breathing autumn leaves for the Fall season 🍂 - LowLevelMesh programmatic leaf - CGImage programmatic texture for different shades of leaves - fibonacci lattice to distribute entities evenly - scale + rotate effect
3171