SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MikuMikuEffectで学ぶHLSL入門

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が自動的に読み込まれます。

図1 アクセサリ読み込み
図1 アクセサリ読み込み

 なお、ここで読み込ませる際に指定した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;
}

 このように記述すると、スクリーン全体がグレースケールになります。

図2 グレースケール化ポストエフェクト
図2 グレースケール化ポストエフェクト

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ポストエフェクトの原理

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
MikuMikuEffectで学ぶHLSL入門連載記事一覧

もっと読む

この記事の著者

舞力介入P(ブリョクカイニュウピー)

ニコニコ動画でMMD関連のツール開発者として活動中。代表作は「MikuMikuEffect」。我流のAPI Hookを常套手段とする、邪道プログラマです。ニコニコ動画マイリスト

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6298 2011/12/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング