ノードライブラリ#
ノードは一つの役割を、意味のある複数のOperationやパラメータで扱います。Gainのチャンネル違い、Gradientの形違い、変換方向だけの違いは同じ目的ノードへまとめます。Operationは通常のCNL定義を選び、内部の式や関数を開いて検査できます。
Referenceを開く#
全ノードのReferenceは実装が使用する定義から生成します。入力・出力、型、初期値、編集範囲、選択肢を掲載します。入力待ちと内部実行型が残る箇所も明示します。
型・初期値の表は同じ検査済み宣言を使い、日本語の目的・使用例・構造の扱いを付けます。表だけを読んで全型・全GPU実行が完成したとは解釈しないでください。対応状況と各処理の実行制約を確認します。
八つのカテゴリ#
| カテゴリ | 役割 |
|---|---|
| Input | 値、Grid、File、Source Layerの取得 |
| Output | 関数の戻り値、観測用画像 |
| Color | 色変換、チャンネル、Grade、合成 |
| Filter | 空間・近傍・画像変形・符号化処理 |
| Keying | マット、キー、マスク生成 |
| Texture | 手続き的なパターン、Noise、距離 |
| Math | 数値、Vector、Field、FFT、集約 |
| Logic | 条件、反復、関数、データ構成 |
第一階層を増やしません。一般ノードは直下に置き、複数の同系列があるときだけ第二階層を使います。検索中は階層を越えて関連度順に並べます。
Normalize#
Math直下の独立したNormalizeへ値を繋ぎます。Gradeのモードとしては作成しません。
| 入力 | 処理 | 出力 |
|---|---|---|
| BooleanのValue | False/Trueをそのまま保持 | 同じBoolean型 |
| 有限Boolean Grid(任意の正の論理rank) | 全サンプルと全descriptorをそのまま保持。定数Gridも変えない | 同じ型・Shape・Dimension・Coordinate・Value Name・Attribute |
| IntegerのValue | 負は-1、ゼロは0、正は1。Float変換やINT_MINの絶対値演算なし | 同じInteger型 |
| Float/VectorのValue | 長さを1へ、ゼロはゼロ | 同じValue型 |
| Complex<Float32>のValue | 位相を保持し、大きさを1へ。ゼロはゼロ | 同じComplex型 |
| Complex<Vector<Float32,N>>のValue、N=1〜4 | Real/Imaginaryの全2N成分を一緒に長さ1へ。最大絶対成分でスケールして極小/極大値も安定に処理 | 同じComplex Vector型 |
| ColorのValue | 有限RGBの最小値・最大値で0〜1へ。Alpha保持 | 同じColor型 |
| 有限Float32 Grid(任意の正の論理rank)/Image/Video | Shape全体の成分別の最小値・最大値で0〜1へ。ColorはAlpha保持 | 同じ型・Shape・lattice |
定数成分は0、非有限値はNaNです。自動クランプや色空間変換ではありません。 SDFの距離を見たい場合はSDF→Normalize→Visualize→Outputを使用できます。 Shapeのない遅延Fieldは先にTo Imageなどで実体化します。rank 4以上もCNLとして有効で 接続できますが、現在のVulkan実行はrank 1〜3までです。実行対象外のrankは明確な 診断となり、Invalidソケットや隠れたCPU処理にはしません。有限Integer/Complex Field、 全PrecisionのGPU対応を含む万能なNormalizeではありません。Complex<Color>はColorのAlphaや値域の意味と Vectorの長さを混同するため対象外です。Complex Vectorのゼロは全成分ゼロ、いずれかの成分が非有限なら全成分NaNです。 Boolean Gridの恒等・Integer Valueの符号という論理対応は、native入力/転送ABIの全対応を意味しません。 有限データの実行はVulkan GPUです。Value演算は既存のFloat32品質プロファイルに従います。
fn main(source: Image<Color,2>) -> Image<Color,2> {
return normalize(source);
}
Blurの有限Image#
Fast Box Blur/Gaussian BlurへImageを接続すると、同じ要素型のImageをそのまま返します。 途中でFieldに戻して画像を二重生成しません。異なる解像度への評価は、指定された結果の lattice上でソースを線形再構成してから処理します。小半径はVulkanの共有メモリ経路を使い、 大半径は補償演算を維持した経路へ切り替えます。負値・HDR・範囲外Alphaを勝手にクランプしません。
Gridプリセット#
Sharpen GridやGaussian Gridは、名前と値が保存された通常のGridです。独立した固定Kernel実装ではありません。作成後にGrid Sheetで編集でき、Convolveへそのまま接続できます。検索結果へ登録するプリセットを作るにはSave Grid Presetを使います。
名前と識別#
表示名はSource Layer、Float Inputなど、役割が分かる名前です。CNL内部の引数IDやクラス名をそのままノードの標準タイトルにしません。表示名の改名は接続や意味上の識別と別です。独自関数の名前は作者の指定を使います。
残っている厳密なCNL呼出し名は、Operation・既存プログラムの定義を識別するためのものです。それをさらに別の作成ノードとして同じメニューへ増やしません。