Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

「MikuMikuEffect」のエフェクトファイルの内部構成とシェーダコードの編集方法

MikuMikuEffectで学ぶHLSL入門(3)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/09/02 14:00

ダウンロード simple.zip (1.6 KB)

 本連載では、3DCG作成ツール「MikuMikuDance」(以下MMD)にエフェクトを追加する「MikuMikuEffect」(以下MME)の使用方法と、エフェクトを構成するHLSLコードについて、6回に渡り解説していきます。第3回目となる今回は、エフェクトファイルの内部構成と、シェーダコードの簡単な改変について解説します。 

目次

エフェクトファイルの構成

 エフェクトファイルの典型的な構成は、以下のようになっています。

図1 エフェクトファイルの構成
図1 エフェクトファイルの構成

パラメータ定義

 シェーダコードから参照する各種パラメータ(グローバル変数)を定義します。これらには、第2回で紹介したような、ユーザが値を直接指定するパラメータの他、MMEによって自動的に値が設定されるパラメータが存在します。

シェーダコード

 3Dオブジェクトの描画の仕方を記述した、GPU用のプログラムコードをここで記述します。

 シェーダは、「頂点シェーダ」と「ピクセルシェーダ」の2種類1組からなります。これらの役割の違いを、強引に現実の絵画に例えるならば、

  • 頂点シェーダ: 物体をキャンパス上に配置する位置・構図を決める
  • ピクセルシェーダ: 物体を塗る色を決める

に対応します。

頂点シェーダ

 頂点シェーダでは、オブジェクトの各頂点のスクリーン上の座標を計算します。また、色計算に必要な頂点情報をピクセルシェーダに渡すことも行います。

ピクセルシェーダ

 ピクセルシェーダでは、スクリーン上に展開されたオブジェクトの、各ピクセルの色を計算します。 

テクニック定義

 描画に使用する、頂点シェーダ・ピクセルシェーダの組み合わせを指定します(補足1)。

補足1 テクニックについて

 頂点シェーダとピクセルシェーダの組み合わせを定義したものをパスと呼びます。1つのパスは、1回のレンダリング処理に対応します。1つ以上のパスをグループ化したものをテクニックと呼びます。

 描画対象の種類(オブジェクト本体・影・輪郭)や材質等によって、描画に使用するシェーダを切り替えるには、複数のテクニックを定義します。

補足2 データの流れ

 シェーダ周りのデータの流れを簡単に表すと、以下のようになります。

 

図2 データフロー図
図2 データフロー図

 頂点シェーダは頂点単位で実行され、入力はオブジェクトの頂点情報(ボーン・モーフによる変形処理後のもの)、出力は頂点のスクリーン上の座標+ピクセルシェーダに渡す頂点情報です。

 ピクセルシェーダはピクセル単位で実行され、入力は頂点シェーダから渡された頂点情報、出力はそのピクセルの色情報です。

 頂点シェーダとピクセルシェーダの間には、ラスタライズという処理が入り、ここで、スクリーン上の頂点座標の並びから、ポリゴンが実際にスクリーン上に占めるピクセルの並びへと変換されます。このとき、頂点シェーダが出力した頂点情報は、各ピクセルへと展開され、ピクセルシェーダへと渡されます。

 なお、ここで解説した構成は、MMEがサポートするSM3.0のもので、SM4.0以降では、より多くのシェーダのバリエーションが存在します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2011/08/23 03:22 執筆完了

著者プロフィール

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

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

バックナンバー

連載:MikuMikuEffectで学ぶHLSL入門
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5