文法

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(opt) 。 digit-sequence

    digit-sequence 。

  • exponent-part :

    e sign(opt) digit-sequence

    E sign(opt) digit-sequence

  • sign : 次のいずれか

    + -

  • digit-sequence :

    digit

    digit-sequence digit

  • floating-suffix: 次のいずれか

    h H f F l L

    完全な 64 ビット精度浮動小数点リテラルを指定するには、"L" サフィックスを使用します。 32 ビットの float リテラルが既定値です。

    たとえば、コンパイラは次のリテラル値を 32 ビットの有効桁数浮動小数点リテラルとして認識し、下位ビットを無視します。

    double x = -0.6473313946860445;
    

    コンパイラは、次のリテラル値を 64 ビット精度浮動小数点リテラルとして認識します。

    double x = -0.6473313946860445L;
    

整数

整数は HLSL で次のように表されます。

  • integer-constant integer-suffix(opt)

  • integer-constant: 次のいずれか

    # (10 進数)

    0# (8 進数)

    0x# (16 進数)

  • integer-suffix には、次のいずれかを指定できます。

    u U l L

文字

文字は HLSL で次のように表されます。

文字 説明
'c' (文字)
'\a' '\b' '\f' '\b' '\r' '\t' '\v' (エスケープ)
'\###' (8 進数エスケープ、各 # は 8 進数)
'\x#' (16 進エスケープ、# は 16 進数、任意の桁数)
'\c' (c は、円記号や引用符を含む他の文字です)

 

プリプロセッサ式ではエスケープはサポートされていません。

文字列

文字列は HLSL で次のように表されます。

"s" (s はエスケープを含む任意の文字列です)。

識別子

識別子は HLSL で次のように表されます。

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

演算子

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

また、別のルールに一致しなかった他の 1 文字。

付録 (DirectX HLSL)