Share via


ピクセルシェーダー② ツール PsPad

ピクセルシェーダー編集ツール PsPad を作りました、ソースコードと実行ファイルを PsPad.CodePlex.com に置きます。ビルドには VS2010 と DirectX SDK が、実行には .NET 4 と DirectX Runtimeが必要です。ShaderEffectLibrary(ShaderBuildTask)やNyaRuRuさんのDynamicShaderShaderPadのようなツールもあるのですが、VS2010用に.NET 4 & PS_3_0に対応できるものが欲しかったので作成しました。サンプルのシェーダーソース(Gray.fxとRipple.fx)も同梱してあります。

PsPadDoc

基本的な使い方は、以下の通りです。

  1. 下の編集ペインにピクセルシェーダーを書き、F5キー(あるいは[Compile Shader]ボタン)を押すとそのエフェクトが左上の画像に適用される。 コンパイルに失敗すると最下のステータスバーにエラーメッセージを表示。
  2. [Load Media]ボタンで画像(jpgファイル)を選ぶと、右上の画像が変更。
  3. [Load Source]と[Save Source]ボタンでシェーダーのソースファイル(.fx)を読み込み・保存。
  4. [Compile Shader]ボタンはF5キーと同じで、編集したソースをコンパイルし、画像に適用。
  5. [Save Shader]ボタンはコンパイル済みシェーダー(.ps)を保存。
  6. [Shader Model]のラジオボタンはコンパイル時のシェーダーモデルを2.0と3.0を切り替え。Silverlightや.NET 3.5(SP1)に使うときはPS2_0に、WPF 4 のときは PS3_0にする。
  7. 右上操作ペイン:C0 ~ C3 レジスターにスライダー、C4レジスターにRGBAスライダー、C5レジスターに(画像上でマウス左ボタン押下時の)マウスポインターの位置を割り当てているので、シェーダー内で変数として使える。

V1.0の制限

  • メディアはjpg画像のみ
  • サンプラーで使える画像は表示画像(s0レジスター)のみ
  • DirectX Runtime が無いとき、何もメッセージを出さず、単に起動しない。
  • インテリセンスのような編集援助機能はない

Comments

  • Anonymous
    October 01, 2010
    ご無沙汰しております. リンク先の自分の記事を読み直していてそう言えばと今更ながらに気付いた問題があるのですが,PsPad 1.0 も該当しているようなので,以下参考までに. DynamicShader も PsPad も LoadLibrary で d3dx9_XX.dll を動的にロードしていますが,フルパスで DLL を指定していないため,最近話題になったセキュリティアドバイザリ (2269637) に該当してしまいます. www.microsoft.com/.../2269637.mspx フルパス指定を強制するという意味では,LoadLibraryExW + LOAD_WITH_ALTERED_SEARCH_PATH あたりにしておくのとかなり手堅くなるはずです.リンク先の DynamicShader の方も後で修正しておきます. ではでは.

  • Anonymous
    October 03, 2010
    NyaRuRuさん、ありがとうございます。ご指摘通り修正を加え、CodePlex のファイルを更新しました。今後ともよろしくお願いします。