Pink Transparent Star

Shader

[ Shader ] 05.투명 표면

채유나 2023. 5. 17. 16:36
728x90
해당 포스팅은 " 따라 하면서 배우는 유니티 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 예시 이미지 ( 출처 : Unity Documentation )

 

 

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 데이터로 받아야한다.

 

 

[참고]

https://darkcatgame.tistory.com/11

728x90