プラグインの作成
Astrofox の外部ディスプレイプラグインやエフェクトプラグインを作成して配信します。
外部プラグインは、astrofox.plugin.json マニフェストと、フラグメントシェーダーまたは JavaScript モジュールを含む小さなディレクトリです。Astrofox は次の 3 つの組み合わせに対応しています。
| 種類 | ランタイム | 用途 |
|---|---|---|
| ディスプレイ | シェーダー | ジェネレーティブな 2D フラグメントシェーダーのレイヤー |
| エフェクト | シェーダー | 現在のシーンに対するポストプロセスパス |
| ディスプレイ | ワーカー | サンドボックス化された JavaScript キャンバスまたは Three.js のレイヤー |
エフェクトプラグインはシェーダーランタイムのみに対応しています。ワーカーのエフェクトは拒否されます。
サンプルから始める#
Astrofox のリポジトリには、examples/plugins に完全なサンプルが含まれています。
| サンプル | 内容 |
|---|---|
bass-glow | プロパティ uniform を使うシェーダーエフェクト |
plasma | FFT データを使うシェーダーディスプレイ |
pulse-bars | サンドボックス化されたワーカー内での 2D キャンバス描画 |
audio-orb | ホストが提供するライブラリとレンダラーを介した Three.js |
cubes | ホスト主導のカメラコントロールを使った Three.js のインスタンシング |
最も近いサンプルをコピーし、名前空間付き ID、ラベル、実装を変更してから、ローカルで実行します。
最小構成のシェーダーディスプレイ#
次の構成を作成します。
Astrofox は、外部ディスプレイに位置、回転、スケール、不透明度、リアクターのサポートを自動的に追加します。カメラを持たないディスプレイには、ステージのトランスフォームオーバーレイも追加されます。カメラに対応したワーカーディスプレイでは、代わりにカメラコントロールを使用します。
ローカルで開発する#
Astrofox のリポジトリをクローンし、pnpm install を一度実行します。
Astrofox のリポジトリで pnpm dev:plugins を実行します。空いているローカルポートで CORS を有効にしてすべてのサンプルプラグインを配信し、マニフェストの URL を出力します。
Astrofox のアクションレールで Manage plugins を選択し、出力された http://localhost:…/astrofox.plugin.json の URL をインストールします。
プラグインのファイルを編集し、Manage Plugins の Reload を使用します。localhost のプラグインは開発用インストールとして扱われます。
公開する#
マニフェストと参照されるすべてのファイルを、HTTPS でアクセスできる同一のオリジンでホストします。相対的なファイル参照は、マニフェストの URL を基準に解決されます。サーバーは、Astrofox が CORS でファイルを取得できるように許可する必要があります。
変更を公開するときは、マニフェストの version を上げてください。インストール済みのリリースはキャッシュされ、整合性が固定されるため、ユーザーはアップデートのタイミングを自分で選べます。
プラグインの URL は変えずに維持し、マニフェストにはセマンティックバージョニングを使用してください。プロジェクトはプラグインのソース URL とバージョンを保持するため、後から不足している依存関係を把握しやすくなります。
続けてプラグインのランタイムを読むか、マニフェストリファレンスを参照してください。
