HLSLを使ってみた

Easy3DでHLSLとは

E3D_HLSLフォルダ内にあるposteffect.fxを修正することでユーザー独自のエフェクトが作成できます。
Easy3Dでは今のところポストエフェクトのみを修正できます。
ポストエフェクトだけなので、ファーとかパーティクルはできません。
それでも上手く使いこなせれば面白い映像表現が出来るはずです。

ポストエフェクトとは

よくわかりません。いい説明資料見つけられませんでした。
多分この辺↓のサンプルで見られるようなものだと思います。
・e3dhsp3_BlurTexture.hsp
・e3dhsp3_CbCr.hsp
・e3dhsp3_CustomShader.hsp
・e3dhsp3_Glow.hsp
・e3dhsp3_HDRLighting.hsp
・e3dhsp3_Mono.hsp

モデル単体ではなく、画面全体にかけるエフェクト。のことのようです。postだから一番最後にかけるエフェクトってことなんでしょうか。

HLSLを使ってみた

と、言うことで色々調べていじってみたら分からないなりに分かってきました。
と言うことで以下無保証。何が起こっても私は責任持ちません。
ということをふまえて読み進めてください。

  1. とりあえずサンプル作ったのでこちらをダウンロードしてみてください。
    [posteffect.zip]
  2. HSPのインストールフォルダ内のE3D_HLSLフォルダ内、posteffect.fxのファイル名を変更しておいて下さい。
    あとで元に戻すためのバックアップになります。
  3. posteffect.zipを解凍して出来たposteffect.fxを先ほどのE3D_HLSLフォルダにコピーします。
  4. Easy3Dのサンプルスクリプトe3dhsp3_CustomShader.hspを使用するので開いてください。
  5. 124行目付近の
    E3DCallUserShader 0, 0, scid_final
    を修正して使用します。
    とりあえずそのまま実行すると、左側に標準表示、右側にエフェクトがかかった画像が表示されます。
    このとき表示されているエフェクトは標準で用意されているものです。
  6. 第2引数のpassnoを修正します。
    パス1~5番に新規にエフェクトを追加割り当てしていますので、1~5の数値に適当に変えてみてください。
    1:標準
    2:グレイスケール
    3:ネガポジ
    4:シャープマスク
    5:エンボス
  7. 遊び終わったらposteffect.fxを消してバックアップしておいたファイルの名前を元に戻して復活させておいてください。

頂点シェーダの変更方法がまだよく理解できないので、とりあえずピクセルシェーダだけ色々変更してみました。
頂点シェーダ含めたエフェクトはまたそのうち…。

なお、シャープマスク、エンボスはMME用のエフェクトを適当に移植したものです。
MMEは参考資料として今後も利用できそうです。

変更した内容は中を見比べてもらうと分かると思います。
文法はC言語風なのでなんとなく分かると思います。



参考資料

http://marupeke296.com/ProShader_main.html