カスタム シェーダ定義に関する情報を定義できます。 たとえば、ここでシェーダ定義に ShaderDef.Category を割り当てることができ、割り当てると Preset Manager に表示されるようになります。
このコールバックは、シェーダ プラグインがロードされた後に発生します(つまり、XSILoadPlugin が返された後)。
public class <plugin-item_name>
{
public bool DefineInfo( Context in_context )
{
...
}
}
|
CStatus <plugin-item_name>_DefineInfo( CRef& in_context )
{
...
}
|
function <plugin-item_name>_DefineInfo( in_context )
{
...
}
|
def <plugin-item_name>_DefineInfo( in_context ):
...
|
Function <plugin-item_name>_DefineInfo( in_context )
...
End Function
|
sub <plugin-item_name>_DefineInfo
{
my $in_context = shift;
}
|
<plugin-item-name> は、プラグイン名、PluginRegistrar.RegisterShader の呼び出しで指定されている名前、メジャーおよびマイナー バージョン番号で構成される特別な文字列です。この名前に含まれるスペースはアンダースコアに置き換えられます。 たとえば、名前が MyPlugin、シェーダ クラス名が My Shader、バージョン番号が 1.0 のシェーダ定義をプラグインに登録する場合、コールバック関数の名前の先頭は MyPlugin_My_Shader_1_0 になります。
| パラメータ | Language | タイプ | 詳細 |
|---|---|---|---|
| in_context | スクリプティングおよび C# | コンテキスト | Context.GetAttribute メソッドを使用して、Category、DisplayName などの基本情報を取得します。 |
| C++ | CRef& | Context.GetAttribute メソッドを使用して、Category、DisplayName などの基本情報を取得します。 |
| Attribute | 取得/設定 | 詳細 |
|---|---|---|
| ClassName | 文字列 または CString を戻す | シェーダのクラス名。 これは、パーサ名、バージョン番号とともに ShaderDef.ProgID を次の形式でビルドするために使用されます:"ParserName.ClassName.MajorVersion.MinorVersion". |
| MajorVersion | Long または ULONG を戻す | シェーダ定義のメジャー バージョン。 これはパーサ名、クラス名、およびマイナー バージョン番号とともに、ShaderDef.ProgID を次の形式でビルドするために使用されます: "ParserName.ClassName.MajorVersion.MinorVersion". |
| MinorVersion | Long または ULONG を戻す | シェーダ定義のマイナー バージョン。 これはパーサ名、クラス名、およびメジャー バージョン番号とともに、ShaderDef.ProgID を次の形式でビルドするために使用されます: "ParserName.ClassName.MajorVersion.MinorVersion". |
| Category | 文字列 または CString を戻す | Preset Manager で使用するカテゴリ。 |
| DisplayName | 文字列 または CString を戻す | Preset Manager で使用するディスプレイ名。 |
| Errors | 文字列 または CString を戻す | パーサは解析エラーを出力できます。 |
| Warnings | 文字列 または CString を戻す | パーサは解析に関する警告を出力できます。 |
| {XXXX-XXXX-XXXX-XXXX} or simple string attribute name | 文字列 または CString を設定する | 任意の属性の GUID または名前を表す文字列を設定することによって、ShaderDef でカスタム シェーダ属性を設定できます。 |
SICALLBACK UtShaderPlugin_ColorShare_1_0_DefineInfo( CRef& in_ctxt )
{
XSI::Context ctxt(in_ctxt);
// Setting the location and appearance of the shader definition in the preset manager
ctxt.PutAttribute( L"Category", L"UtShaderPlugin" );
ctxt.PutAttribute( L"DisplayName", L"Color Share UtShaderPlugin" );
// Setting a user attribute
ctxt.PutAttribute( L"{F2EF07FE-1B57-4245-BF08-F5556212BFDF}", L"User data" );
return CStatus::OK;
}
|