PenFXシェーダーパッケージ
LooksカテゴリのImport shaderから、PenFX用のshader package(ZIP)を読み込めます。これはMy Blocks Shaderとは独立した拡張経路です。
最小構成
manifestを使わない場合、ZIP内のすべての.glslが引数なしのcommand blockになります。ファイル名がブロック名になります。
my-shaders.zip
├── soft-glow.glsl
└── distort.glsl
この方式ではGLSLからuniformの型や初期値を推測しません。入力欄を追加する場合はmanifestを使います。
推奨構成
tint-wave.zip
└── tint-wave/
├── shading-shader.json
└── tint-wave.glsl
shading-shader.jsonと.glslはZIP直下に置いても構いません。manifestのfileは、manifestがあるディレクトリを基準に解決されます。1つのZIPに含められるmanifestは1個です。
manifestの例
{
"format": "shading.app/penfx-shader",
"version": 1,
"id": "tint-wave",
"name": "Tint Wave",
"blocks": [
{
"id": "tint-wave",
"name": "tint wave",
"text": "tint wave amount: [AMOUNT] tint: [TINT] mode: [MODE] mix: [MIX] %",
"file": "tint-wave.glsl",
"inputs": [
{
"id": "AMOUNT",
"label": "amount",
"type": "number",
"defaultValue": 8,
"uniform": "u_amount"
},
{
"id": "TINT",
"label": "tint",
"type": "color",
"defaultValue": "#6b56d9",
"uniform": "u_tint"
},
{
"id": "MODE",
"label": "mode",
"type": "menu",
"items": ["soft", "hard"],
"defaultValue": "soft",
"uniform": "u_mode"
},
{
"id": "MIX",
"label": "mix",
"type": "number",
"defaultValue": 100,
"scale": 0.01,
"uniform": "u_mix"
}
]
}
]
}
packageフィールド
| フィールド | 必須 | 内容 |
|---|---|---|
format | はい | shading.app/penfx-shader固定 |
version | はい | single-passは1または2。複数program/adapterは2 |
id | はい | 小文字英数字と-、最大48文字。同じIDは再読込時に置き換え |
name | はい | ツールボックスに表示するpackage名 |
blocks | はい | 1〜64個のブロック定義 |
programs | version 2のみ | PenFX adapterから差し替えるfragment program。最大64個 |