3 スクリプト

テクニックとパスには、スクリプトと呼ばれる特殊なアノテーションを指定することができる。

technique テクニック名 < string Script = "コマンド; コマンド; ..." ; > { ... }
pass パス名 < string Script = "コマンド; コマンド; ..." ; > { ... }

実行時には、これらのコマンドが、記述順に逐次実行される。

このスクリプトを使用することで、レンダリングターゲットの変更やクリア、パスのループ処理などを行うことができる。

ポストエフェクトなどの特殊な処理をしないのであれば、通常、スクリプトの指定は不要である。テクニックのスクリプトを省略した場合、単にテクニックのパスが順に実行される。また、パスのスクリプトを省略した場合、"Draw=Geometry"が実行される。

3.1 コマンド

○使用例

technique TShader <
    /* 2つの文字列表記("~" "~")の間に空白文字しかなければ、
       それはひと続きの文字列とみなされるため、以下のように分割して記述できる */
    string Script =
        "RenderColorTarget0=RenderTarget;"
        "RenderDepthStencilTarget=DepthBuffer;"
        "ClearSetColor=ClearColor;"
        "ClearSetDepth=ClearDepth;"
        "Clear=Color;"
        "Clear=Depth;"
        "ScriptExternal=color;"
        "Pass=P0;";
> {
    pass P0 < string Script= "RenderColorTarget0=; RenderDepthStencilTarget=; Draw=Buffer;" ; > {
        ...
    }
}