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

    Colorspace Conversion ノード

    説明

    入力 In の値をひとつの色空間から別の色空間へ変換した結果を返します。変換元および変換先の空間は、ノードのドロップダウンメニューの値で定義されます。

    ポート

    Name Direction タイプ 説明
    In 入力 Vector 3 入力値
    Out 出力 Vector 3 出力値

    制御

    Name タイプ オプション 説明
    From ドロップダウン RGB, Linear, HSV 変換元の色空間を選択します。
    To ドロップダウン RGB, Linear, HSV 変換先の色空間を選択します。

    生成されるコードの例

    以下のサンプルコードは、変換元/変換先の組み合わせごとに、このノードの出力の一例を示したものです。

    RGB > RGB

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        Out =  In;
    }
    

    RGB > Linear

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        float3 linearRGBLo = In / 12.92;;
        float3 linearRGBHi = pow(max(abs((In + 0.055) / 1.055), 1.192092896e-07), float3(2.4, 2.4, 2.4));
        Out = float3(In <= 0.04045) ? linearRGBLo : linearRGBHi;
    }
    

    RGB > HSV

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
        float4 P = lerp(float4(In.bg, K.wz), float4(In.gb, K.xy), step(In.b, In.g));
        float4 Q = lerp(float4(P.xyw, In.r), float4(In.r, P.yzx), step(P.x, In.r));
        float D = Q.x - min(Q.w, Q.y);
        float  E = 1e-10;
        Out = float3(abs(Q.z + (Q.w - Q.y)/(6.0 * D + E)), D / (Q.x + E), Q.x);
    }
    

    Linear > RGB

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        float3 sRGBLo = In * 12.92;
        float3 sRGBHi = (pow(max(abs(In), 1.192092896e-07), float3(1.0 / 2.4, 1.0 / 2.4, 1.0 / 2.4)) * 1.055) - 0.055;
        Out = float3(In <= 0.0031308) ? sRGBLo : sRGBHi;
    }
    

    Linear > Linear

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        Out = In;
    }
    

    Linear > HSV

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        float3 sRGBLo = In * 12.92;
        float3 sRGBHi = (pow(max(abs(In), 1.192092896e-07), float3(1.0 / 2.4, 1.0 / 2.4, 1.0 / 2.4)) * 1.055) - 0.055;
        float3 Linear = float3(In <= 0.0031308) ? sRGBLo : sRGBHi;
        float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
        float4 P = lerp(float4(Linear.bg, K.wz), float4(Linear.gb, K.xy), step(Linear.b, Linear.g));
        float4 Q = lerp(float4(P.xyw, Linear.r), float4(Linear.r, P.yzx), step(P.x, Linear.r));
        float D = Q.x - min(Q.w, Q.y);
        float  E = 1e-10;
        Out = float3(abs(Q.z + (Q.w - Q.y)/(6.0 * D + E)), D / (Q.x + E), Q.x);
    }
    

    HSV > RGB

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
        float3 P = abs(frac(In.xxx + K.xyz) * 6.0 - K.www);
        Out = In.z * lerp(K.xxx, saturate(P - K.xxx), In.y);
    }
    

    HSV > Linear

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
        float3 P = abs(frac(In.xxx + K.xyz) * 6.0 - K.www);
        float3 RGB = In.z * lerp(K.xxx, saturate(P - K.xxx), In.y);
        float3 linearRGBLo = RGB / 12.92;
        float3 linearRGBHi = pow(max(abs((RGB + 0.055) / 1.055), 1.192092896e-07), float3(2.4, 2.4, 2.4));
        Out = float3(RGB <= 0.04045) ? linearRGBLo : linearRGBHi;
    }
    

    HSV > HSV

    void Unity_ColorspaceConversion_RGB_RGB_float(float3 In, out float3 Out)
    {
        Out = In;
    }
    
    概要
    • 説明
    • ポート
    • 制御
    • 生成されるコードの例
    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)