3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEffect」
ポストエフェクトの作成方法
MikuMikuEffectで学ぶHLSL入門(5)
ダウンロード sample.zip (10.5 KB)
本連載では、3DCG作成ツール「MikuMikuDance」(以下MMD)にエフェクトを追加する「MikuMikuEffect」(以下MME)の使用方法と、エフェクトを構成するHLSLコードについて、6回に渡り解説していきます。5回目となる今回は、ポストエフェクトの原理と作成方法について解説します。
ポストエフェクトとは
第3回・第4回で紹介したエフェクトファイルは、オブジェクトに適用するエフェクトでした。これに対して、ポストエフェクトは、スクリーンに対して適用するエフェクトです。
ポストエフェクトでは、各オブジェクトの描画が完了した後のスクリーン全体の画像を入力とし、それに対して何らかの処理を施した後、スクリーンに再出力します。典型的な処理として、画像処理で用いられる「フィルタ」が挙げられます。
今回は、ポストエフェクトの基本を解説した後、「ぼかしフィルタ」と「ディフュージョンフィルタ」を作成してみます。
ポストエフェクトの基本
サンプルエフェクト
ポストエフェクトのサンプルとして、BasicPostEffect.fxを収録しました。これは、スクリーンに対して特に何も処理を行わず、入力画像をそのまま出力するだけのポストエフェクトです。しかし、ポストエフェクトとして最低限の実装を含んでいます。
使用するには、同梱のBasicPostEffect.xをアクセサリとしてMMD上で読み込んでください。これを行うだけで、BasicPostEffect.fxが自動的に読み込まれます。
なお、ここで読み込ませる際に指定したXファイル(BasicPostEffect.x)は、単に同名のfxファイルを読み込ませるためだけに使用しているものであり、正常なXファイルでありさえすれば中身は何でも構いません(このサンプルでは、MMD同梱のアクセサリnegi.xをリネームして使用しています)。
改変例
試しに、ピクセルシェーダに簡単な処理を記述してみましょう。
float4 PS_DrawBuffer(float2 Tex: TEXCOORD0) : COLOR
{
float4 Color = tex2D( ScnSamp, Tex );
// 何か処理
float Gray = (Color.r + Color.g + Color.b ) / 3; //この行を追加
Color.rgb = float3(Gray, Gray, Gray); //同上
return Color;
}
このように記述すると、スクリーン全体がグレースケールになります。
この記事は参考になりましたか?
- MikuMikuEffectで学ぶHLSL入門連載記事一覧
-
- 3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEff...
- 3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEff...
- 3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEff...
- この記事の著者
-
舞力介入P(ブリョクカイニュウピー)
ニコニコ動画でMMD関連のツール開発者として活動中。代表作は「MikuMikuEffect」。我流のAPI Hookを常套手段とする、邪道プログラマです。ニコニコ動画マイリスト
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
