次にレイヤ パッケージで現在実装されているヘルパー シェーダを示します。
他のシェーダとレイヤ シェーダを混在させることは、現在お勧めできません。レイヤ シェーダは共有ライト リスを使用せず、とりわけ LPE マルチパス コントロールを使用できるためです。将来は利用される可能性があります。レイヤ化シェード ツリーに関与しているすべてのシェーダ(すなわち mila_layer または mila_mix につながっている任意のシェーダ)が、内部のレイヤ化通信に適切に関与して、コンポーネントのウェイトや他のデータを渡せようにする必要があります。
declare shader
color
"mila_adapter" (
color "input",
array struct "passes" {
string "path",
color "output",
boolean "comp"
}
)
version 1
apply texture
end declare
お勧めしませんが、このシェーダを使用するには、その他の非レイヤ シェーダをいくつか、この入力に接続する必要があります。これは、(可能なだけでなく)シェーダをレイヤ シェーダ システムで使用できるものにします。
いくつかのルールが後に続く必要があります。
この mia マテリアルは入力パラメータとして光沢を使用します。この小さなヘルパー シェーダは、光沢を単純に反転させて、mila_glossy_* シェーダの使用する粗さを表現します。
declare shader scalar "mila_get_roughness" (
scalar "glossiness"
)
apply texture
version 1
end declare
古い mental ray バンプ マッピング シェーダの多くは、単に法線を変更します。mila_layer および mila_mix の各シェーダには、ベクトル入力として変更後の法線が必要です。
この小さなヘルパー シェーダは、単にいくつかのシェーダ(通常はバンプ シェーダ)を呼び出して、変更された法線を返します。
declare shader vector "mila_get_normal" (
shader "shader"
)
apply texture
version 1
end declare
3ds Max DCC アプリケーションでこのシェーダを使用するには、実際のテクスチャ シェーダ(たとえば、max_Bitmap)をプラグインするシェーダ max_Bump (3ds max に付属)を使用します。
例:
max_Bitmap => max_Bump.Map => mila_get_normal.shader => mila_layer.components[x].bump
declare shader
struct {
vector "normal",
color "color"
}
"mila_flakes_adapter" (
color "tint",
shader "flakeshader"
)
apply texture
version 1
end declare
このシェーダは、ペイント ライブラリから mi_flakes_bump シェーダとインタフェースするためだけに存在します。そのシェーダは、1 回の操作でカラーを受け取り、変更し、そのカラーを返し、かつ法線を変更する、非常に特殊な動作をします。
このヘルパー シェーダは、特定のカラーを受け取り、flakeshader (mi_flakes_bump のインスタンスであることが必要です)を呼び出し、レイヤ シェーダの適切な入力に接続される変更されたカラーと法線を個別の出力として返します。
このシェーダは、法線の変更と可視性係数の両方に影響するフレークをシミュレートするために、カー ペイント コンポーネントの組み合わせをサポートしています。
使用例についてはここにあるカー ペイントの例を参照してください。
declare shader
struct {
vector "normal",
scalar "visibility"
}
"mila_bump_flakes" (
scalar "weight" default 1.0,
scalar "density" default 0.5,
scalar "perturbation" default 0.8,
scalar "scale" default 0.2,
integer "type" default 0,
integer "cell_style" default 0, #: enum "edgy:circular"
scalar "circle_size" default 0.5
)
apply texture
version 4
end declare
このシェーダはベース ヘアの独立したコンポーネントの法線を移動します。一次反射(R)、透過(TT)、二次反射(TRT)、二次反射グリント(左と右)ローブ(TRT Glint R/L)です。
declare shader
vector "mila_shift_normal" (
integer "mode" default 0, #: enum "hair_R:hair_TT:hair_TRT:hair_TRT_glint_R:hair_TRT_glint_L"
scalar "u_offset" default 0.0,
scalar "v_offset" default 1.0
)
version 1
apply texture
end declare
このシェーダは最も基本的なレベルの法線を移動して、リボンから円柱状のヘア シェイプ ジオメトリに変更します。mental ray では、ヘアはカメラ/視点の方向を向いたリボンとしてモデル化されます。この方法では、法線を変更することで、円柱ジオメトリをエミュレートします。ヘア チューブに完全にモデル化されたジオメトリを使用している場合は、不要です。
declare shader
vector "mila_hair_base_normal" (
)
version 1
apply texture
end declare
このシェーダは、ヘア カラーの吸収に役立つ、半分の距離に対するカラーの平方根を取得します。
declare shader
color "mila_color_sqrt" (
color "color"
)
version 1
apply texture
end declare
このシェーダは、根元と先端のカラーからヘアのティント カラーを作成します。
declare shader
color "mila_hair_color" (
color "base_color" default 0.3 0.3 0.2 1,
scalar "base_noise" default 0,
color "tip_color" default 0.6 0.6 0.4 1,
scalar "tip_noise" default 0
)
version 1
apply texture
end declare
このシェーダは、根元と先端のスカラーからヘアのティントのスカラーを作成します。
declare shader
scalar "mila_hair_scalar" (
scalar "base_scalar" default 0.,
scalar "base_noise" default 0,
scalar "tip_scalar" default 1,
scalar "tip_noise" default 0
)
version 1
apply texture
end declare
このシェーダは、スカラー値をベクトルの x、y、z チャネルに繰り返して、スカラーからベクトルを作成します。
declare shader
vector "mila_scalar_to_vector" (
scalar "scale"
)
version 1
apply texture
end declare
このシェーダは物理的なライトの代わりに機能します。テクスチャ マッピングの機能も追加し、一般的なライト インテグレーションのためにカラーおよび強度の分割も行います。
declare shader color "mila_light" ( color "color", scalar "intensity", scalar "cone", scalar "threshold",# accuracy threshold for optimization scalar "cos_exp" # cosine exponent (disc&rectangle) ) version 1 apply light end declare