2014年4月27日日曜日

[Maya]ShaderFXでCustom Codeをつかってみる

カスタムコードを使用するにはshaderFXエディターを
アドバンスモードに変更する必要があります。

shaderFXエディターで右クリック、tools>toggle Advance Mode
選択してアドバンスモードに変更します。

アドバンスモードに切り替えると使用できるノードとグループの展開が
可能になります。グループに四角いアイコンが追加されるのでクリックすると
グループが展開できるようになります。

HwShaderNodes>various>Custom codeでノードを作成します。

customCodeNodeのアトリビュートのeditボタンでコードを編集する
ウィンドウが表示されます。

こちらからサンプルファイルがダウンロードできます。

◇ShaderFX

サンプルの様にテクスチャーをカラーとして扱うときはいいのですが、
テクスチャーをUniform変数として渡したい時があります。
下記はそのやり方です。











https://gist.github.com/hiko9lock/11342282

Uniform変数を使用にするにはCustomCodeノードの
Texture,Sampler Stateが必要となります。

HwShaderNodes>Texture>Texture Component
HwShaderNodes>Texture>Sampler Stateでノードを作成して
Custom CodeノードのTexture,SamplerStateに接続します。

また、カスタムコード関数の引数にfloat2 uvを指定しているので
HwShaderNodes>Inputs common>UV Setでノードを作成して
Custom Codeノードのuvに接続します。

14行目の
output+= tex2D( SFX_SAMPLER0, UV+float2(i*dist, j*dist)).xyz;
ですが、これはCGFX用の書き方となり、SFX_SAMPLER0は
指定されたuniform変数となります。
すべての環境をサポートするにはifステートメントを使用する必要
があります。詳しくはヘルプ参照で。

◇Maya2015オンラインヘルプ
shaderFXカスタムコードノード

今回作成したカスタムシェーダーをplaneに適用させたものになります。












customCodeでフィルター処理もできるので、シェーダー作成も
面白くなりそうですね。



0 件のコメント:

コメントを投稿