API ガイド > サンプル プラグイン >

# シェーダのソース コードのサンプル

下記のサンプルは両方のハードウェア シェーダについて示しており、Maya のシーン ビューをレンダリングする場合に使用されます。また、ソフトウェア シェーディング ノードについても示しており、これは Maya のソフトウェア レンダラでレンダリングする場合に使用されます。

一般に、ソフトウェア シェーディング ノードは、mental ray や RenderMan などのサードパーティ製レンダラと互換ではありません。これらのレンダラでは、フレーム全体で定数となっている特定の出力値をシェーディング ノードからピックアップしますが、オブジェクト単位、頂点単位、サンプル単位で変化する値については、固有の API にシェーダを作成する必要があります。

サンプル シェーダ | 分類 | 説明
--- | --- | ---
anisotropicShader | shader/surface | スペキュラ ハイライトを変更するサンプル シェーダ
backfillShader | shader/surface | 照光が拡散しないエリアをカラーで塗りつぶす、変更済みの Phong サーフェス シェーダ マテリアル
brickShader | texture/2d | レンガ状のテクスチャ ノード
cellShader | texture/3d | セルからなるソリッド テクスチャ
checkerShader | texture/2d | UV テクスチャ座標を使用してチェック パターンを作るノード
compositingShader | texture/2d | アンチエイリアシングのマスクと RGB テクスチャを合成するためのノード
contrastShader | utility/color | コントラストとバイアスでカラーを操作するノード
depthShader | shader/surface | カメラからの距離に基づいてオブジェクトにカラーを適用するサーフェス シェーダ マテリアルのサンプル
displacementShader | shader/displacement | ディスプレイスメント シェーダ マテリアルのサンプル
flameShader | texture/3d | フレームからなるソリッド テクスチャ
gammaShader | utility/color | ガンマの補正でカラーを操作するノード
geomShader | utility/general | ジオメトリの XYZ 位置を出力するノード
hwAnisotropicShader_NV20 | shader/surface/utility | 異方性シェーディング エフェクトを作成する NV20 固有の(Geforce3)サンプル シェーダ
hwPhongShader | shader/surface/utility | ピクセル Phong シェーディングごとに実行する立方体環境マッピングのサンプル
hwToonShader_NV20 | shader/surface/utility | マンガ風エフェクトを作成する NV20 固有(Geforce3)のサンプル シェーダ
interpShader | utility/general | サーフェス法線に基づいて 2 色を補間するノード
lambertShader | shader/surface | Lambert サーフェス シェーダ マテリアルのサンプル
lavaShader | texture/3d | 溶岩層からなるソリッド テクスチャ
lightShader | light | ライト シェーダ マテリアルのサンプル
mixtureShader | utility/color | 2 つのカラーと 2 つのマスクを入力として取り、それらを組み合わせて 1 つのカラーを出力するノード
noiseShader | texture/3d | 出力カラーにノイズ関数を適用するノード
phongShader | shader/surface | Phong サーフェス シェーダ マテリアルのサンプル
shadowMatteShader | shader/surface | シャドウ付きのエリアのみにマスクとアルファを出力するシェーダのサンプル
slopeShader | utility/color | ユーザ定義のしきい値に対する傾斜または角度に基づくメッシュのカラー フェース
solidCheckerShader | texture/3d | ソリッド テクスチャのサンプル
vertexColorShader (cvColorShader) | utility/color | 頂点カラー(CPV)をソフトウェア レンダーすることができるようになるノード
volumeShader | shader/volume | ボリューム シェーダ マテリアルのサンプル
hwRenderPostEffect | NA | ハードウェア シェーダにポスト レンダリング エフェクトを追加する方法を例示します。

anisotropicShader

ディペンデンシー グラフ ノード AnisotropicShader を作成する

このノードは、サーフェス シェーダ マテリアルのスペキュラ ハイライトを変更します。

