今回はフレネルを作成したいと思います。
□ShaderFXマテリアルの作成
- hyperShadeからからShaderFX shaderを選択して、マテリアルを作成します。
- マテリアルアトリビュートからOpenShaderFXを選択してエディタウィンドウを開きます。
- 右クリックでメニューを開き、Hw Shader Node>Lighting>Fresnelを選択します。
Fresnel multiplerをEmissiveへ接続したいのですが、型が違うためコネクションできません。
黄緑はfloat,水色はfloat3のため変換が必要になります。
フレネルはカメラと法線からフォールオフ値を計算します。
このフォールオフ値をマスクと利用するためLinearInterpolateMixのmixに
マスクとしてコネクションします。
Hw Shader Node>math>LinearInterpolateMixで作成します。
Fresnel multiplerをmixにコネクションします。
LinearInterpolateMixのアウトプットはfloat4となっているので、さらに変換が必要になります。
Hw Shader Node>values>vectorComponentを選択してvectorComponentを作成します。
このノードはfloat4から任意の成分を抜き出すことができます。
vectorComponentのインプットにLinearInterpolateMixのResultを接続、
vectorComponentのXYZがRGBのfloat3になっているので、これでやっと
Emissiveと接続できるようになりました。
しかし、輪郭だけが白くなっているためフレネルのプロパティの編集が必要です。
グループを開くと、FresnelのMinの値に0.8がはいっていたのが原因のようでした。
グループはTool>ToggleAdvanceModeでアドバンスモードに切り替えるとひらけるようになります。
Fresnelそれぞれの値も調整したいので
Hw Shader Node>values>floatでそれぞれのノードを作成してコネクションします。
これでフレネルっぽくなりました。
またNormalのアトリビュートにNormalMapノードを接続して、
テクスチャーを割り当てるとノーマルマップの法線情報もフレネルに反映されます。
ノーマルに接続されているMultiplyはUVをリピートするために作成しました。
今回ShaderFXを改めて使ってみましたが、実機環境と同じようなシェーダがリアルタイムに使えるのはやっぱりいいなぁと感じました。
0 件のコメント:
コメントを投稿