Repeat Zoneで処理を繰り返す#
ノード追加から Repeat Zone を選ぶと、Repeat InputとRepeat Outputが作られます。 同じキャンバス上で、二つの境界の間に繰り返す処理を組み立てます。
- Repeat InputのInitial Valueに初期値を接続します。
- Repeat Inputの出力から、各回で行う処理へ接続します。
- その処理の結果をRepeat OutputのNext Valueへ接続します。
- Repeat OutputのCountで回数を指定し、その出力を使います。
0回なら初期値がそのまま出ます。例えば初期値1へ毎回2を足すと、4回後は9です。 外から内部のノードへ接続した値は、各回で同じ値を使います。内部で変化させる値は Repeat Inputから受け取り、次の値をRepeat Outputへ戻します。
処理に必要なノードを接続するとゾーンの所属が決まります。作成後にノードを移動しても 計算の所属は変わりません。ゾーン内の値を外へ出すときはRepeat Outputを通します。 境界を複製するとペアと内部も複製され、境界を削除するとゾーン全体が削除されます。
Codeでは、通常の関数を本体とするrepeat_zoneに対応します。
fn increment(state: Float32, delta: Float32) -> Float32 {
return state + delta;
}
fn main() -> Float32 {
return repeat_zone(increment, 1.0, 4, 2.0);
}
現在は一つの値を繰り返し状態として受け渡します。VectorやImageも、対応する処理の 実行条件を満たせば状態にできます。回数は静的で、GPUの展開には上限があります。 複数の独立した状態項目、Iteration出力、回数のアニメーション、途中の回を選ぶ表示は この実行範囲に含まれていません。