部分実装

ノードライブラリ#

ノードは一つの役割を、意味のある複数の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・既存プログラムの定義を識別するためのものです。それをさらに別の作成ノードとして同じメニューへ増やしません。

このページを編集GitHubへのアクセス権が必要です。

CompNode Guide · 日本語製品ドキュメント仕様と実装範囲は各項目で区別しています。

ドキュメントを検索

検索語を入力してください。

    ↑ ↓ で結果を移動、Enter で開く · 検索はこの端末内だけで実行されます。