Skip to content

Instantly share code, notes, and snippets.

@scornflake
scornflake / SampleCALayerMetalRender.swift
Created March 28, 2023 06:32
Sample CA -> metal texture
import Metal
import MetalKit
// Create a MTLTexture for rendering
let textureDescriptor = MTLTextureDescriptor()
textureDescriptor.pixelFormat = .bgra8Unorm
textureDescriptor.width = Int(layer.bounds.width)
textureDescriptor.height = Int(layer.bounds.height)
let texture = device.makeTexture(descriptor: textureDescriptor)!
@scornflake
scornflake / CALayerToMetalRenderer.swift
Created October 19, 2023 02:18
CALayer -> MTLTexture renderer (via CARemderer)
import SWBShared2
import Metal
import AppKit
import CoreImage
import CoreGraphics
import QuartzCore
@globalActor
public struct CALayerToMetalRendererActor {
@scornflake
scornflake / CALayerToMetalRenderer.swift
Created October 23, 2023 18:27
Render a layer tree to a MTLTexture (using a MTLHeap)
import SWBShared2
import Metal
import AppKit
import CoreImage
import CoreGraphics
import QuartzCore
@globalActor
public struct CALayerToMetalRendererActor {
@scornflake
scornflake / MetalTextureHeap.swift
Created October 23, 2023 18:28
Provide a set of MTLTextures from a heap
//
// Created by Neil Clayton on 19/10/23.
// Copyright (c) 2023 Neil Clayton. All rights reserved.
//
import Foundation
import MetalKit
public class MetalTextureHeap {
public private(set) var currentAllocation = 0
@scornflake
scornflake / CALayerToMetalRenderer.swift
Created October 26, 2023 03:51
Rendering a CALayer tree to a .private/.tracked MTLTexture
import SWBShared2
import Metal
import AppKit
import CoreImage
import CoreGraphics
import QuartzCore
@globalActor
public struct CALayerToMetalRendererActor {