テクスチャとサンプラーは、Unity では別々のオブジェクトではありません。そのため、コンピュートシェーダでそれらを使用するには、以下の Unity 特有のルールに従う必要があります。
テクスチャ名と同じ名前を使用し、先頭に sampler を付けます (例えば、Texture2D MyTex; SamplerState samplerMyTex となります)。この場合、サンプラーはそのテクスチャの filter/wrap/aniso 設定に初期化されます。
定義済みのサンプラーを使用してください。このため、名前には、フィルターモードの場合は Linear または Point、ラップモードの場合は Clamp または Repeat を含める必要があります。例えば SamplerState MyLinearClampSampler は、Linear (リニア) フィルターモードと Clamp (固定) ラップモードを持つサンプラーを作成します。
詳細は、サンプラーの状態についてのドキュメントを参照してください。
グラフィックスシェーダーと同じように、キーワードを使ってコンピュートシェーダの複数のバリアントを作ることができます。
バリアントの一般的な情報については、シェーダーバリアントを参照してください。これらの機能をコンピュートシェーダーに実装する方法については、HLSL のシェーダーキーワードの宣言と使用および ComputeShader API のドキュメントを参照してください。
通常、コンピュートシェーダーファイルは HLSL で記述され、必要なすべてのプラットフォームに、自動的にコンパイルされるか変換されます。ただし、他の言語への変換の禁止 (つまり、HLSL プラットフォームのみを維持します) や、GLSL 演算コードの手動作成が可能です。
以下の情報は、HLSL 専用、または、GLSL 専用のコンピュートシェーダーにのみ適用され、クロスプラットフォームのビルドには適用されません。この情報によって、コンピュートシェーダーソースが一部のプラットフォームから除外される可能性があるためです。
CGPROGRAM キーワードと ENDCG キーワードで囲まれたコンピュートシェーダーソースは、非 HLSL プラットフォームでは処理されません。
GLSLPROGRAM キーワードと ENDGLSL キーワードで囲まれたコンピュートシェーダーソースは GLSL ソースとして扱われ、そのまま出力されます。これは OpenGL または GLSL プラットフォームをターゲットとする場合にのみ機能します。また、自動的に変換されたシェーダーはバッファの HLSL データレイアウトに従う一方で、手動で記述された GLSL シェーダーは GLSL レイアウトルールに従うという点にも注意が必要です。