SwiftShaders
SwiftUI view'ları için Metal shader efektleri: renk, bulanıklık, distorsiyon, dalgalanma ve geçişler.
Lisans: MIT
iOS 17+ ve macOS 14+ için bağımlılıksız bir Swift paketi. Her efekt, SwiftUI'nin kendi colorEffect, distortionEffect ve layerEffect modifier'ları üzerinde tek bir view modifier'ı, fill ya da transition; bu yüzden her view'da çalışır. Her public argüman GPU'ya ulaşmadan kontrol edilir ve efektler, view'ları render edip pikselleri karşılaştıran testlerle doğrulanır.
Özellikler
- 31 [[ stitchable ]] Metal fonksiyonuna dayanan 26 view modifier'ı, 3 fill ve 5 transition
- Argüman kontrolleri: aralıklar sınırlanır, NaN efekti kapatır, sample offset view'ın köşegeniyle sınırlıdır, gradient map en fazla 256 renk kullanır
- Temiz kenarlar: komşu pikselleri karşılaştıran efektler yalnız view'ın içini okur, renk efektleri yazının kenar yumuşatmalı alfasını korur
- Animasyonlu efektler için ShaderTime (.animated, .animated(speed:), .fixed(_:)); Reduce Motion açıkken efektler ilk karede durur
- Dokunulan yerden yayılan ve view'ın kendi hareketlerini bozmayan ripple efekti
- Shader fonksiyonlarını doğrudan çağırmak için ShaderLibrary.swiftShaders, derleme aracının onları derleyip derlemediğini anlamak için SwiftShaders.isMetalLibraryAvailable
- macOS'ta ve iPhone simülatöründe koşan 77 Swift Testing testi; bir test, derlenmiş fonksiyon adlarını Swift kodunun çağırdığı adlarla karşılaştırır
- Üç makaleli DocC kataloğu ve iOS ile macOS için ShaderGallery örnek uygulaması
Hızlı Başlangıç
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}Kurulum
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")Ekran Görüntüleri






Zaman Çizelgesi
Repo üç efektle açıldı; v1.0.0 etiketi ilk commit'e atıldı ve paket aynı hafta genişletildi
Shader kaynakları silindi; paket yer tutucu koda indirildi
Yeniden kurulum başladı: yer tutucu kaynaklar, şablonlar ve eski testler silindi
v2.0.0: SwiftUI'nin shader modifier'ları üzerine sıfırdan yazıldı; 31 Metal fonksiyonu, piksel testleri, DocC ve örnek uygulama