すべてのオープンソースパッケージ
UISwift

SwiftShaders

SwiftUI のビュー向けの Metal シェーダーエフェクト: 色、ブラー、ディストーション、リップル、トランジション。

7スター数最新リリース: v2.0.0更新日: 2026年10月14日
対応プラットフォーム:iOS 17macOS 14

ライセンス: MIT

iOS 17 以降と macOS 14 以降向けの、依存関係のない Swift パッケージです。各エフェクトは、SwiftUI 自身の colorEffect、distortionEffect、layerEffect の上に構築された1つの view モディファイア、fill、または transition であり、どのビューでも動作します。公開されているすべての引数は GPU に渡る前にチェックされ、エフェクトはビューを描画してピクセルを比較するテストで検証されています。

機能

  • 31個の [[ stitchable ]] Metal 関数に支えられた、26個の view モディファイア、3個の fill、5個の transition
  • 引数のチェック: 範囲は clamp され、NaN はエフェクトをオフにし、sample offset はビューの対角線内に制限され、gradient map は最大256色までです
  • きれいなエッジ: 近傍のピクセルを比較するエフェクトはビューの内側だけを読み取り、色のエフェクトはテキストのアンチエイリアスされたアルファを保持します
  • アニメーションするエフェクト向けの ShaderTime (.animated、.animated(speed:)、.fixed(_:))。Reduce Motion が有効な場合は最初のフレームで停止します
  • タップに追従するリップルエフェクトで、ビュー自身のジェスチャーの動作を妨げません
  • シェーダー関数を直接呼び出すための ShaderLibrary.swiftShaders と、ビルドツールがそれらをコンパイルしたかを確認する SwiftShaders.isMetalLibraryAvailable
  • macOS と iPhone シミュレータで実行される77個の Swift Testing テスト。あるライブラリテストは、コンパイルされた関数名と Swift コードが呼び出す名前を比較します
  • 3本の記事を含む DocC カタログと、iOS・macOS 向けの ShaderGallery サンプルアプリ

クイックスタート

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

スクリーンショット

コードで描いた風景の3つのコピー: 左は行が波に合わせて揺れ、中央は中心からリップルが広がり、右は光の帯が横切ります
各色エフェクトを適用した風景: original、sepia、duotone、gradient map、posterize、threshold、dither、vignette、scanlines、film grain、shimmer
各レイヤーエフェクトを適用した風景: pixelate、halftone、sketch、emboss、sharpen、progressive blur、chromatic aberration、kaleidoscope、glitch
各ディストーションを適用した風景: wave、water、swirl、bulge、loupe
dissolve、pixelate、swirl、circle reveal、radial wipe の各トランジションを 0%、25%、50%、75% の時点で切り出したフレーム
iPhone シミュレータ上の、サンプルアプリの Halftone 画面。ドットサイズのスライダー付き

タイムライン

  1. 3つのエフェクトでリポジトリが公開されました。v1.0.0 は最初のコミットにタグ付けされ、同じ週にパッケージが拡張されました

  2. シェーダーのソースを削除し、パッケージは placeholder のコードに縮小されました

  3. 作り直しを開始: placeholder のソース、テンプレート、旧テストを削除

  4. v2.0.0: SwiftUI のシェーダーモディファイアの上でゼロから書き直され、31個の Metal 関数、ピクセルテスト、DocC、サンプルアプリを備えます

リンク

関連記事

記事を読む