AnisotropicShader ノードの出力アトリビュートは、「outColor」と「outTransparency」です。このシェーダを使用するには、シェーディング グループで AnisotropicShader ノードを作成するか、このノードの出力をシェーディング グループの「SurfaceShader」アトリビュートに接続します。

backfillShader

ディペンデンシー グラフ ノード BackFillShader を作成する

このノードは、照光が拡散しないエリアをカラーで埋めるサーフェス シェーダ マテリアルのサンプルです。

Maya UI では、このノードへの入力はこのノードのアトリビュート エディタで見ることができます。

このノードの出力アトリビュートは「outColor」です。これは、シェーダから作成されたカラーを表す 3 つの float 型の値です。このシェーダを使用するには、シェーディング グループを指定して BackFillShader を作成するか、このノードの出力をシェーディング グループの「SurfaceShader」アトリビュートに接続します。

brickShader

ディペンデンシー グラフ ノード brickTexture を作成する

このノードは、レンガ 2D テクスチャのサンプルです。

BrickTexture ノードの出力アトリビュートは「outColor」です。このシェーダを使用するには、BrickTexture を作成して、その出力をカラー(Color)などのサーフェス/シェーダ ノードの入力に接続します。

cellShader

ディペンデンシー グラフ ノード Cells を作成する

このノードは、3D 空間をセルに分割するソリッド テクスチャのサンプルです。

このノードの出力アトリビュートは、「outColor」と「outAlpha」です。

このシェーダを使用するには、セル ノードを作成し、その出力をカラーなどのサーフェス/シェーダ ノードの入力に接続します。

checkerShader

ディペンデンシー グラフ ノード CheckerNode を作成する

このノードは、テクスチャの UV 座標を評価するサンプルです。チェック パターンが作成されます。また、このノードでは、マニピュレータで UV 座標を移動する際に、2D テクスチャ配置ノードを利用することができます。

このノードに対する入力は、2 つのカラーと 2 つのバイアス値であり、各バイアス値を使用してパターンが決定します。

CheckerNode ノードの出力アトリビュートは「outColor」です。これは、オブジェクトの UV テクスチャ座標から派生したカラーを表す 3 つの float 型の値です。このシェーダを使用するには、CheckerNode を作成して、その出力をカラーなどのサーフェス/シェーダ ノードの入力に接続します。

compositingShader

ディペンデンシー グラフ ノード CompositeNode を作成する

このノードは、シェーディング ノードを合成するサンプルです。

このノードに対する入力は、フォアグラウンド、バックグラウンド、バック カラー、マスク値です。

CompositeNode ノードの出力アトリビュートは「outColor」と「outAlpha」です。このシェーダを使用するには、CompositeNode を作成して、その出力をカラーなどのサーフェス/シェーダ ノードの入力に接続します。

contrastShader

ディペンデンシー グラフ ノード ContrastNode を作成する

このノードは、カラーを操作するサンプルです。

このノードに対する入力は、入力カラー、コントラスト、バイアスです。コントラストとバイアスの入力は、3 つの float 型の値となるので、入力カラーの各 RGB チャネルにそれぞれ適用することができます。

ContrastNode ノードの出力アトリビュートは「outColor」です。有効なコントラスト設定とバイアス設定から派生したカラーを表す 3 つの float 型の値です。このシェーダを使用するには、ContrastNode を作成して、その出力をカラーなどのサーフェス/シェーダ ノードの入力に接続します。

depthShader

ディペンデンシー グラフ ノード DepthShader を作成する

このノードは、カメラからの距離に基づいてオブジェクトにカラーを適用する、サーフェス シェーダ マテリアルのサンプルです。

Maya UI では、このノードへの入力はこのノードのアトリビュート エディタで見ることができます。

このノードの出力アトリビュートは「outColor」です。これは、ノードから作成されたカラーを表す 3 つの float 型の値です。このシェーダを使用するには、シェーディング グループ(Shading Group)を指定して DepthShader を作成するか、このノードの出力をシェーディング グループ(Shading Group)の「SurfaceShader」アトリビュートに接続します。

displacementShader

ディペンデンシー グラフ ノード DispNodeExample を作成する

