CNL言語ガイド#
CNL(CompNode Language)は、CompNodeAEで値の計算・画像処理・再利用する関数を書くための言語です。NodeとCodeは、同じCNLプログラムを編集する二つの画面です。Codeはノードの設定を並べるだけのものではなく、関数を定義し、処理を組み合わせるためにも使います。
記法はJavaScript/TypeScriptに近い、波括弧と型付き関数を採用しています。CNLの処理系はC++で実装しています。型の検査を通った計算を、実行計画に従って処理します。
読む順番#
- 最初のCNL:値を計算し、関数にまとめます。
- 記法:関数、変数名、コメント、リテラルを確認します。
- 式と演算子:計算順、比較、Booleanを扱います。
- 型とデータ:値、画像、座標、Attributeを区別します。
- 関数とスコープ:自作関数とGroupを組み合わせます。
- 画像とField:画像処理、座標、有限データを扱います。
- 反復:Repeat Zoneで状態を繰り返し更新します。
- GLSLなどの外部実装:CNLで定義した入出力と別ファイルの画像処理を結びます。対応profileと制限を確認します。
- エラーと検証:下書き、型エラー、実行未対応を見分けます。
- 他の言語との違い:似ている記法とCNL固有の規則を確認します。
- 言語の対応範囲と完成条件:現在できることと残る実装を確認します。
- ワークスペースとソース:main.cnl、自作ノードの依存ファイル、関数目次、標準ライブラリを区別します。
小さな例#
function exposure(value: Float, gain: Float): Float {
const adjusted = value * gain;
return adjusted;
}
function main(): Float {
return exposure(0.25, 2);
}
この例の結果は0.5です。画像がなくても、CNLは型付きの値を計算できます。AEから受け取った値を計算し、他の関数へ渡す場合も同じ仕組みを使います。
この章の完成したcnlコード例は、ドキュメント検証で共通コンパイラーに渡します。検証は記法・名前・型・関数の意味を対象とし、AEへのインストールや、すべてのGPUでの実行確認とは別です。