MMDDエフェクト仕様

編集中、しっかり書きます。はい

この文章はプロジェクトの開発用に書かれた仕様であり、実装されていない項目を含むことに注意。

MMEと違う部分

MMDDのエフェクト仕様はMMMのエフェクト仕様と近いものがあります。
これは、スキニング処理をGPUで行っているためです。
MMMのスキニングについて(MMEからの変換)
そのため、エフェクト仕様は全体的にMMMに似たものになります。
ただしMMDDはどちらのシェーダーでも問題なく表示できることが理想であるため、将来的にはCPUスキニングとGPUスキニングを入れ替えるようなことも検討しています。

以下の記述に関する注意

以下の記述の先頭に(D)、(M)と記述されているがその意味は以下のとおりである。
  • (D)・・・MMDD独自のエフェクト仕様の拡張、MMMでもMMEでも使用不可
  • (M)・・・MMMのエフェクト仕様の拡張によるもの、MMDDでもMMMと同様に使用可能。

また、エフェクト仕様は仕様書による推測から実装されたものであり、細かい挙動は異なる場合が多い。

(D)#define系

MMDDでは以下のプリプロセッサによる定数が定義される。

MMDD

MMDDを用いてレンダリングされるならば、定数MMDDが定義される。

(アプリケーションによる定数定義)

MMDD.CG.MMEEffect.MMEEffectManager.ApplicationDefinitionに指定した文字列が定数として定義される。
MMDDを利用するアプリケーションは自身のアプリケーション名をシェーダー側に定数として利用する際はこれを利用する。

MMM_LightCount

MMMとのエフェクトの互換性のために定義されています。現行バージョンの場合この値は常に3となります。
MMM側の仕様が変更され3ではない値などになった場合、気が付きましたらご一報ください。

DX_LEVEL_10_1もしくは、DX_LEVEL_11_0

MMDDの初期化に使われたデバイスのレベルを指します。
DX_LEVEL_10_1が定義されているときは、DirectX10.1によるデバイスの初期化が行われたことを示します。
シェーダーモデル4.0まで使用することが可能です。
DX_LEVEL_11_0が定義されているときは、DirectX11によるデバイスの初期化が行われたことを示します。
シェーダーモデル5.0まで使用することが可能です。
また、DX_LEVEL_11_0とDX_LEVEL_10_1が同時に定義されることはありません。
MMDDはどちらかのバージョンを利用してデバイスを初期化するため、テセレーションなどの処理をDX_LEVEL_11_0マクロの定義を判別し、#ifdefなどで囲めば、バージョンの互換性を保ちエフェクトを作成することが可能です。

テクニック

テクニックに利用可能なアノテーションは以下のとおりである。

アノテーション

string Subset
テクニックを適用する材質番号を示す。
アノテーション省略時には全ての材質が適用対象とする。
カンマ区切り・・・(1.3.5)
ハイフンによる範囲指定・・・(2-8)
(D)ハイフンによる範囲指定2・・・(3-)・・・この場合、3から最後のサブセットまでが適用対象となる。
による指定も可能。

string MMDPass
テクニックを利用する描画対象を指定します。
指定可能な描画対象は下記の通り。
  • object
  • object_ss
  • shadow
  • edge

bool UseTexture
そのテクニックがテクスチャを使用している材質のみ対象とする場合にtrue,使用していない材質のみを対象とする場合にfalseを指定します。アノテーション省略時にはテクスチャの有無に関係なくテクニックが適用されます。

bool UseSphereMap
そのテクニックがスフィアマップを使用している材質のみを対象とする場合にtrue、使用していない材質のみを対象とする場合はfalseを指定します。アノテーション省略時にはスフィアマップの有無に関係なくテクニックが適用されます。

bool UseToon
そのテクニックがトゥーンテクスチャが適用されているモデルのみを対象とする場合はtrue、適用されていないモデルのみを対象とする場合はfalse、アノテーション省略時にはトゥーンテクスチャの有無に関係なくテクニックが適用されます。
MMDモデルはトゥーンテクスチャが常に適用されているとして認識されます。

(M)bool UseSelfShadow
そのテクニックがセルフシャドウを使用している材質のみを対象とする場合にtrue、使用していない材質のみを対象とする場合にfalseを設定します。アノテーション省略時にはセルフシャドウの使用に関係なくテクニックが適用されます。

ライトとマテリアル

この項目については、MMMとエフェクトの仕様は同じ。
  • DIFFUSE float3 or float4ディフューズ色 (拡散光)
  • AMBIENT float3 or float4 アンビエント色 (環境光)
  • EMISSIVE float3 or float4 エミッション色 (放射光)
  • SPECULAR float3 or float4 スペキュラ色 (鏡面光)
  • SPECULARPOWER float スペキュラ強度
  • TOONCOLOR float3 or float4 トゥーン色
  • EDGECOLOR float3 or float4 輪郭色

型にfloat3を指定するとアルファ値が省略されます。

Last edited Sep 12, 2013 at 6:29 AM by LimeStreem, version 9

Comments

No comments yet.