Tüm açık kaynak paketler
ArayüzSwift

SwiftShaders

SwiftUI view'ları için Metal shader efektleri: renk, bulanıklık, distorsiyon, dalgalanma ve geçişler.

7YıldızSon Sürüm: v2.0.0Güncellendi: 14 Ekim 2026
Platformlar:iOS 17macOS 14

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ıç

swift
1import SwiftShaders
2import SwiftUI
3 
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…)

text
1https://github.com/muhittincamdali/SwiftShaders.git

Swift Package Manager

swift
1.package(url: "https://github.com/muhittincamdali/SwiftShaders.git", from: "2.0.0")

Ekran Görüntüleri

Kodla çizilmiş bir manzaranın üç kopyası: solda satırlar bir dalgayla salınıyor, ortada merkezden bir ripple yayılıyor, sağda bir ışık bandı geçiyor
Her renk efektiyle manzara: orijinal, sepia, duotone, gradient map, posterize, threshold, dither, vignette, scanlines, film grain ve shimmer
Her layer efektiyle manzara: pixelate, halftone, sketch, emboss, sharpen, progressive blur, chromatic aberration, kaleidoscope ve glitch
Her distorsiyonla manzara: wave, water, swirl, bulge ve loupe
Dissolve, pixelate, swirl, circle reveal ve radial wipe geçişlerinin yüzde 0, 25, 50 ve 75'teki kareleri
Örnek uygulamanın, nokta boyutu kaydırıcısı olan Halftone ekranı (iPhone simülatörü)

Zaman Çizelgesi

  1. Repo üç efektle açıldı; v1.0.0 etiketi ilk commit'e atıldı ve paket aynı hafta genişletildi

  2. Shader kaynakları silindi; paket yer tutucu koda indirildi

  3. Yeniden kurulum başladı: yer tutucu kaynaklar, şablonlar ve eski testler silindi

  4. v2.0.0: SwiftUI'nin shader modifier'ları üzerine sıfırdan yazıldı; 31 Metal fonksiyonu, piksel testleri, DocC ve örnek uygulama

Bağlantılar

İlgili Yazı

Yazıyı Oku