Pixel Sort#
Triggerのしきい値で選ぶ連続区間を、Criterionのキーで並べ替えます。Axis、Order、キー、しきい値内外を選択式で指定し、Angle DegreesでAxisからの角度を変えます。OperationのSource KeysはSourceを使用し、Image Keysは独立したTrigger Source/Criterion SourceのImageを受け取ります。
Operation#
Operationの変更で同じ目的の処理を選びます。同じ役割で互換のある入力は維持し、明らかに非互換な入力は切り離します。AEへ公開した入力の削除・移動は公開解除を先に要求し、ロックされたノードの変更は拒否します。関数の戻り値そのもののOperationを変更した場合は、その戻り値の型宣言も更新します。通常の値編集では宣言を維持し、接続を黙って別の意味へ変えません。
| Operation | 入力数 | 出力数 |
|---|---|---|
| Source Keys | 13 | 1 |
| Image Keys | 15 | 1 |
以下は実際のノード定義とプロパティ投影から生成した初期状態です。Min/Max/Stepは値ウィジェットの設定であり、演算の全定義域ではありません。接続専用の欄やFileの選択欄には数値設定を表示しません。「接続から確定」は不正な型ではなく、必要な入力がまだない状態です。内部実行表現は公開型への移行対象で、全型対応を意味しません。
Operation: Source Keys#
入力#
| 名前 | 型・状態 | 初期の編集欄 | 初期値 | Min | Max | Step | 選択肢 | AEへ公開 |
|---|---|---|---|---|---|---|---|---|
| source | 接続から確定(入力待ち) | 接続欄(値ウィジェットなし) | 接続が必要 | — | — | — | — | 不可 |
| threshold_min | Float |
Input Number | 0.4 | 0 | 1 | 0.01 | — | 対応する実行時入力のみ可 |
| threshold_max | Float |
Input Number | 0.6 | 0 | 1 | 0.01 | — | 対応する実行時入力のみ可 |
| axis | Enum<"std.choice.axis"> |
Input Dropdown | 0 | 0 | 1 | 1 | 0: Horizontal; 1: Vertical | 対応する実行時入力のみ可 |
| order | Enum<"std.choice.order"> |
Input Dropdown | 0 | 0 | 1 | 1 | 0: Ascending; 1: Descending | 対応する実行時入力のみ可 |
| trigger | Enum<"std.choice.sort_key"> |
Input Dropdown | 0 | 0 | 10 | 1 | 0: Luminance; 1: RGB Average; 2: RGB Product; 3: RGB Minimum; 4: RGB Maximum; 5: Red; 6: Green; 7: Blue; 8: Alpha; 9: Hue; 10: Saturation | 対応する実行時入力のみ可 |
| criterion | Enum<"std.choice.sort_key"> |
Input Dropdown | 0 | 0 | 10 | 1 | 0: Luminance; 1: RGB Average; 2: RGB Product; 3: RGB Minimum; 4: RGB Maximum; 5: Red; 6: Green; 7: Blue; 8: Alpha; 9: Hue; 10: Saturation | 対応する実行時入力のみ可 |
| affect | Enum<"std.choice.threshold_region"> |
Input Dropdown | 0 | 0 | 1 | 1 | 0: Inside Thresholds; 1: Outside Thresholds | 対応する実行時入力のみ可 |
| cycle_degrees | Float |
Input Number | 0 | -360 | 360 | 1 | — | 対応する実行時入力のみ可 |
| angle_degrees | Float |
Input Number | 0 | -360 | 360 | 1 | — | 対応する実行時入力のみ可 |
| mode | Enum<"std.choice.sort_geometry"> |
Input Dropdown | 0 | 0 | 4 | 1 | 0: Axis; 1: Free Angle; 2: Rotation; 3: Radial; 4: Swirl | 対応する実行時入力のみ可 |
| center | Vector<Float,3> |
Input Vec | 0.5, 0.5, 0 | 0 | 1 | 0.01 | — | 対応する実行時入力のみ可 |
| swirl_degrees | Float |
Input Number | 360 | -1440 | 1440 | 1 | — | 対応する実行時入力のみ可 |
単位・参照先は接続値にも適用する、各入力のCNL source指定です。入力の基準と内部演算の基準は独立しています。
| 入力 | 初期単位 | 役割 | 初期の基準 | 参照 | 内部単位・基準 |
|---|---|---|---|---|---|
| angle_degrees | degrees | angle | axes | image / input:0 | degrees / axes |
| center | uv | position | axes | image / input:0 | uv / axes |
| swirl_degrees | degrees | angle | axes | image / input:0 | degrees / axes |
座標・単位の指定でpx/%の意味と対応する空間変換を確認できます。
出力#
| 名前 | 型・状態 |
|---|---|
| result | 接続から確定(入力待ち) |
選択肢の番号は保存上の離散値です。DropdownとDrumで同じ候補集合を使用します。
Operation: Image Keys#
入力#
| 名前 | 型・状態 | 初期の編集欄 | 初期値 | Min | Max | Step | 選択肢 | AEへ公開 |
|---|---|---|---|---|---|---|---|---|
| source | 接続から確定(入力待ち) | 接続欄(値ウィジェットなし) | 接続が必要 | — | — | — | — | 不可 |
| threshold_min | Float |
Input Number | 0 | 0 | 1 | 0.01 | — | 対応する実行時入力のみ可 |
| threshold_max | Float |
Input Number | 1 | 0 | 1 | 0.01 | — | 対応する実行時入力のみ可 |
| axis | Enum<"std.choice.axis"> |
Input Dropdown | 0 | 0 | 1 | 1 | 0: Horizontal; 1: Vertical | 対応する実行時入力のみ可 |
| order | Enum<"std.choice.order"> |
Input Dropdown | 0 | 0 | 1 | 1 | 0: Ascending; 1: Descending | 対応する実行時入力のみ可 |
| trigger | Enum<"std.choice.sort_key"> |
Input Dropdown | 0 | 0 | 10 | 1 | 0: Luminance; 1: RGB Average; 2: RGB Product; 3: RGB Minimum; 4: RGB Maximum; 5: Red; 6: Green; 7: Blue; 8: Alpha; 9: Hue; 10: Saturation | 対応する実行時入力のみ可 |
| criterion | Enum<"std.choice.sort_key"> |
Input Dropdown | 0 | 0 | 10 | 1 | 0: Luminance; 1: RGB Average; 2: RGB Product; 3: RGB Minimum; 4: RGB Maximum; 5: Red; 6: Green; 7: Blue; 8: Alpha; 9: Hue; 10: Saturation | 対応する実行時入力のみ可 |
| affect | Enum<"std.choice.threshold_region"> |
Input Dropdown | 0 | 0 | 1 | 1 | 0: Inside Thresholds; 1: Outside Thresholds | 対応する実行時入力のみ可 |
| cycle_degrees | Float |
Input Number | 0 | -360 | 360 | 1 | — | 対応する実行時入力のみ可 |
| angle_degrees | Float |
Input Number | 0 | -360 | 360 | 1 | — | 対応する実行時入力のみ可 |
| mode | Enum<"std.choice.sort_geometry"> |
Input Dropdown | 0 | 0 | 4 | 1 | 0: Axis; 1: Free Angle; 2: Rotation; 3: Radial; 4: Swirl | 対応する実行時入力のみ可 |
| center | Vector<Float,3> |
Input Vec | 0.5, 0.5, 0 | 0 | 1 | 0.01 | — | 対応する実行時入力のみ可 |
| swirl_degrees | Float |
Input Number | 360 | -1440 | 1440 | 1 | — | 対応する実行時入力のみ可 |
| trigger_source | Image<Color,2> |
接続欄(値ウィジェットなし) | 接続が必要 | — | — | — | — | 不可 |
| criterion_source | Image<Color,2> |
接続欄(値ウィジェットなし) | 接続が必要 | — | — | — | — | 不可 |
単位・参照先は接続値にも適用する、各入力のCNL source指定です。入力の基準と内部演算の基準は独立しています。
| 入力 | 初期単位 | 役割 | 初期の基準 | 参照 | 内部単位・基準 |
|---|---|---|---|---|---|
| angle_degrees | degrees | angle | axes | image / input:0 | degrees / axes |
| center | uv | position | axes | image / input:0 | uv / axes |
| swirl_degrees | degrees | angle | axes | image / input:0 | degrees / axes |
座標・単位の指定でpx/%の意味と対応する空間変換を確認できます。
出力#
| 名前 | 型・状態 |
|---|---|
| result | 接続から確定(入力待ち) |
選択肢の番号は保存上の離散値です。DropdownとDrumで同じ候補集合を使用します。
説明#
rucchoのparallel span-scan bitonic networkとBitonicPixelSorterForAEの11種類のキー・Affect・Cycle・Free Angleを適合しています。Sourceは各軸最大4096pixel、RGBAを補間・クランプせず取得します。比較キーのみBinary16で、0度の同値順序は未定義、非0度は元pixel indexで決定します。キー画像はSourceのpixel-centerに正規化座標・bilinear・clampでサンプリングし、異なる解像度も接続できます。NaNはキー計算時だけ0とし、Source画素は変更しません。Image Keysでは両キーImageが必須で、同じSourceの再利用も可能です。非0度はGPU上のforward domainとnearest-pixel gatherであり、斜めの座標対応は一対一とは限りません。domainは2バッファ合計384MiBまで、超過Shapeは明示エラー。この新経路はnative Vulkan専用で、全GPU1msの保証はありません。Rotation / Radial / Swirl / Pathは未対応です。
使用例#
Threshold Min=0.4、Max=0.6、Horizontal、Ascending、Trigger=Luminance、Criterion=Red、Affect=Inside Thresholds、Cycle Degrees=90で区間内の色を循環する。Angle Degrees=27で斜めに並べ替える。別画像で選別・順序付けする場合はImage Keysを選び、Trigger SourceとCriterion Sourceの両方へImageを接続する。