Unity/수업내용
Unity Shader 21.05.10. 수업내용 - Alpha Blending
HappyFrog
2021. 5. 10. 13:21
AlphaBlending
ㄴ오브젝트들을 그리는 순서가 정해져 있지 않다
ㄴ오브젝트들이 그려질 때마다 Z버퍼를 참고해서 앞뒤 판정을 한다.
ㄴ그리고 그려질 픽셀과 그렇지 않을 픽셀을 결정한다.
1.불투명을 먼저 그린다. - 불투명오브젝트는 Z buffer때문에 순서 관계없이 먼저 그리게된다.
2.반투명을 나중에 그린다.
3.오브젝트들이 전부 반투명이라면 가까이에 있는 것을 가장 마지막에 그린다.(제일 먼 것 ~~~ 제일 가까운 것)
위 코드와 같이 알파페이드를 사용하여 필요없는 부분을 투명하게 만들고 CullOff를 사용하여 Quad의 뒷면도 텍스쳐가 출력되게 하였다.
Shader "Custom/Test"
{
Properties
{
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Color ("Color", Color) = (1,1,1,1)
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
}
SubShader
{
Tags { "RenderType"="TransparentCutout" "Queue" = "AlphaTest"}
LOD 200
Cull Off
CGPROGRAM
#pragma surface surf Standard alphatest:_Cutoff
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputStandard o)
{
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Legacy Shaders/Transparent/Cutout/VertexLit"
}
이해가 안되는 만큼 많이 찾아봤다. 그래도 이해가 안되는게 함정 ㅎ