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 では、これらの違いを管理するのに役立つプリプロセッサーマクロを含むシェーダーライブラリを提供しています。詳細については、ビルトインシェーダーマクロ を参照してください。