جميع حزم المصدر المفتوح
واجهة المستخدمSwift

SwiftShaders

تأثيرات Metal shader لعروض SwiftUI: اللون، والتمويه (blur)، والتحريف (distortion)، والتموّجات (ripples)، والانتقالات (transitions).

7النجومآخر إصدار: v2.0.0آخر تحديث: 14 أكتوبر 2026
الأنظمة الأساسية:iOS 17macOS 14

الترخيص: 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

البدء السريع

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}

التثبيت

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")

لقطات الشاشة

ثلاث نسخ من مشهد طبيعي (landscape) مرسوم بالكود: على اليسار تتمايل الصفوف على موجة، وفي الوسط يتمدد تموّج (ripple) من المركز، وعلى اليمين يعبر شريط من الضوء
المشهد الطبيعي مع كل تأثير لوني: الأصلي (original)، وsepia، وduotone، وgradient map، وposterize، وthreshold، وdither، وvignette، وscanlines، وfilm grain، وshimmer
المشهد الطبيعي مع كل تأثير طبقة (layer): pixelate، وhalftone، وsketch، وemboss، وsharpen، وprogressive blur، وchromatic aberration، وkaleidoscope، وglitch
المشهد الطبيعي مع كل تحريف (distortion): wave، وwater، وswirl، وbulge، وloupe
إطارات (frames) انتقالات dissolve وpixelate وswirl وcircle reveal وradial wipe عند 0 و25 و50 و75 بالمئة
شاشة Halftone في التطبيق التوضيحي بـ slider لحجم النقطة، على محاكي iPhone

الجدول الزمني

  1. افتُتح المستودع بثلاثة تأثيرات؛ وُسم v1.0.0 على أول commit واتُّسع في نفس الأسبوع

  2. أُزيلت مصادر الـ shader؛ وقُلِّصت الحزمة إلى كود placeholder

  3. بدأت إعادة البناء: أُزيلت مصادر placeholder والقوالب والاختبارات القديمة

  4. v2.0.0: أُعيدت الكتابة من الصفر على معدِّلات shader الخاصة بـ SwiftUI، بـ 31 دالة Metal، واختبارات بكسل، وDocC، وتطبيق توضيحي

الروابط

مقالة ذات صلة

قراءة المقالة