해당 포스팅은 " 따라 하면서 배우는 유니티 5 셰이더와 이펙트 입문 " 기반으로 정리 하였습니다.
표준 쉐이더의 렌더링 모드는 표면의 투명도 사용여부 및 혼합모드 유형 특성을 지정해 줄 수 있다.
[ Rendering Mode ]
- Opaque : 기본값, 불투명한 오브젝트에 사용
뒤에 있는 오브젝트들은 가려져서 보여지지 않음
알파 채널을 사용할 수 없다.
- Cutout : 완전히 불투명한 부분과 투명한 부분이 함께 가지고 있는 경우 사용
알파 채널을 통해 영역을 지정할 수 있다.
- Fade : 픽셀이 완전히 투명하거나 부분적으로 투명한 잘라낸 영역이 표현
반사 및 하이라이트를 표현
알파 채널을 사용하여 투명도를 설정 할 수 있다.
- Transparent : 사실적인 투명 재질을 표현하는데 사용
반사 및 하이라이트를 표현
알파 채널을 사용하여 투명도를 설정 할 수 있음
- 해당 씬에선 Fade로 선택하여 표현했습니다.
투명 유리 머티리얼 개선 ( 흠집 추가 )
이전 내용에 투명 유리를 표현하는 방법에 대해 정리하였다.
이번에는 발전된 투명 쉐이더를 제작하는 방법에 대해 정리 해보고자한다.
Tags { "RenderType"="Transparent" "Queue" = "Transparent"}
Queue : 셰이더와 연결된 픽셀을 언제 렌더링 여부 지정
* 투명한 픽셀을 렌더링 하기 위해선 불투명한 픽셀을 먼저 렌더링 후 투명한 픽셀을 렌더링 한다.
[ Render Queue 종류 ]
- Transparent : 완전히 투명한 표면 / 몇 가지 파티클 효과에 사용
- Background : 가장 먼저 렌더링 되는 픽셀로 정함 ( 스카이 박스나 환경 요소에서 사용 )
- Geometry : 기본 큐 태그, 불투명한 오브젝트에 사용
- Geometry + 숫자를 통해 쉐이더를 세밀하게 조정 가능
- AlphaTest : 컷아웃 투명도를 포함하는 오브젝트에 사용
- Overlay : 일부 카메라와 조명 효과에 사용
흠집 추가
Normal Map를 통해 흠집을 추가 할 수 있다. 흠집이 추가 될 경우 반사되는 빛의 강도가 흠집의 영역에서는 약간 저하된다.
Normal Map ( Bump Map )
: 렌더링될 오브젝트의 픽셀마다 표면반사의 높낮이가 존재해 오브젝트의 포면을 표현, 더 입체감이 있도록 표현 해줌
Normal Map이 파란색인 이유?
: 2개의 채널 ( R, G )만 사용하고 B는 항상 1로 되어있기 때문에 파란색으로 나타난다.
Normal Map 적용 방법 ( 사용하는 코드만 정리 )
Properties
{
_BumpMap("Normalmap", 2D) = "bump"{}
}
SubShader
{
sampler2D _BumpMap;
void surf (Input IN, inout SurfaceOutputStandard o)
{
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
}
}
_BumpMap("Normalmap", 2D) = "bump"{} : Normal Map을 생성
UnpackNormal : 노말맵에 사용할 수 있도록 변환하는 함수
- 구조 : float3 y = UnpackNormal(float4 x);
- x 에는 반드시 float4의 값이 들어가야하며 결과물로는 반드시 float3 데이터로 받아야한다.
[참고]
'Shader' 카테고리의 다른 글
[ Shader ] 06. 스페큘러와 메탈릭 표면 (0) | 2023.05.25 |
---|---|
[ Shader ] 04.쉐이더를 이용한 애니메이션 (0) | 2023.05.13 |
[ Shader ] 03.조명과 발광 효과 (0) | 2023.05.11 |
[ Shader ] 02.커스텀 쉐이더( Custom Shader ) 란? (1) | 2023.05.10 |
[ Shader ] 01.표준 쉐이더(Standard Shader) 란? (0) | 2023.05.09 |