Version: 2021.2
言語: 日本語
ShaderLab: Category ブロックによるコマンドのグループ化
ShaderLab コマンド: Blend

ShaderLab コマンド: AlphaToMask

GPU の Alpha-to-coverage モードを有効または無効にします。

Alpha-to-coverage モードは、植生シェーダーなど、アルファテストを使用するシェーダーでマルチサンプリングアンチエイリアス (MSAA) を使用する場合に発生する過剰なエイリアシングを軽減することができます。これを実現するために、Alpha-to-coverage モードは、フラグメントシェーダー出力のアルファ値に比例させて、マルチサンプルカバレッジマスクを修正します。

このコマンドは、MSAA との併用を想定しています。MSAA を使用しないときに Alpha-to-coverage モードを有効にすると、予測しない結果になることがあります。これは、グラフィックス API や GPU によって処理が異なるためです。

レンダーパイプラインの互換性

機能名 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタム SRP
AlphaToMask はい はい はい はい

使用法

このコマンドは、レンダー状態の変更を行います。Pass ブロックで使用すると、そのパスのレンダー状態を設定することができます。また、SubShader ブロックで使用すると、そのサブシェーダー内のすべてのパスのレンダー状態を設定することができます。

シグネチャ 構文例 機能
AlphaToMask <state> AlphaToMask Off Alpha-to-coverage モードを有効または無効にします。

有効なパラメーター値

パラメーター Value 機能
状態 On Alpha-to-coverage モードを有効にします。
Off Alpha-to-coverage モードを無効にします。

Shader "Examples/CommandExample"
{
    SubShader
    {
         // SubShaderを定義する残りのコードをここに記述。

        Pass
        {    
              // このパスの Alpha-to-coverage モードを有効にします
              AlphaToMask On
            
              // パスを定義する残りのコードをここに記述。
        }
    }
}

このサンプルコードでは、SubShader ブロックでこのコマンドを使用するための構文を示しています。

Shader "Examples/CommandExample"
{
    SubShader
    {
         // このサブシェーダーの Alpha-to-coverage を有効にします。
         AlphaToMask On

         // サブシェーダーを定義する残りのコードをここに記述。        

        Pass
        {    
           // パスを定義する残りのコードをここに記述。
        }
    }
}
ShaderLab: Category ブロックによるコマンドのグループ化
ShaderLab コマンド: Blend