Version: Unity 6.0 (6000.0)
言語 : 日本語
コンピュートシェーダーの作成
コンピュートシェーダーの実行

コンピュートシェーダーでの HLSL と ShaderLab の使用

テクスチャサンプラーの使用

テクスチャとサンプラーは、Unity では別々のオブジェクトではありません。そのため、コンピュートシェーダでそれらを使用するには、以下の Unity 特有のルールに従う必要があります。

  • テクスチャ名と同じ名前を使用し、先頭に sampler を付けます (例えば、Texture2D MyTex; SamplerState samplerMyTex となります)。この場合、サンプラーはそのテクスチャの filter/wrap/aniso 設定に初期化されます。

  • 定義済みのサンプラーを使用してください。このため、名前には、フィルターモードの場合は Linear または Point、ラップモードの場合は Clamp または Repeat を含める必要があります。例えば SamplerState MyLinearClampSampler は、Linear (リニア) フィルターモードと Clamp (固定) ラップモードを持つサンプラーを作成します。

詳細は、サンプラーの状態についてのドキュメントを参照してください。

キーワードの使用

グラフィックスシェーダーと同じように、キーワードを使ってコンピュートシェーダの複数のバリアントを作ることができます。

バリアントの一般的な情報については、シェーダーバリアントを参照してください。これらの機能をコンピュートシェーダーに実装する方法については、HLSL のシェーダーキーワードの宣言と使用および ComputeShader API のドキュメントを参照してください。

HLSL または、GLSL のみのコンピュートシェーダー

通常、コンピュートシェーダーファイルは HLSL で記述され、必要なすべてのプラットフォームに、自動的にコンパイルされるか変換されます。ただし、他の言語への変換の禁止 (つまり、HLSL プラットフォームのみを維持します) や、GLSL 演算コードの手動作成が可能です。

以下の情報は、HLSL 専用、または、GLSL 専用のコンピュートシェーダーにのみ適用され、クロスプラットフォームのビルドには適用されません。この情報によって、コンピュートシェーダーソースが一部のプラットフォームから除外される可能性があるためです。

  • CGPROGRAM キーワードと ENDCG キーワードで囲まれたコンピュートシェーダーソースは、非 HLSL プラットフォームでは処理されません。

  • GLSLPROGRAM キーワードと ENDGLSL キーワードで囲まれたコンピュートシェーダーソースは GLSL ソースとして扱われ、そのまま出力されます。これは OpenGL または GLSL プラットフォームをターゲットとする場合にのみ機能します。また、自動的に変換されたシェーダーはバッファの HLSL データレイアウトに従う一方で、手動で記述された GLSL シェーダーは GLSL レイアウトルールに従うという点にも注意が必要です。

コンピュートシェーダーの作成
コンピュートシェーダーの実行
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961