블렌드 펙터 연산 - SrcAlpha OneMinusSrcAlpha

2022. 7. 27. 13:53Public/Shader

블렌드 펙터 연산 기본 공식은 다음과 같다.

(펙터) X Source + (펙터) X Destination

 

 메뉴얼에서 추천하는 기본적인 블렌딩 펙터 연산 조합이다.

  • Blend SrcAlpha OneMinusSrcAlpha // Alpha blending
  • Blend SrcAlpha One // Additive
  • Blend One One // Additive No Alpha Black is Transparent
  • Blend DstColor Zero // Multiplicative
  • Blend DstColor SrcColor // 2x Multiplicative

 

 

ex)

SrcAlpha OneMinusSrcAlpha 

(SrcAlpha) x Source + (OneMinusSrcAlpha) x Destination

 

 

(SrcAlpha) x Source 의 결과는 다음과 같다.

 X 

=

그리고

(OneMinusSrcAlpha) x Destination 의 결과는 다음과 같다. //OneMinusSrcCoor : 1 - 소스컬러

X

=

 

 

이제 둘을 더하면 정말로 알파가 뚫리는 Alpha Blend 모드가 된다.

겹쳐지는 부분이 밝아지지도 않고, 어두워지지도 않은 그냥 보통의 결과물이다. 그저 알파에 의해서 두 장이 섞이는 듯한 느낌이 든다.

 

 

Shader "Custom/DrawAlpha"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue" = "Transparent"}
        zwrite off
        blend SrcAlpha OneMinusSrcAlpha

        CGPROGRAM        
        #pragma surface surf Lambert keepalpha
        
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };                

        void surf (Input IN, inout SurfaceOutput o)
        {            
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Emission = c.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

 

'Public > Shader' 카테고리의 다른 글

블렌더 펙터 연산 - One One  (0) 2022.07.27
블렌드 펙터 연산 - SrcAlpha One  (0) 2022.07.27
커스텀 제어 가능 알파 블렌딩 && 펙터  (0) 2022.07.26
알파 테스팅과 컷아웃  (0) 2022.07.26
Alpha Blend  (0) 2022.07.25