语法

使用以下语法规则构造 HLSL 语句。

空格

以下字符被识别为空格。

  • SPACE
  • Tab
  • EOL
  • C 样式注释 (/* */)
  • C++ 样式注释 (//)

浮点数

浮点数以 HLSL 表示,如下所示:

  • fractional-constant exponent-part (opt) floating-suffix (opt)

    digit-sequence exponent-part floating-suffix (opt)

  • fractional-constant:

    数字序列 (选择) 。 digit-sequence

    digit-sequence 。

  • exponent-part :

    e sign (opt) digit-sequence

    E 符号 (opt) digit-sequence

  • sign:一个

    + -

  • digit-sequence :

    digit

    digit-sequence digit

  • floating-suffix一个

    h H F F l L L

    使用“L”后缀指定完整的 64 位精度浮点文本。 默认值为 32 位浮点文本。

    例如,编译器将以下文本值识别为 32 位精度浮点文本,并忽略低位:

    double x = -0.6473313946860445;
    

    编译器将以下文本值识别为 64 位精度浮点文本:

    double x = -0.6473313946860445L;
    

整数数字

整数以 HLSL 表示,如下所示:

  • integer-constant integer-suffix (opt)

  • integer-constant:之一

    # (十进制数)

    0# (八进制数)

    0x# (十六进制数字)

  • integer-suffix 可以是以下任一项:

    u U l L

字符

字符在 HLSL 中表示,如下所示:

字符 说明
“c” (字符)
'\a' '\b' '\f' '\b' '\r' '\t' '\v' (转义)
'\###' (八进制转义,每个 # 都是八进制数字)
'\x#' (十六进制转义,# 是十六进制数,任意数字)
'\c' (c 是其他字符,包括反斜杠和引号)

 

预处理器表达式不支持转义。

字符串

字符串以 HLSL 表示,如下所示:

“s” (是具有转义) 的任何字符串。

标识符

标识符在 HLSL 中表示,如下所示:

    [A-Za-z_][A-Za-z0-9_]*

运算符

##, #@, ++, --, &, &, &, ||, ==, ::, <<, <<=, >>, >>=, ..., 
<=, >=, !=, *=, /=, +=, -=, %=, &=, |=, ^=, ->

此外,任何其他与另一个规则不匹配的单个字符。

附录 (DirectX HLSL)