ヘルパー シェーダ

次にレイヤ パッケージで現在実装されているヘルパー シェーダを示します。

'adapter' シェーダ mila_adapter

他のシェーダとレイヤ シェーダを混在させることは、現在お勧めできません。レイヤ シェーダは共有ライト リスを使用せず、とりわけ LPE マルチパス コントロールを使用できるためです。将来は利用される可能性があります。レイヤ化シェード ツリーに関与しているすべてのシェーダ(すなわち mila_layer または mila_mix につながっている任意のシェーダ)が、内部のレイヤ化通信に適切に関与して、コンポーネントのウェイトや他のデータを渡せようにする必要があります。

mila_adapter
declare shader 
    color
    "mila_adapter" (
        color   "input",
        array struct "passes" {
            string "path",
            color  "output",
            boolean "comp"
        }
    )
    version 1
    apply texture
end declare

お勧めしませんが、このシェーダを使用するには、その他の非レイヤ シェーダをいくつか、この入力に接続する必要があります。これは、(可能なだけでなく)シェーダをレイヤ シェーダ システムで使用できるものにします。

いくつかのルールが後に続く必要があります。

光沢ヘルパー シェーダ mila_get_roughness

この mia マテリアルは入力パラメータとして光沢を使用します。この小さなヘルパー シェーダは、光沢を単純に反転させて、mila_glossy_* シェーダの使用する粗さを表現します。

mila_get_roughness
declare shader scalar "mila_get_roughness" (
        scalar "glossiness" 
    )
    apply texture
    version 1
end declare
glossiness
0 (鏡と同様)から 1 (拡散と同様)までの範囲の光沢です。粗さから反転されます。

バンプ ヘルパー シェーダ mila_get_normal

古い mental ray バンプ マッピング シェーダの多くは、単に法線を変更します。mila_layer および mila_mix の各シェーダには、ベクトル入力として変更後の法線が必要です。

この小さなヘルパー シェーダは、単にいくつかのシェーダ(通常はバンプ シェーダ)を呼び出して、変更された法線を返します。

mila_get_normal
 declare shader vector "mila_get_normal" (
         shader "shader" 
     )
     apply texture
     version 1
 end declare
shader
法線を摂動させるシェーダです。

3ds Max DCC アプリケーションでこのシェーダを使用するには、実際のテクスチャ シェーダ(たとえば、max_Bitmap)をプラグインするシェーダ max_Bump (3ds max に付属)を使用します。

例:

    max_Bitmap  =>  max_Bump.Map  =>  mila_get_normal.shader => mila_layer.components[x].bump

カー ペイント ヘルパー シェーダ mila_flakes_adapter

mila_flakes_adapter
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 のインスタンスであることが必要です)を呼び出し、レイヤ シェーダの適切な入力に接続される変更されたカラーと法線を個別の出力として返します。

カー ペイント ヘルパー シェーダ mila_bump_flakes

>

このシェーダは、法線の変更と可視性係数の両方に影響するフレークをシミュレートするために、カー ペイント コンポーネントの組み合わせをサポートしています。

使用例についてはここにあるカー ペイントの例を参照してください。

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
weight
計算された他の係数が乗算されて、最終的に法線を摂動させる発信可視性シェーダを決定する受信ウェイトです。
density
可視性に影響を与える場合に使用されます。フレークを含むペイントされたレイヤが光の吸収に影響するかのように、可視性を増減できます。ある意味、下にあるレイヤに重ねて表示されるフレークの量をモデル化します。
perturbation
フレークによって生じる法線の一般的な変化量です。摂動が小さいほど、法線の変化は小さくなり、フレークは平坦になります。
scale
フレークのサイズのスケールです。
type
フレーク サイズのフレークスケールを作成するノイズのタイプです。2 種類のノイズ(歪みとセル)に対して 3 つのバリアントがあります(distortion1:distortion2:distortion3:cellular1:cellular2:cellular3)。
cell_style
セル状ノイズを使用する場合のセルのシェイプです(先端(0)または円形(1))。
circle_size
円形のセル スタイルを使用する場合の円のサイズです。

ベース ヘア ヘルパー シェーダ mila_shift_normal

このシェーダはベース ヘアの独立したコンポーネントの法線を移動します。一次反射(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

ベース ヘア ヘルパー シェーダ mila_hair_base_normal

このシェーダは最も基本的なレベルの法線を移動して、リボンから円柱状のヘア シェイプ ジオメトリに変更します。mental ray では、ヘアはカメラ/視点の方向を向いたリボンとしてモデル化されます。この方法では、法線を変更することで、円柱ジオメトリをエミュレートします。ヘア チューブに完全にモデル化されたジオメトリを使用している場合は、不要です。

declare shader 
    vector "mila_hair_base_normal" (
    )
    version 1
    apply texture
end declare

ベース ヘア ヘルパー シェーダ mila_color_sqrt

このシェーダは、ヘア カラーの吸収に役立つ、半分の距離に対するカラーの平方根を取得します。

declare shader 
    color "mila_color_sqrt" (
        color "color"
    )
    version 1
    apply texture
end declare

ベース ヘア ヘルパー シェーダ mila_hair_color

このシェーダは、根元と先端のカラーからヘアのティント カラーを作成します。

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
base_color
ヘアの根元のカラーです。
base_noise
実装されていない、根元カラーのノイズ係数です。ヘアごとに変化させる場合に使用します
tip_color
ヘアの先端のカラーです。
tip_noise
実装されていない、先端カラーのノイズ係数です。ヘアごとに変化させる場合に使用します

ベース ヘア ヘルパー シェーダ mila_hair_scalar

このシェーダは、根元と先端のスカラーからヘアのティントのスカラーを作成します。

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
base_scalar
ヘアの根元のスカラーです。
base_noise
実装されていない、根元スカラーのノイズ係数です。ヘアごとに変化させる場合に使用します
tip_scalar
ヘアの先端のスカラーです。
tip_noise
実装されていない、先端スカラーのノイズ係数です。ヘアごとに変化させる場合に使用します

ベース ヘア ヘルパー シェーダ mila_scalar_to_vector

このシェーダは、スカラー値をベクトルの x、y、z チャネルに繰り返して、スカラーからベクトルを作成します。

declare shader 
    vector "mila_scalar_to_vector" (
        scalar "scale"
    )
    version 1
    apply texture
end declare
scale
ベクトルの 3 つのすべての次元でこのスカラーが繰り返されます。

Mila マテリアルに適した物理的なライト シェーダ mila_light

このシェーダは物理的なライトの代わりに機能します。テクスチャ マッピングの機能も追加し、一般的なライト インテグレーションのためにカラーおよび強度の分割も行います。

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
color
ライトのカラーです。
intensity
ライトのカラーが乗算されます。
cone
スポットライト シェーダとして使用する場合は、スポットライトの内側のソリッド円錐です。
threshold
ライトが最終的なレンダリング イメージにあまり影響しない場合に最適化するための精度のしきい値です。
cos_exp
円形ライト、矩形ライト、およびオブジェクト エリア ライトの余弦指数です。余弦はライトの方向と比較したエリア ライト ジオメトリのフェースによって設定されます。この引数によって、このカーブを正面(係数 1.0)から視射フェース(0 に近い係数)まで強化できます。