1 テクニックとパス

1.1 構成

エフェクトファイルは、以下のような、テクニックとパスによる階層構造になっている。


    /**********************************/
    パラメータ宣言1
    パラメータ宣言2
    ...
    
    technique テクニック1 {
        pass パス1 {
            VertexShader = …
            PixelShader  = …
        }
        pass パス2 {
            VertexShader = …
            PixelShader  = …
        }
        …
    }
    
    technique テクニック2 {
        pass パス1 {
            VertexShader = …
            PixelShader  = …
        }
        pass パス2 {
            VertexShader = …
            PixelShader  = …
        }
        …
    }
    /**********************************/
        

テクニックは1つ以上のパスから構成される。1つのパスは1回のレンダリング処理に対応しており、テクニックが複数のパスから構成されている場合は、そのテクニックがマルチパスレンダリングを使用することを意味している。

テクニックとパスには、アノテーションと呼ばれる設定値を記述することができる。アノテーションは、以下のように、テクニック名・パス名の後ろに、"<"と">"で囲むようにして記述する。なお、アノテーション名の大文字小文字の違いは無視される。


    /******************************************************/
    technique Tech1 < string Subset = "1-6,8"; > {
        pass Pass1 < string Script = "Draw=Buffer;"; > {
            ...
        }
        pass Pass2 {
            ...
        }
    }
    /******************************************************/
        

また、テクニックとパスには、スクリプトと呼ばれる特殊なアノテーションを指定することができる。これについては、3.スクリプトで説明する。

1.2 テクニックのアノテーション

テクニックのアノテーションには、そのテクニックをどの場面の描画に使用するかの条件を記述する。

この条件には、以下のものを指定できる。

条件の照合は、エフェクトファイルに書かれている順に行われるため、複数のテクニックで使用条件が重なっている場合は、エフェクトファイル上で先に記述されているものが優先される。条件に合致するテクニックがエフェクトファイル上に存在しない場合、MMD標準のシェーダが使用される。

○アノテーション

○使用例


    //セルフシャドウがONの場合、サブセットのNo.0~6とNo.8には、Tech1が適用され、
    //サブセットのNo.7とNo.9~には、Tech2が適用される。
    //セルフシャドウがOFFの場合、Tech3が適用される。
    
    technique Tech1 <
        string MMDPass = "object_ss"; 
        string Subset = "0-6,8";
    > {
        ...
    }
    
    technique Tech2 <
        string MMDPass = "object_ss"; 
        string Subset = "7,9-";
    > {
        ...
    }
    
    technique Tech3 <
        string MMDPass = "object"; 
    > {
        ...
    }
        

○補足