SwiftShaders
تأثيرات Metal shader لعروض SwiftUI: اللون، والتمويه (blur)، والتحريف (distortion)، والتموّجات (ripples)، والانتقالات (transitions).
الترخيص: MIT
حزمة Swift بلا اعتماديات لـ iOS 17+ وmacOS 14+. كل تأثير هو معدِّل view واحد، أو fill، أو transition مبني على colorEffect وdistortionEffect وlayerEffect الخاصة بـ SwiftUI نفسها، لذلك يعمل على أي view. تُفحَص كل وسيطة (argument) عامة (public) قبل أن تصل إلى GPU، وتُحقَّق التأثيرات باختبارات ترسم العروض وتقارن البكسلات.
الميزات
- 26 معدِّل view، و3 fills، و5 transitions، مدعومة بـ 31 دالة Metal من نوع [[ stitchable ]]
- فحوصات الوسائط: تُحدَّد النطاقات (clamped)، ويُطفئ NaN التأثير، وتُحصَر إزاحات العيّنة (sample offsets) بقُطر الـ view (diagonal)، وتستخدم خرائط التدرج (gradient maps) 256 لونًا كحد أقصى
- حواف نظيفة: التأثيرات التي تقارن البكسلات المجاورة تقرأ فقط داخل الـ view، وتحافظ تأثيرات اللون على قناة الشفافية (alpha) المُنعَّمة (antialiased) للنص
- ShaderTime (.animated وanimated(speed:). وfixed(_:).) للتأثيرات المتحركة، التي تتوقف عند أول إطار (frame) عندما يكون Reduce Motion مفعَّلًا
- تموّجات (ripples) تتبع لمسة اللمس وتترك إيماءات الـ view الخاصة به تعمل بلا تعطيل
- ShaderLibrary.swiftShaders لاستدعاء دوال الـ shader مباشرة، وSwiftShaders.isMetalLibraryAvailable للتحقق من أن أداة البناء قامت بتجميعها
- 77 اختبارًا بـ Swift Testing تعمل على macOS ومحاكي iPhone؛ ويقارن اختبار مكتبة أسماء الدوال المُجمَّعة (compiled) بالأسماء التي يستدعيها كود Swift
- كتالوج DocC بثلاث مقالات وتطبيق ShaderGallery التوضيحي لـ iOS وmacOS
البدء السريع
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}التثبيت
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")لقطات الشاشة






الجدول الزمني
افتُتح المستودع بثلاثة تأثيرات؛ وُسم v1.0.0 على أول commit واتُّسع في نفس الأسبوع
أُزيلت مصادر الـ shader؛ وقُلِّصت الحزمة إلى كود placeholder
بدأت إعادة البناء: أُزيلت مصادر placeholder والقوالب والاختبارات القديمة
v2.0.0: أُعيدت الكتابة من الصفر على معدِّلات shader الخاصة بـ SwiftUI، بـ 31 دالة Metal، واختبارات بكسل، وDocC، وتطبيق توضيحي