このノードは、ディスプレイスメント シェーダマテリアルのサンプルです。

このノードに対する入力は、入力カラーと入力乗数です。

DispNodeExample ノードの出力アトリビュートは「displacement」です。このシェーダを使用するには、DispNodeExample ノードを作成して、その出力をシェーディング グループ(Shading Group)の “displacementShader” 入力に接続します。

flameShader

ディペンデンシー グラフ ノード Flame を作成する

このノードは、タービュランスと軸を使ってテクスチャの動きをアニメートする、ソリッド テクスチャのサンプルです。

このノードの出力アトリビュートは、「outColor」と「outAlpha」です。

このシェーダを使用するには、炎(Flame)ノードを作成し、その出力をカラーなどのサーフェス/シェーダ ノードの入力に接続します。

gammaShader

ディペンデンシー グラフ ノード GammaNode を作成する

このノードは、ガンマの補正によってカラーを操作するサンプルです。

このノードに対する入力は、入力カラーとガンマ値です。ガンマ入力は、3 つの float 型の値を持つので、入力カラーの各 RGB チャネルにそれぞれ適用することができます。

GammaNode ノードの出力アトリビュートは「outColor」です。このシェーダを使用するには、GammaNode を作成して、その出力をカラーなどのサーフェス/シェーダ ノードの入力に接続します。

geomShader

ディペンデンシー グラフ ノード GeomNode を作成する

このノードは、オブジェクトにおけるジオメトリの XYZ 位置を評価するサンプルです。

このノードへの入力は、このノード用のアトリビュート エディタにスライダとして描画されるスケールとオフセットです。

GeomNode ノードの出力アトリビュートは「outColor」です。これは、オブジェクトの xyz の位置を表す 3 つの float 型の値です。このシェーダを使用するには、GeomNode を作成して、その出力をカラー(Color)などのサーフェス/シェーダ ノードの入力に接続します。

hwAnisotropicShader_NV20

NV20 固有(Geforce3)のサンプル シェーダ

このシェーダは異方性シェーディング エフェクトを作成します。これで、異方性ルックアップ テーブルのパラメータを変更できるようになります。

このシェーダは、hwUnlitShader の方法を基礎としています。

hwPhongShader

立方体環境マップを使用してピクセルあたりの Phong シェーディングを行う場合の例です。

ライトの方向は現在視点の位置に固定されています。しかし、実際のライトをトラック可能なようにプログラムを変更することができます。

複数のライトがサポートされている場合、マルチ テクスチャリングまたはマルチ パスを使用して、ライトごとに環境マップを検索する必要があります。

hwToonShader_NV20

NV20 固有(Geforce3)のサンプル シェーダ

このシェーダを使用してマンガ風のエフェクトを作成することができます。

この場合、ベースになるデカル テクスチャやライティング ルックアップ テクスチャを指定することができます。

このシェーダは、hwUnlitShader の方法を基礎としています。

hwRenderPostEffect

このプラグインは、ハードウェア レンダラに処理を追加する方法を例示します。イメージの反転やビューに対するカラーの三角形の追加といった単純な操作は、このプラグインで実行されます。

このシェーダを使用するには、プラグインを読み込んで、高精度インタラクティブ(High Quality Interactive)ビューをオンにします。

interpShader

ディペンデンシー グラフ ノード InterpNode を作成する

このノードは、オブジェクトにおけるサーフェス法線を評価するサンプルです。

このノードへの入力は、2 つのカラーと、カラーの挿入を変更する入力値です。

InterpNode ノードの出力アトリビュートは「outColor」です。これは、サーフェス法線での作業の結果として補間されたカラーを表す 3 つの float 型の値です。このシェーダを使用するには、InterpNode を作成して、その出力をカラー(Color)または透明度(Transparency)などのサーフェス/シェーダ ノードの入力に接続します。

lambertShader

ディペンデンシー グラフ ノード LambertShader を作成する

