SwiftShaders
Efectos de shader de Metal para vistas SwiftUI: color, blur, distorsión, ripples y transiciones.
Licencia: MIT
Un paquete Swift sin dependencias para iOS 17+ y macOS 14+. Cada efecto es un view modifier, un fill o una transition sobre los propios colorEffect, distortionEffect y layerEffect de SwiftUI, así que funciona en cualquier vista. Cada argumento público se comprueba antes de llegar a la GPU, y los efectos se verifican con tests que renderizan vistas y comparan píxeles.
Características
- 26 view modifiers, 3 fills y 5 transitions respaldados por 31 funciones Metal [[ stitchable ]]
- Comprobaciones de argumentos: los rangos se limitan (clamp), NaN apaga un efecto, los sample offset se limitan a la diagonal de la vista y los gradient maps usan como máximo 256 colores
- Bordes limpios: los efectos que comparan píxeles vecinos solo leen dentro de la vista, y los efectos de color conservan el alfa antialiased del texto
- ShaderTime (.animated, .animated(speed:), .fixed(_:)) para efectos animados, que se detienen en su primer frame cuando Reduce Motion está activo
- Ripples que siguen el toque sin interferir con los propios gestos de la vista
- ShaderLibrary.swiftShaders para llamar directamente a las funciones del shader, y SwiftShaders.isMetalLibraryAvailable para comprobar que la herramienta de build las compiló
- 77 tests de Swift Testing que se ejecutan en macOS y en un simulador de iPhone; un test de la librería compara los nombres de las funciones compiladas con los nombres que llama el código Swift
- Catálogo DocC con tres artículos y la app de ejemplo ShaderGallery para iOS y macOS
Inicio rápido
1import SwiftShaders2import SwiftUI3 4struct ContentView: View {5 var body: some View {6 Image(systemName: "mountain.2.fill")7 .font(.system(size: 96))8 .foregroundStyle(.blue)9 .padding(40)10 .background(.blue.opacity(0.15), in: .rect(cornerRadius: 24))11 .halftone(dotSize: 6, ink: .blue, paper: .white)12 }13}Instalación
Xcode (File › Add Package Dependencies…)
1https://github.com/muhittincamdali/SwiftShaders.gitSwift Package Manager
1.package(url: "https://github.com/muhittincamdali/SwiftShaders.git", from: "2.0.0")Capturas de pantalla






Cronología
Repositorio abierto con tres efectos; v1.0.0 etiquetada en el primer commit y ampliada la misma semana
Se eliminaron los fuentes de shaders; el paquete quedó reducido a código placeholder
Empezó la reconstrucción: se eliminaron los fuentes placeholder, las plantillas y los tests antiguos
v2.0.0: reescrito desde cero sobre los modificadores de shader de SwiftUI, con 31 funciones Metal, tests de píxeles, DocC y una app de ejemplo