SHOEISHA iD

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

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

MikuMikuEffectで学ぶHLSL入門

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

MikuMikuEffectで学ぶHLSL入門(3)

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

ダウンロード 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以降では、より多くのシェーダのバリエーションが存在します。

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

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

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

メールバックナンバー

次のページ
シェーダコードの改変

修正履歴

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング