docs.unity3d.com
    目次を表示する/隠す

    Dither ノード

    説明

    ディザは、量子化誤差をランダム化するために使用される意図的なノイズです。これは、画像内のカラーバンディングなどの、大規模なパターン (反復的模様) を防止するために使用されます。Dither ノードは、このパターンが均一に分布されるように、スクリーンスペースでディザリングを適用します。これは、Screen Position 入力に別のノードを接続することによって調節可能です。

    この ノード は一般的に、Master ノード 上で、不透明なオブジェクトに透明性を与えるために Alpha Clip Threshold への入力として使用されます。これは、見た目は透明でありながら、不透明なオブジェクトのレンダリングの利点 (深度の書き込みやディファードでのレンダリングなど) を備えたオブジェクトを作成するのに便利です。

    ポート

    Name Direction タイプ バインディング 説明
    In 入力 任意のベクトル型 なし 入力値
    Screen Position 入力 Vector 4 Screen Position ディザパターンの適用に使用される座標
    Out 出力 任意のベクトル型 なし 出力値

    生成されるコードの例

    以下のサンプルコードは、このノードの出力の一例を示したものです。

    void Unity_Dither_float4(float4 In, float4 ScreenPosition, out float4 Out)
    {
        float2 uv = ScreenPosition.xy * _ScreenParams.xy;
        float DITHER_THRESHOLDS[16] =
        {
            1.0 / 17.0,  9.0 / 17.0,  3.0 / 17.0, 11.0 / 17.0,
            13.0 / 17.0,  5.0 / 17.0, 15.0 / 17.0,  7.0 / 17.0,
            4.0 / 17.0, 12.0 / 17.0,  2.0 / 17.0, 10.0 / 17.0,
            16.0 / 17.0,  8.0 / 17.0, 14.0 / 17.0,  6.0 / 17.0
        };
        uint index = (uint(uv.x) % 4) * 4 + uint(uv.y) % 4;
        Out = In - DITHER_THRESHOLDS[index];
    }
    
    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)