SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

MikuMikuEffectで学ぶHLSL入門

3DCGツール「MikuMikuDance」のエフェクトを拡張する「MikuMikuEffect」
はじめてのエフェクト制作

MikuMikuEffectで学ぶHLSL入門(4)

スクリーン座標の値の確認

 tex2D関数を使い、すでに読み込んであるテスト用テクスチャを表示しています。

//ピクセルシェーダ本体
float4 TestShader_PS(OutVS IN) : COLOR
{
    //出力色
    float4 Color;
    
    //歪ませる量を計算
    //法線が視点方向からずれている程歪む
    float add = (1-dot(normalize(IN.Eye),normalize(IN.Normal)));
    
    /* 削除
    
    //歪み量を色に代入する
    Color = float4(add,0,0,1);
    
    */
    
    //---追加---//
    
    //テスト用テクスチャを使ってスクリーン座標をチェックする
    Color = tex2D(BackSampler,IN.ScreenTex);
    
    //----------//
    
    //色を出力
    return Color;
}
使用テクスチャ
使用テクスチャ
適用結果
適用結果

 凹凸に関わらず、ピクセルのUV座標に従って色が出力されています。現在はテスト用テクスチャなので虹色のグラデーションが表示されています。後はこの画像に背景画像を入れてやることで背景が表示されるはずです。

背景画像(歪ませる元画像)の取得

 それでは今回のシェーダの最も重要な部分、背景画像の取得を行います。エフェクトファイル最上部に記述されている

//背景画像テクスチャ
texture BackTex <
    string ResourceName = "test_tex.png";
>;

となっている部分を下のように書き変えます。

texture BackTex: OFFSCREENRENDERTARGET <
    string Description = "BackScreenDraw for Simple.fx";
    float2 ViewPortRatio = {1.0,1.0};
    float4 ClearColor = { 1, 1, 1, 1 };
    float ClearDepth = 1.0;
    bool AntiAlias = true;
    string DefaultEffect =
        "self = hide;"
    ;
>;

 この設定では、メモリ上に画面と同じサイズのテクスチャを用意し、エフェクトを適用しているオブジェを除いたすべてのオブジェをMMD標準描画を行います。細かい設定についてはMME付属のREFERENCE.txtを参照してみてください。

次のページ
最後に

修正履歴

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

MikuMikuEffectで学ぶHLSL入門連載記事一覧

もっと読む

この記事の著者

ビームマンP(ビームマンピー)

ニコニコ動画等でMikuMikuEffect用シェーダプログラム開発者として活動。 開発を始めた理由はカッコいいビームやミサイルが作りたかった為。 エフェクト配布用サイト http://www43.atwiki.jp/beamman/

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6192 2011/10/19 14:00

イベント

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

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

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

メールバックナンバー