{!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} White Balance 노드 | Shader Graph | 10.8.0
docs.unity3d.com
"{0}"의 검색 결과

    목차 표시/숨기기

    White Balance 노드

    설명

    Temperature 입력과 Tint 입력의 양만큼 In 입력의 온도와 색조를 각각 조정합니다. Temperature는 값을 노란색 또는 파란색으로 전환하는 효과가 있고, Tint는 분홍색 또는 녹색으로 전환하는 효과가 있습니다.

    포트

    이름 방향 Type 바인딩 설명
    In 입력 벡터 3 None 입력 값
    Temperature 입력 플로트 None 온도 오프셋 값
    Tint 입력 플로트 None 색조 오프셋 값
    Out 출력 벡터 3 None 출력 값

    생성된 코드 예제

    다음 예제 코드는 이 노드의 가능한 결과 중 하나입니다.

    void Unity_WhiteBalance_float(float3 In, float Temperature, float Tint, out float3 Out)
    {
        // Range ~[-1.67;1.67] works best
        float t1 = Temperature * 10 / 6;
        float t2 = Tint * 10 / 6;
    
        // Get the CIE xy chromaticity of the reference white point.
        // Note: 0.31271 = x value on the D65 white point
        float x = 0.31271 - t1 * (t1 < 0 ? 0.1 : 0.05);
        float standardIlluminantY = 2.87 * x - 3 * x * x - 0.27509507;
        float y = standardIlluminantY + t2 * 0.05;
    
        // Calculate the coefficients in the LMS space.
        float3 w1 = float3(0.949237, 1.03542, 1.08728); // D65 white point
    
        // CIExyToLMS
        float Y = 1;
        float X = Y * x / y;
        float Z = Y * (1 - x - y) / y;
        float L = 0.7328 * X + 0.4296 * Y - 0.1624 * Z;
        float M = -0.7036 * X + 1.6975 * Y + 0.0061 * Z;
        float S = 0.0030 * X + 0.0136 * Y + 0.9834 * Z;
        float3 w2 = float3(L, M, S);
    
        float3 balance = float3(w1.x / w2.x, w1.y / w2.y, w1.z / w2.z);
    
        float3x3 LIN_2_LMS_MAT = {
            3.90405e-1, 5.49941e-1, 8.92632e-3,
            7.08416e-2, 9.63172e-1, 1.35775e-3,
            2.31082e-2, 1.28021e-1, 9.36245e-1
        };
    
        float3x3 LMS_2_LIN_MAT = {
            2.85847e+0, -1.62879e+0, -2.48910e-2,
            -2.10182e-1,  1.15820e+0,  3.24281e-4,
            -4.18120e-2, -1.18169e-1,  1.06867e+0
        };
    
        float3 lms = mul(LIN_2_LMS_MAT, In);
        lms *= balance;
        Out = mul(LMS_2_LIN_MAT, lms);
    }
    
    문서 개요
    맨 위로
    Copyright © 2023 Unity Technologies — 상표 및 이용약관
    • 법률정보
    • 개인정보처리방침
    • 쿠키
    • 내 개인정보 판매 금지
    • Your Privacy Choices (Cookie Settings)