Version: Unity 6.0 (6000.0)
言語 : 日本語
シェーダータグの概要
シェーダーが必要とするシェーダーモデルまたは GPU 機能の設定

パッケージを要求するシェーダーの設定

シェーダーによっては、複数のレンダーパイプラインを同時にサポートする必要があります。SubShader (サブシェーダー) と Pass (パス) にパッケージ要件を追加すると、シェーダーコードがインストールされていないパッケージのインクルードファイルを使用したり、コンパイルに特定のバージョンのパッケージを必要とする場合に、コンパイルエラーを回避することができるようになります。

バージョン制限では、一連のバージョン範囲を定義します。必要なパッケージのインストール済みバージョンが、この範囲のいずれにも含まれていない場合、そのパッケージの要件は満たされていません。同様に、要件で Unity のバージョン制限のセットが指定されている場合は、Unity の現在のバージョンに適用されます。バージョン制限の構文については、バージョン構文 を参照してください。

サブシェーダーやパスが、プロジェクトが満たさないパッケージ要件を宣言している場合、Unity はそのサブシェーダーやパスを以降の処理およびコンパイルから除外します。これは、プロジェクトに必要なパッケージが含まれていないか、含まれていても互換性のあるバージョンでない場合に起こります。シェーダーに要件を満たすサブシェーダーが 1 つもない場合、またはサブシェーダーに要件を満たすパスが 1 つもない場合、コンソールウィンドウに警告メッセージが表示されます。

注意PackageRequirements ブロックは、サブシェーダーまたはパス内の他のすべての宣言の前に来る必要があります。

以下のコード例は、サブシェーダーとパスの両方でパッケージ要件を指定する方法を示しています。サブシェーダーは、“com.my.package” というパッケージに対する単一のパッケージ要件を宣言しており、このパッケージの 2.2.0 以降のすべてのバージョンで動作します。サブシェーダーは、2 つのパスを持ちます。

  • 最初の Pass は以下を必要とします。

  • バージョン 10.2.1 から 11.0 までの Universal Render Pipeline パッケージ。

  • バージョン 3.2 以上の Text Mesh Pro パッケージ。

  • 2 つ目の Pass は以下を必要とします。

  • バージョン 8.0 から 8.5 までの High-Definition Render Pipeline パッケージ。

Shader "Examples/ExampleShader"
{
    SubShader
    {
        PackageRequirements
        {
            "com.my.package": "2.2"
        }
        Pass
        {
            PackageRequirements
            {
                "com.unity.render-pipelines.universal": "[10.2.1,11.0]"
                "com.unity.textmeshpro": "3.2"
            }

            // The rest of the code for the Pass
        }
        Pass
        {
            PackageRequirements
            {
                "com.unity.render-pipelines.high-definition": "[8.0,8.5]"
            }

            // The rest of the code for the Pass

        }
    }
}

追加リソース

シェーダータグの概要
シェーダーが必要とするシェーダーモデルまたは GPU 機能の設定