On this page |
このノードにより、シェーダやオペレータ定義に直接VEXコードを書き込むことができます。
入力は64個まで接続することができます。どのデータタイプでも接続することができます。 また、このノードのパラメータにより、32個までの出力を定義することができます。 どのデータタイプでも、どのような名前でも定義することができます。
インラインVEXコードを書き込む場合、オペレータの入出力用の変数宣言を書き込む必要はありません。
追加で宣言する変数は、$
を接頭辞として付けてください。
これにより、変数名であることをVOPNETコードジェネレータに伝達します。
その変数名は固有の名前にしてください。
同様に、入出力変数を参照する場合、それらの名前に$
を接頭辞として付けてください。
これがないと、コードジェネレータは正しい変数名を使用しません。
グローバル変数名には$
の接頭辞を付けないでください。
同じシェーダでVOPの複数のコピーについてインスタンスを作成する場合、$
が必要です。
変数名の前に$
が付いていないと、それらの変数が別のInline VOPで同じ名前を使って宣言されることになり、各VOPで参照される値が同じになってしまいます。
VOP間でのこの値の共有は、通常では望ましいものではないため、$
により、VOPの各インスタンスで宣言された変数の新しいバージョンを作ります。
値を入力変数に割り当てることができますが、この方法は推奨しません。 VOPがコードを生成する順序については保証がないため、入力変数に値を割り当てると予期せぬ結果が起こることがあります。
VEXプログラミングについて熟知している場合のみこのノードを使用してください。 このノードを使うと、コードにエラーが起こりやすくなります。 コードにエラーがある場合、ネットワークのいずれかのVOPアイコンをクリックすれば、その内容を確認することができます。
例として、Inline VOPノードにin1
およびin2
という名前の2つの入力とout1
という名前の出力がある場合、
下記のインラインコードは直角三角形の斜辺の長さを出力します:
$out1 = sqrt($in1 * $in1 + $in2 * $in2);
Note
入力名は、 Name コラム内にあります。例えば、この図では、2番目の入力はリストでは2番目なので$freq
として参照されます。
同様に、5番目の入力はリストでは5番目なので$scale
です。
パラメータ ¶
Inline VEX Code
このパラメータは、シェーダに格納するVEXコードを書き込む場所です。
Include Files
シェーダの先頭に含める必要のあるファイルをリストにします。この仕組みを使用すれば、それらのファイルに複雑な関数を書き込み、
それから Inline VEX Code パラメータのVEXコードの1行でそれらの関数を呼び出すことができます。
これは、単にvoplib.h shading.h
のようなファイルリストです。
Outer Code
このパラメータは、シェーダ関数定義の外側(前)に表示するVEXコードを指定します。
Expand Expressions in Code
他のVOPノードと変数名が干渉するのを避ける目的で$
を接頭辞として変数に付ける必要があるため、
Inline VEX Code または Outer Code パラメータでは、通常では、エクスプレッションが評価されません。
しかし、これはchsraw()
参照は、他の場所からコードのスニペットを引き込むためには機能しないことを意味します。
このオプションによりエクスプレッションの評価が有効になります。
Input Name/Label
このノードに接続した各入力については、入力用の名前とラベルを指定することができます。 入力用の名前とラベルを変更するには、表示されたテーブルに新しい文字列を直接入力します。 空っぽの文字列をテーブルに指定した場合、名前とラベルは、各入力に接続されているノードからコピーされます。
Output N Type, Name, and Label
これらのパラメータは、定義したい各出力の名前、ラベル、データタイプを指定します。
入力 ¶
Next Input
次の入力値を接続する場所です。入力は64個まで指定することができます。
Examples ¶
CrinkleSphere Example for Inline Code VOP node
このサンプルでは、Inline Codeノードを使って、VEXコードを直接シェーダやオペレータ定義に記述する方法を説明しています。
See also |