このノードは、Lambert シェーダのサンプルであり、Maya にサーフェス シェーダ マテリアルとしてディペンデンシー ノードを構築する方法を示します。

このノードへの入力はたくさんあり、Maya UI からは、このノードのアトリビュート エディタで見ることができます。

このノードの出力アトリビュートは「outColor」と「outTransparency」です。このシェーダを使用するには、シェーディング グループ(Shading Group)を指定して lambertShader を作成するか、このノードの出力をシェーディング グループの「SurfaceShader」アトリビュートに接続します。

lavaShader

ディペンデンシー グラフ ノード Lava を作成する

このノードは、タービュランスを使用するソリッド テクスチャのサンプルです。

このノードの出力アトリビュートは、「outColor」と「outAlpha」です。

このシェーダを使用するには、Lava ノードを作成し、その出力をカラー(Color)などのサーフェス/シェーダ ノードの入力に接続します。

lightShader

ディペンデンシー グラフ ノード lightNode を作成する

このノードは、ディレクショナル ライトのサンプルです。

このノードへの入力には、方向とカラーのほか、ライトがアンビエント、拡散、スペキュラコンポーネントに関与しているかどうかを示す boolean フラグがあります。また、シーン内の配置について、3D マニピュレータから接続を受け取る位置入力もあります。

LightNode ノードの出力アトリビュートは、「lightData」という複合アトリビュートです。このシェーダを使用するには、LightNode を作成し、その入力を変更して別の輝度の結果を表示します。

meshReorderCmd

ユーザ定義の開始フェースに基づいてポリゴン メッシュを再インデックスし、新しい順序のメッシュを新規作成するコマンド。

このコマンドを使用するには、ポリゴン プレーンを作成して、次を実行します。

    meshReorder pPlane1.vtx[5] pPlane1.vtx[23] pPlane1.vtx[9];

mixtureShader

ディペンデンシー グラフ ノード MixtureNode を作成する

このノードは、複数の入力を評価するサンプルです。結果のカラーが生成されます。

このノードに対する入力は、2 つのカラーと 2 つのマスクであり、各カラーには、対応するマスクが関連付けられています。また、結果のカラーは、マスクが関連付けられた両カラーの混合になります。

MixtureNode ノードの出力アトリビュートは「outColor」です。これは、マスキングの値を基にして得られたカラーの混合を表す、3 つの float 型の値です。このシェーダを使用するには、MixtureNode を作成して、その出力をカラー(Color)などのサーフェス/シェーダ ノードの入力に接続します。

noiseShader

ディペンデンシー グラフ ノード SolidNoise を作成する

このノードは、3D テクスチャのサンプルです。

SolidNoise ノードの出力アトリビュートは、「outColor」です。

rockingTransform

このプラグインは、サンプルのカスタム トランスフォームを実装し、X 軸の周囲でロッキング モーションを実行するために使用できます。エフェクトを例示するために、任意の回転のジオメトリをこの変換の子にすることができます。このプラグインには、2 つの要素が含まれます。

1. カスタム変換ノード -- rockingTransformNode

2. カスタム変換行列 -- rockingTransformMatrix

ロッキング モーションを実行する場合、これらのクラスを同時に使用します。ロック アトリビュートは通常のトランスフォーム アトリビュートの外に格納されることに注意してください。

MEL の使用例:

    // Create a rocking transform and make a rotated plane
    // its child.
    loadPlugin rockingTransform;
    file -f -new;
    polyPlane -w 1 -h 1 -sx 10 -sy 10 -ax 0 1 0 -tx 1 -ch 1;
    select -r pPlane1 ;
    rotate -r -ws -15 -15 -15 ;
    createNode rockingTransform;
    parent pPlane1 rockingTransform1;
    setAttr rockingTransform1.rockx 55;

rockingTransformCheck

このプラグインは、サンプルのカスタム トランスフォームを実装し、X 軸の周囲でロッキング モーションを実行するために使用できます。checkAndSetRotation() メソッドは、ユーザ入力に対してロックと回転の制限を適用する場合に使用します。

