fxgroup

はじめに

DirectX11では、fxgroupという文法が利用可能になります。MMFのエフェクト仕様もfxgroupを利用した追加要素が存在します
以下は一般的なfxgroupの文法です。
fxgroup [fxgroup名]<アノテーション型1 アノテーション名1=値1;....>
{
   technique11 TestTeqnique1
   {
      pass p1{...}
      pass p2{...}
   }
   technique11 TestTechnique2
   {
      pass p1{...}
   }
}
上記の例のように、fxgroupの中には、1つ以上のテクニックが含まれ、0つ以上のパスがテクニックそれぞれに含まれます。
MMFでは、このfxgroupを利用して、テクニックのアノテーションを簡略化/整理して指定することが可能です。

MMFにおけるfxgroup

エフェクトを作成しているとき、以下のようなコードをよく見かけます。
technique11  t1<string MMDPass="object";bool UseTexture=true;bool UseToon=false;UseSphereMap=true;>
{

}
technique11  t2<string MMDPass="object";bool UseTexture=true;bool UseToon=false;UseSphereMap=false;>
{

}
上記の2つのテクニックは、bool UseSphereMapの値のみ異なりその他のアノテーションは共通しています。
このように2回にわたり同じような内容を指定することは冗長であり、共通部分1つの変更が複数個所の訂正を必要とすることが予想されます。MMFでは上記の例と同様の記述をfxgroupを利用して以下のように記述することが可能です。
fxgroup [任意のfxgroup名]<string MMDPass="object";bool UseTexture=true;bool UseToon=false;>
{
   technique11 t1<bool UseSphereMap=true;>
   {
   }
   technique11 t2<bool UseSphereMap=false;>
   {
   }
}
fxgroupに指定したテクニックに関するアノテーションは、そのfxgroupに含まれるテクニックに対して適用されます。また、テクニックに指定されているアノテーションと、fxgroupに指定されているアノテーションがかぶっていた場合はテクニックのほうのアノテーションを優先して解釈します。例えばこのことを利用して、上記の例は以下のようにも記述可能です。
fxgroup [任意のfxgroup名]<string MMDPass="object";bool UseTexture=true;bool UseToon=false;bool UseSphereMap=true;>
{
   technique11 t1
   {
   }
   technique11 t2<bool UseSphereMap=false;>
   {
   }
}
fxgroupに指定できるテクニックのアノテーションは以下の通りです。
アノテーション型 アノテーション名 注釈
string MMDPass
string Subset
bool UseToon
bool UseTexture
bool UseSphereMap
bool UseSelfShadow MMM仕様

Last edited Oct 13, 2013 at 3:50 PM by atrenas, version 5

Comments

No comments yet.