|
1 | | -# v1.9.4 - Lua スクリプト for YMM4 |
| 1 | +# v1.10.0 - Lua スクリプト for YMM4 |
2 | 2 |
|
3 | | -v1.9.3 で追加した AviUtl/AviUtl2 互換マップによる `obj.effect` の解決を見直したリリース |
4 | | -です。v1.9.3 では `obj.effect` を互換マップ駆動へ置き換えた結果、互換マップに宣言の無い |
5 | | -名前が解決されなくなっていました。本リリースでは解決を二段階方式にし、互換マップを優先しつつ、 |
6 | | -宣言の無い名前は従来どおり YMM4 のエフェクト名・キーワードで直接解決するように戻しました。 |
7 | | -あわせて互換マップの読み込みを例外安全にし、退避の経路を段階的に整理しました。 |
| 3 | +エフェクトパネルへ新しいパラメータ入力欄を追加したリリースです。整数スライダー 4 本と、 |
| 4 | +テキスト・フォント・フォルダ・ファイルの文字列入力をスクリプトから参照できるようにしました。 |
| 5 | +文字列パラメータは MoonSharp とネイティブの両エンジンで同じ名前から参照でき、ネイティブでは |
| 6 | +共有メモリの文字列領域を必要量に応じて拡張・縮小します。あわせて毎フレームのアロケーションを |
| 7 | +見直し、補完候補を拡充しました。 |
8 | 8 |
|
9 | 9 | --- |
10 | 10 |
|
11 | 11 | ## 新機能・機能改善 |
12 | 12 |
|
13 | | -### 1. obj.effect の解決を二段階化 |
| 13 | +### 1. 整数スライダー obj.slider0〜3 |
14 | 14 |
|
15 | | -`obj.effect` のエフェクト解決を、互換マップを優先する二段階方式にしました。 |
| 15 | +数値スライダーを 4 本追加しました。各値は `obj.slider0`〜`obj.slider3` として参照できます。 |
16 | 16 |
|
17 | | -- まず互換マップを参照し、AviUtl/AviUtl2 の名前として宣言したエフェクトは、 |
18 | | - パラメータ名の対応と倍率・オフセットの変換を経て YMM4 のプロパティへ反映します。 |
19 | | -- 互換マップに宣言の無い名前は、従来どおり YMM4 のエフェクト名・キーワードで直接解決し、 |
20 | | - パラメータ名はプロパティ名・表示名と照合します。「ウェーブクリッピング」など YMM4・ |
21 | | - コミュニティのエフェクトを名前で呼ぶ使い方が再び動作します。 |
| 17 | +- 値は整数で、小数は扱いません。表示範囲は `obj.slider0` が 1〜10、`obj.slider1` が 0〜100、 |
| 18 | + `obj.slider2` が 0〜1000、`obj.slider3` が -1000〜1000 です。 |
| 19 | +- 状態の切り替えなど、補間を伴わない整数値の受け渡しに使えます。 |
| 20 | +- MoonSharp・ネイティブ・CPU/GPU カーネルのいずれのレーンからも参照できます。 |
| 21 | + |
| 22 | +### 2. 文字列パラメータ obj.text / obj.font / obj.dir / obj.file_* |
| 23 | + |
| 24 | +テキスト・フォント・フォルダ・ファイルの入力欄を追加しました。 |
| 25 | + |
| 26 | +- `obj.text` はテキスト入力欄の文字列、`obj.font` はフォント名、`obj.dir` はフォルダのパスです。 |
| 27 | +- ファイル選択は種類ごとに `obj.file_video` / `obj.file_audio` / `obj.file_image` / |
| 28 | + `obj.file_project` / `obj.file_mp4` / `obj.file_exo` / `obj.file_subtitle` / |
| 29 | + `obj.file_shader` で参照し、選択したファイルのパスを取得します。 |
| 30 | +- 取得したパスは `obj.load` へ渡して画像・動画の読み込みに使えます。 |
| 31 | +- MoonSharp とネイティブの両エンジンで同じ名前から参照できます。 |
| 32 | + |
| 33 | +### 3. 補完候補の拡充 |
| 34 | + |
| 35 | +スクリプトエディタの補完候補へ `obj.slider0`〜`obj.slider3` と、追加した文字列パラメータの |
| 36 | +各名前を加えました。 |
22 | 37 |
|
23 | 38 | --- |
24 | 39 |
|
25 | 40 | ## 互換性・後方互換 |
26 | 41 |
|
27 | | -- v1.9.3 で互換マップに宣言の無い名前による `obj.effect` が解決されなくなっていた問題を |
28 | | - 修正し、YMM4 のエフェクト名・キーワードによる直接呼び出しを従来どおりに戻しました。 |
29 | | -- 解決は段階的に退避します。互換マップを読み込めない場合や、マップに宣言した対象 |
30 | | - エフェクトが読み込まれていない場合は、その名前を YMM4 の名前として直接解決します。 |
31 | | - 直接解決もできない場合や適用に失敗した場合は、そのフレームでは元の映像をそのまま |
32 | | - 出力します(ログへ一度だけ警告を出力)。従来のエラー時挙動と同様です。 |
33 | | -- スクリプト言語・実行エンジン(MoonSharp / LuaJIT)・エディタの既存挙動は変わりません。 |
| 42 | +- スライダーと文字列パラメータは、スクリプト本体でそれらを参照したときだけエフェクトパネルへ |
| 43 | + 表示されます。参照しない既存スクリプトの表示と挙動は変わりません。 |
| 44 | +- CPU/GPU カーネルは数値計算に特化するため、文字列パラメータは扱いません。文字列を参照する |
| 45 | + スクリプトは MoonSharp かネイティブで実行してください。 |
| 46 | +- トラックバー・チェックボックス・カラー・AviUtl 互換ヘッダの既存挙動は変わりません。 |
34 | 47 |
|
35 | 48 | --- |
36 | 49 |
|
37 | 50 | ## 内部実装 |
38 | 51 |
|
39 | | -- 互換マップの読み込みを例外安全にし、リソースの欠損や XML の破損が起きても空のマップへ |
40 | | - 退避します。互換マップの不備が `obj.effect` 全体を停止させることはなく、直接解決は |
41 | | - そのまま機能します。 |
42 | | -- 解決に用いる型名のレジストリと、エフェクト名・キーワードのレジストリは、 |
43 | | - `EffectFactories` の一度の走査でまとめて構築します。マップの対象型が見つからない場合は |
44 | | - 名前による直接解決へ退避し、いずれも見つからない場合のみ当該エフェクトを適用しません。 |
| 52 | +- ネイティブの共有メモリへ文字列パラメータ領域を追加し、容量をワーカーの起動引数にしました。 |
| 53 | + 必要量が容量を超えると 2 倍へ拡張し、容量の半分以下に収まると縮小します。最小は 64KB で、 |
| 54 | + 容量の変化はワーカーの再生成のみで完結します。 |
| 55 | +- 文字列パラメータの変更検出をバージョン方式へ変更し、フレームごとの署名文字列の生成を |
| 56 | + やめました。値の参照が変わったときだけ版数を進めます。 |
| 57 | +- ネイティブの文字列書き込みで、名前のバイト列をキャッシュし、値のエンコード先バッファを |
| 58 | + 再利用します。 |
| 59 | +- スライダーの値は MoonSharp の obj テーブル・ネイティブのフィールド・CPU/GPU カーネルの |
| 60 | + ユニフォームへ配線しました。スクリプトの使用検出は obj メンバを汎用的に走査する方式へ |
| 61 | + 再設計しました。 |
0 commit comments