유니티는 프레임 디버거를 이용하여 매 프레임마다 그려지는 게임오브젝트의 순서를 눈으로 확인할수 있다. |
|||
어떤것부터 그리는지 알수없다. |
|||
그려지는 순서에 따라 오브젝트가 가려질수 있다. |
|||
불투명 오브젝트를 먼저 그린다. |
|||
반투명 오베즉트는 나중에 그린다. |
|||
반투명 오브젝트끼리는 뒤에서부터 그린다. |
|||
알파 소팅을 써봤자 완벽하게 앞뒤를 제대로 판정할수 없으니, 알파를 썼을때 문제는 일어난다. |
|||
알파 블렌딩을 사용하였을때에는 Zwrite를 하지 않는다. |
|||
이문제를 해결하기 위하여 고민이 필요하다. |
|||
z Buffer |
앞뒤 판정을 위해서 각 픽셀마다 기준으로 가장 가까운 오브젝트의 깊이값이 저장되어있는 데이터 |
||
OverDraw |
그려진 이미지위에 덧그려지는 것 |
||
Alpha sorting |
멀리 있는것부터 차례대로 그리는 것 |
||
Deferred Rendering |
반투명을 처리할수 없다.(할수있지만 어렵다?) |
||
Foward Rendering |
|||
Opaque |
불투명 |
||
Transparent |
반투명 |
||
알파 구현1 |
Shader "Custom/108_alpha" |
이미지는 옵션을 clamp 두는것이 좋다. |
|
SubShader |
cull off 양면구현 |
||
sampler2D _MainTex; |
|||
void surf (Input IN, inout SurfaceOutput o) |
|||
} |
Diffuse로 놓으면 폴리곤 형태 그대로의 그림자가 나오게 된다. |
||
알파 구현2 |
Shader "Custom/109_alpha_cutout" |
하나는 알파테스트이고, |
|
SubShader |
SubShader |
||
sampler2D _MainTex; |
|||
void surf (Input IN, inout SurfaceOutput o) |
void surf (Input IN, inout SurfaceOutput o) |
유니티 쉐이더 스타트업 자료(정종필저)
'Unity > Surface Shader' 카테고리의 다른 글
가짜 리플렉션 (0) | 2020.11.10 |
---|---|
기본적인 일반텍스쳐+노멀+아웃라인 적용 쉐이더 (0) | 2020.10.06 |
RampTexture (0) | 2020.05.21 |
OUTLINE (0) | 2020.05.17 |
프레넬 공식 (0) | 2020.05.17 |