E_ExpressionShader

シェーダースクリプトを直接提供することでボリューメトリックプリミティブ用のシェーダーを定義します。内蔵シェーダーの使い方や一般的なシェーダーについての情報は、E_Shaderを参照してください。

使い方

シェーダーのスクリプト関数を直接指定することでシェーダーを定義します。

シェーダーノードは、Eddy Renderノードへの入力として使用されます。

入力パラメータをエクスプレッションに入れる方法など、エクスプレッションの書き方に関する一般的な情報は、エクスプレッションを参照してください。

スクリプトは、有効なシェーダーになるようにいくつかの関数を定義する必要があります。以下は、PythonC++の両方に対する最小限のシェーダーの定義です。

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++で書かれたスクリプト。