SwiftShaders
Effets de shaders Metal pour les vues SwiftUI : couleur, flou, distorsion, ondulations et transitions.
Licence: MIT
Un package Swift sans dépendance pour iOS 17+ et macOS 14+. Chaque effet est un seul modifier, fill ou transition de vue construit sur les propres colorEffect, distortionEffect et layerEffect de SwiftUI, donc il fonctionne sur n'importe quelle vue. Chaque argument public est vérifié avant d'atteindre le GPU, et les effets sont validés par des tests qui rendent des vues et comparent les pixels.
Fonctionnalités
- 26 modifiers de vue, 3 fills et 5 transitions, appuyés sur 31 fonctions Metal [[ stitchable ]]
- Vérifications d'arguments : les plages sont bornées, NaN désactive un effet, les décalages d'échantillonnage sont limités à la diagonale de la vue et les cartes de gradient utilisent au plus 256 couleurs
- Bords propres : les effets qui comparent des pixels voisins ne lisent qu'à l'intérieur de la vue, et les effets de couleur conservent l'alpha anticrénelé du texte
- ShaderTime (.animated, .animated(speed:), .fixed(_:)) pour les effets animés, qui s'arrêtent à leur première image quand Réduire les animations est activé
- Ondulations qui suivent le toucher et laissent fonctionner les propres gestes de la vue
- ShaderLibrary.swiftShaders pour appeler directement les fonctions de shader, et SwiftShaders.isMetalLibraryAvailable pour vérifier que l'outil de build les a compilées
- 77 tests Swift Testing exécutés sur macOS et un simulateur iPhone ; un test de bibliothèque compare les noms de fonctions compilées aux noms que le code Swift appelle
- Catalogue DocC avec trois articles et l'app d'exemple ShaderGallery pour iOS et macOS
Démarrage rapide
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}Installation
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")Captures d'écran






Chronologie
Dépôt ouvert avec trois effets ; v1.0.0 étiquetée sur le premier commit et le package étendu la même semaine
Sources des shaders supprimées ; le package a été réduit à du code espace réservé
Reconstruction amorcée : sources espace réservé, modèles et anciens tests supprimés
v2.0.0 : réécrit entièrement sur les modifiers de shader de SwiftUI, avec 31 fonctions Metal, des tests de pixels, DocC et une app d'exemple