エフェクトを例示するために、任意の回転のジオメトリをこの変換の子にすることができます。このプラグインには、2 つの要素が含まれます。

1. カスタム変換ノード -- rockingTransformCheckNode

2. カスタム変換行列 -- rockingTransformCheckMatrix

ロッキング モーションを実行する場合、これらのクラスを同時に使用します。ロック アトリビュートは通常のトランスフォーム アトリビュートの外に格納されることに注意してください。

MEL の使用例:

    // Create a rocking transform and make a rotated plane
    // its child.
    loadPlugin rockingTransformCheck;
    file -f -new;
    polyPlane -w 1 -h 1 -sx 10 -sy 10 -ax 0 1 0 -tx 1 -ch 1;
    select -r pPlane1 ;
    rotate -r -ws -15 -15 -15 ;
    createNode rockingTransformCheck;
    parent pPlane1 rockingTransformCheck1;
    setAttr rockingTransformCheck1.rockx 10;

注: このサンプルで使用されるクラスは、rockingTransform サンプルで定義されたクラスから派生します。

shadowMatteShader

ディペンデンシー グラフ ノード ShadowMatte を作成する

このノードは、透過出力を通じたライト シャドウ内のエリアにのみマット/マスクを作成します。

オプションで、boolean 入力を使用し、マスクではなくカラー チャネルにあるシャドウ エリアを確認することができます。

ShadowMatte ノードの出力アトリビュートは、「outColor」と「outTransparency」です。このシェーダを使用するには、シェーディング グループ(Shading Group)で ShadowMatte ノードを作成するか、このノードの出力をシェーディング グループ(Shading Group)の「SurfaceShader」アトリビュートに接続します。

slopeShader

ディペンデンシー グラフ ノード slopeShader を作成する

slopeShape は、slopeShader、slopeShader Behavior、slopeShaderNode の 3 つのコンポーネントから構成されています。

slopeShader は、ユーザ定義のしきい値に対する傾斜または角度に基づいてメッシュのフェースに色をつけます。

solidCheckerShader

ディペンデンシー グラフ ノード SolidChecker を作成する

このノードは、3D チェック テクスチャのサンプルです。

SolidChecker ノードの出力アトリビュートは「outColor」と「outAlpha」です。このシェーダを使用するには、SolidChecker ノードを作成し、その出力をカラー(Color)などのサーフェス/シェーダ ノードの入力に接続します。

phongShader

ディペンデンシー グラフ ノード PhongNode を作成する

このノードは、Phong シェーダのサンプルであり、Maya にサーフェス シェーダ マテリアルとしてディペンデンシー ノードを構築する方法を示します。

Maya UI では、このノードへの入力はこのノードのアトリビュート エディタで見ることができます。

このノードの出力アトリビュートは「outColor」です。これは、ノードから作成されたカラーを表す 3 つの float 型の値です。このシェーダを使用するには、シェーディング グループ(Shading Group)を指定して phongNode を作成するか、このノードの出力をシェーディング グループ(Shading Group)の「SurfaceShader」アトリビュートに接続します。

vertexColorShader (cvColorShader)

このプラグインは、頂点カラー(CPV)をソフトウェア レンダーできるようにするノードを作成します。

volumeShader

ディペンデンシー グラフ ノード VolumeNode を作成する

このノードは、ボリューム シェーダ マテリアルのサンプルです。ボリューム シェーダ マテリアルを使用して、「light shapes」という光源にコネクトされた特殊なシェイプにカラーを適用します。そのようなシェイプのセットを作成するには、ライト フォグ(Light Fog)エフェクトを使用します。ライト フォグ エフェクトは、任意のポイント ライトとスポット ライトにそのアトリビュート エディタを通じて割り当てることができます。

VolumeNode ノードの出力アトリビュートは「outColor」です。このシェーダを使用するには、VolumeNode ノードを作成し、その出力をシェーディング グループ(Shading Group)の「volumeShader」 入力に接続します。シェーディング グループは、ライト シェイプに接続する必要があります。