E_ExpressionShader
シェーダースクリプトを直接提供することでボリューメトリックプリミティブ用のシェーダーを定義します。内蔵シェーダーの使い方や一般的なシェーダーについての情報は、E_Shaderを参照してください。
使い方
シェーダーのスクリプト関数を直接指定することでシェーダーを定義します。
シェーダーノードは、Eddy Renderノードへの入力として使用されます。
入力パラメータをエクスプレッションに入れる方法など、エクスプレッションの書き方に関する一般的な情報は、エクスプレッションを参照してください。
スクリプトは、有効なシェーダーになるようにいくつかの関数を定義する必要があります。以下は、PythonとC++の両方に対する最小限のシェーダーの定義です。
Pythonで書かれた最小限のシェーダー
def shader_absorption_scattering(position=Float3, sample=AbsorptionScatteringSample): sample.absorption = [1.0, 1.0, 1.0] sample.scattering = [1.0, 1.0, 1.0] def shader_velocity(position=Float3): return [0.0, 0.0, 0.0] def shader_emission(position=Float3): return [0.0, 0.0, 0.0] def shader_holdout_extinction(position=Float3): return [0.0, 0.0, 0.0]
C++で書かれた最小限のシェーダー
void shader_absorption_scattering(const float3& position, AbsorptionScatteringSample* absorptionScatteringSample) { absorptionScatteringSample->absorption = make_float3(1.0f, 1.0f, 1.0f); absorptionScatteringSample->scattering = make_float3(1.0f, 1.0f, 1.0f); } float3 shader_velocity(const float3& position) { return make_float3(0.0f, 0.0f, 0.0f); } float3 shader_emission(const float3& position) { return make_float3(0.0f, 0.0f, 0.0f); } float3 shader_holdout_extinction(const float3& position) { return make_float3(0.0f, 0.0f, 0.0f); }
インプット/アウトプット
接続 | ClassType | 数値 | 説明 |
---|---|---|---|
bounds | EddyBounds | 0-1 | ボリュームに対するオプションの境界。これが与えられていない場合、入力されたフィールドによって境界が決まります。 |
Output | EddyShader | 1 | E_Renderノードと一緒に使用するEddyのシェーダー。 |
コントロール
パラメータ | 値 | 説明 |
---|---|---|
Language | リスト | エクスプレッションスクリプトを書く言語。 |
Expression | テキスト | シェーダーを定義する関数を含んだスクリプト。変更を適用するには、「apply changes」ボタンを押します。 |
Phase function type | リスト | IsotropicまたはHenyey-Greensteinの位相関数を選択します。 |
Phase function parameter | -1.0…1.0 | Henyey-Greenstein位相関数のパラメータ「g」です。g=0の場合は等方散乱で、g < 0の場合は後方散乱、g > 0の場合は前方散乱です。 |
Minimum feature size | 0…inf | ボリュームの特徴サイズを大きくすることができます。主に陰的なボリュームを対象としています。詳細はE_Shaderを参照してください。何か不明点があれば、ゼロにしておいてください。 |
Bounds field | テキスト | ボリュームの境界を決定する入力されたフィールドパラメータを選択する名前。これが指定されていない場合、入力されたすべてのフィールドが境界として使用されます。 |
Language
名前 | 説明 |
---|---|
Python | Pythonに似た言語のEddyScriptで書かれたスクリプト。 |
C++ | C++で書かれたスクリプト。 |