Skip to content

Instantly share code, notes, and snippets.

View Matt54's full-sized avatar

Matt Pfeiffer Matt54

View GitHub Profile
@Matt54
Matt54 / BurnFadeParams.h
Created July 22, 2025 00:15
RealityKit burn fade sphere: LowLevelMesh, ShaderGraphMaterial, and compute shader
#ifndef BurnFadeParams_h
#define BurnFadeParams_h
struct BurnFadeParams {
float progress;
float scale;
float hueRotate;
float edgeWidth;
float emberRange;
};
@Matt54
Matt54 / AnimatingTorusSystem.swift
Created July 20, 2025 12:40
RealityKit LowLevelMesh Glowing Torus Spinner
import RealityKit
public struct AnimatingTorusSystem: System {
public init(scene: RealityKit.Scene) {}
public func update(context: SceneUpdateContext) {
let entities = context.entities(matching: Self.query,
updatingSystemWhen: .rendering)
for torus in entities.compactMap({ $0 as? LoopingTorusEntity }) {
@Matt54
Matt54 / BurnFadeModelView.swift
Last active July 16, 2025 20:47
Burn Fade Animation for USDZ Models in RealityKit using LowLevelMesh, ShaderGraphMaterial & Metal Compute Shader
import Metal
import RealityKit
import SwiftUI
struct BurnFadeModelView: View {
@State var lowLevelMesh: LowLevelMesh?
@State var timer: Timer?
@State var isForward: Bool = true
@State var morphProgress: Float = 0.0
@State var dwellCounter: Int = 0
@Matt54
Matt54 / BladeSegment.swift
Last active July 6, 2025 15:40
Grass + Wind RealityView using LowLevelMesh, Poisson Disk Sampling, and Metal Compute Shader
import Foundation
struct BladeSegment {
var startPosition: SIMD3<Float>
var endPosition: SIMD3<Float>
var radius: Float
init(startPosition: SIMD3<Float>, endPosition: SIMD3<Float>, radius: Float) {
self.startPosition = startPosition
self.endPosition = endPosition
@Matt54
Matt54 / ExampleAudioFXFiles.swift
Last active July 4, 2025 18:01
4th Of July FlagView with LowLevelMesh, Dynamic Lights, Particles, Audio FX, and more!
import Foundation
enum ExampleAudioFXFiles {
case cannonShot
case fireworkExplode
static let baseURL = URL(string: "https://matt54.github.io/Resources/")!
var url: URL {
return ExampleAudioFXFiles.baseURL.appendingPathComponent( "\(filenameWithExtension)" )
}
@Matt54
Matt54 / IncrementallyUpdatingMultiPartData.swift
Last active June 30, 2025 15:25
RealityKit Multi-Branch LowLevelMesh with Incremental Growth
import RealityKit
import SwiftUI
struct IncrementallyUpdatingMultiPartData {
var settings: IncrementallyUpdatingMultiPartSettings
// Mesh buffer offsets (set once during initialization)
var vertexOffset: Int = 0
var indexOffset: Int = 0
@Matt54
Matt54 / MultiPartMeshView.swift
Created June 29, 2025 15:37
RealityKit Multi-Part LowLevelMesh with Material Indexing
import RealityKit
import SwiftUI
struct MultiPartMeshView: View {
let radius: Float = 0.25
var body: some View {
RealityView { content in
if let mesh = try? createMesh(),
let resource = try? MeshResource(from: mesh)
@Matt54
Matt54 / BranchSegment.swift
Last active July 12, 2025 08:30
RealityKit Growing/Shrinking Branch using LowLevelMesh
import Foundation
struct BranchSegment {
var startPosition: SIMD3<Float>
var endPosition: SIMD3<Float>
var radius: Float
init(startPosition: SIMD3<Float>, endPosition: SIMD3<Float>, radius: Float) {
self.startPosition = startPosition
self.endPosition = endPosition
@Matt54
Matt54 / MorphingSpherePlaneParams.h
Created June 22, 2025 14:26
RealityKit LowLevelMesh Sphere to Circular Plane Morph with Metal Compute Shader
#ifndef MorphingSpherePlaneParams_h
#define MorphingSpherePlaneParams_h
struct MorphingSpherePlaneParams {
int latitudeBands;
int longitudeBands;
float radius;
float morphAmount;
};
@Matt54
Matt54 / MorphingSpherePlaneParams.h
Last active June 22, 2025 01:04
RealityKit LowLevelMesh Sphere to Rectangular Plane Morph with Metal Compute Shader
#ifndef MorphingSpherePlaneParams_h
#define MorphingSpherePlaneParams_h
struct MorphingSpherePlaneParams {
int latitudeBands;
int longitudeBands;
float radius;
float morphAmount;
};