Unity では、シェーダープログラムを記述するために HLSL というプログラミング言語を使用します。
このセクションでは、HLSL を Unity 固有の方法で使用するための情報を提供します。HLSL の記述に関する一般的な情報については、上位レベル シェーダー言語 (HLSL) を参照してください。
ノート: Unity はもともと Cg 言語 を使用していました。そのため、Unity のキーワード (CGPROGRAM) やファイル拡張子 (.cginc) の名前になっています。Unity はもう Cg を使っていませんが、これらの名前はまだ使われています。
HLSL コードは、ShaderLab コードのコードブロック内に配置します。通常はこのような形になります。
  Pass {
        // ... 通常のパス状態設定 ...
      
        HLSLPROGRAM
        // このスニペットのコンパイルディレクティブ。例:
        #pragma vertex vert
        #pragma fragment frag
      
        // シェーダープログラム自体
      
        ENDHLSL
        // ... パスの残り部分 ...
    }
シェーダーコードブロックの詳細については、ShaderLab: シェーダープログラムを加える を参照してください。
HLSL には、古い DirectX 9 スタイルと、より新しい DirectX 10 以降のスタイルの 2 つの構文があります。その違いは、主にテクスチャサンプリング関数の動作にあります。
Unity では、これらの違いを管理するのに役立つプリプロセッサーマクロを含むシェーダーライブラリを提供しています。詳細については、ビルトインシェーダーマクロ を参照してください。