{!See https://docs.google.com/document/d/1takg_GmIBBKKTj-GHZCwzxohpQz7Bhekivkk72kYMtE/edit for reference implementation of OneTrust, dataLayer and GTM} {!OneTrust Cookies Consent} {!OneTrust Cookies Consent end} {!dataLayer initialization push} {!dataLayer initialization push end} {!Google Tag Manager} {!Google Tag Manager end} Colorspace Conversion 노드 | Shader Graph | 10.8.0
docs.unity3d.com
"{0}"의 검색 결과

    목차 표시/숨기기

    Colorspace Conversion 노드

    설명

    한 색공간 공간에서 다른 색공간 공간으로 In 입력 값을 전환한 결과를 반환합니다. 전환 시작 및 대상 공간은 노드의 드롭다운 값으로 정의됩니다.

    포트

    이름 방향 Type 설명
    In 입력 벡터 3 입력 값
    Out 출력 벡터 3 출력 값

    컨트롤

    이름 Type 옵션 설명
    From 드롭다운 RGB, Linear, HSV 전환 시작 색공간을 선택합니다.
    To 드롭다운 RGB, Linear, HSV 전환 대상 색공간을 선택합니다.

    생성된 코드 예제

    다음 예제 코드는 From/To 순열에 대한 이 노드의 가능한 결과 중 하나입니다.

    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)