必要なものがすべてここに
2D スケッチから GPU コンピュートパイプラインまで — Metal で構築された包括的なクリエイティブコーディングツールキット。
◆
2D 描画
シェイプ、テキスト、画像、グラデーション、ブレンドモードによるイミディエイトモードのベクター描画。GPU インスタンスバッチで高パフォーマンス。
◇
3D レンダリング
PBR / Blinn-Phong マテリアル、シャドウマッピング、メッシュプリミティブ、OBJ/USDZ 読み込み、オービットカメラ。
⚡
GPU コンピュート
型付き GPUBuffer<T> による Metal コンピュートシェーダー、画像処理カーネル、GPU パーティクルシステム。
✦
ポストプロセス
ブルーム、ブラー、色収差、グリッチ、PostProcessPipeline によるカスタムシェーダーエフェクト。
♪
オーディオ
リアルタイム FFT 解析、ビート検出、AVAudioEngine によるサウンドファイル再生。
⬡
物理演算
剛体、コンストレイント、衝突検出、空間ハッシュを備えた 2D 物理ワールド。
◎
機械学習
CoreML 統合、22種以上の Vision リクエスト、スタイル転送、GPU テクスチャ変換。
↗
Syphon 出力
VJ ソフトウェア、プロジェクションマッピングツール、録画アプリケーションへのリアルタイム映像共有。
親しみやすい API、
パワフルなエンジン
Sketch プロトコルを
実装するだけで描画を開始できます。ウィンドウ生成、レンダーループ、GPU パイプラインの構築はライブラリが処理します。
- ✓ Processing ライクなイミディエイトモード API
- ✓ 自動 GPU インスタンシングとバッチ処理
- ✓ 固定解像度での2パスレンダリング
- ✓ macOS 14+(Apple Silicon)
MySketch.swift
import metaphor
@main
final class MySketch: Sketch {
var config: SketchConfig {
SketchConfig(width: 1280, height: 720)
}
func draw() {
background(0.1)
fill(.white)
circle(width / 2, height / 2, 200)
noFill()
stroke(.red)
strokeWeight(2)
for i in 0..<12 {
let angle = Float(i) * .pi / 6
let r = 150 + sin(time + angle) * 30
ellipse(
width / 2 + cos(angle) * r,
height / 2 + sin(angle) * r,
40, 40
)
}
}
} サンプルで学ぶ
基礎から高度な GPU テクニックまで、30以上の実行可能なサンプルを用意しています。
基礎
シェイプ、カラー、テキスト、トランスフォーム
- ShapePrimitives
- Hue
- Words
- Rotate
数学とモーション
サイン波、ノイズ、カーブ、時計
- SineCosine
- Noise2D
- MovingOnCurves
- Clock
シミュレーション
パーティクル、フロッキング、ソフトボディ、ライフゲーム
- SimpleParticleSystem
- Flocking
- SoftBody
- GameOfLife
3D
メッシュ、ライティング、テクスチャ、ジオメトリ
- Primitives3D
- Toroid
- Directional
- TextureSphere