Unity では、シェーダープログラム は HLSL 言語で書かれています。(Cg とも呼ばれますが、ほとんどの実際的な使用においては、2 つは同じです)。
現在、異なるプラットフォームで可搬性を最大にするために、DX9 スタイル HLSL で書かれています (例えば、DX10 スタイルの Texture2D
、SamplerState
、tex.Sample
の代わりに、DX9 スタイルの sampler2D
と tex2D
をテクスチャサンプリングに使用)。
内部では、シェーダープログラム のコンパイルに異なるシェーダーコンパイラーが使用されます。
#pragma prefer_hlsl2glsl gles
を追加することで有効になります。使用されているコンパイラーを識別する必要がある場合は (あるコンパイラーだけにサポートされている HLSL シンタックスを使用するため、または、あるコンパイラーバグを回避するため)、定義済みシェーダープリプロセッサーマクロを使用します。例えば、HLSL コンパイラーでコンパイルするときは、UNITY_COMPILER_HLSL
(D3D か GLCore/GLES3/GLES プラットフォーム用) が設定され、hlsl2glsl を使ってコンパイルする場合は、UNITY_COMPILER_HLSL2GLSL
が設定されます。