全局参数

每个符合 DXSAS 的效果都必须至少定义一个具有全局语义的全局效果参数。 全局参数还可以使用一个或多个可选注释。 语法如下所示:

int VariableName : SasGlobal
<
    SasVersion 
    [OptionalAnnotations]
>;

其中:

SasVersion

唯一必需的注释是 SasVersion。 声明如下:

int3 SasVersion = { major, minor, revision };

其中:

  • major 表示 DXSAS 主要版本。 DXSAS 的主要版本可以包含对定义的语义和注释集的彻底更改。 可以添加和删除语义和注释,并且通常不能保证与以前版本的向后兼容性。
  • minor 指示 SAS 次要版本。 DXSAS 的次要版本可以包括添加新语义或注释。 此外,在 DXSAS 标准中,语义和注释可能标记为已弃用。 主机应用程序仍必须支持已弃用的语义和注释,但在使用此类语义或批注时可能会发出警告诊断。 次要版本与以前的版本向后兼容。
  • revision 指示 DXSAS 修订版。 DXSAS 的修订只是为了修复 bug、消除歧义和优化标准。 对标准的修订与以前的版本向后兼容。

当前版本为 1.0.0。 此批注没有默认值。

SasEffectAuthor

这将声明创建效果的人员。 声明如下:

string SasEffectAuthor = "value";

其中,value 是标识效果作者的字符串。 默认值为空字符串。

SasEffectAuthoringSoftware

这将声明创作效果的软件。 声明如下:

string SasEffectAuthoringSoftware = "value";

其中,value 是标识效果创作软件的字符串。 默认值为空字符串。

SasEffectCategory

这会声明效果类别。 声明如下:

string SasEffectCategory = "value";

其中,value 是标识效果类别的字符串。 默认值为空字符串。 使用正斜杠作为分隔符,通过类似于路径的值来表示类别。 效果只能属于一个类别,因为没有语法用于表示包含在单个 SasEffectCategory 值的多个路径中。 主机应用程序不将此注释的值视为区分大小写。

SasEffectCompany

这将声明创建效果的公司。 声明如下:

string SasEffectCompany = "value";

其中,value 是一个字符串,用于标识拥有效果的公司的名称。 默认值为空字符串。

SasEffectDescription

这描述了效果。 声明如下:

string SasEffectDescription = "value";

其中,value 是描述效果的字符串。 默认值为空字符串。

SasEffectHelp

这是一个帮助字符串,每当请求有关关联效果的帮助时,都可以向用户显示。 声明如下:

string SasEffectHelp = "value";

其中,value 是当用户请求帮助时可以显示的字符串。 默认值为空字符串。

SasEffectRevision

此批注允许工具和用户记录关联效果文件的修订号。 例如,用户可以在此批注的值中插入适当的关键字,以在其喜欢的修订控制软件中调用关键字 (keyword) 替换。 声明如下:

string SasEffectRevision = "value";

其中,value 是标识效果修订的字符串。 默认值为空字符串。

示例

下面是一个仅使用单个必需批注的示例:

int gp : SasGlobal
<
  int3 SasVersion = {1,0,0};
>;

下面是使用所需批注和多个可选注释的示例:

int gp : SasGlobal
<
  int3 SasVersion = {1,0,0};
  string SasEffectAuthor = "Mike's Shader";
  string SasEffectAuthoringSoftware = "fxe 2.5.4";
  string SasEffectCategory = "/surface/procedural/wood";
  string SasEffectCompany = "Microsoft Corporation";
  string SasEffectDescription = "Renders an irridescent surface.";
  string SasEffectHelp = "For more information, see https://somelocation/skin.htm";    
  string SasEffectRevision = "$Revision$";  
>;

DirectX 标准批注和语义参考