Public/Shader
블렌드 펙터 연산 - SrcAlpha OneMinusSrcAlpha
Wingold
2022. 7. 27. 13:53
블렌드 펙터 연산 기본 공식은 다음과 같다.
(펙터) 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"
}