머테리얼 파라미터란?
빌트인, URP, HDRP 모두 기본으로 제공하는 셰이더에는 특정 값을 넣도록 되어있다. (본 글에서는 URP를 기준으로 설명)
우리는 이 값만 잘 적용시켜도 물체의 표면을 그럴듯하게 나타낼 수 있다.
물체를 사실적으로 표현하기 위해서 우리는 먼저 이 파라미터들이 어떠한 의미를 갖는지 명확히 알아야 한다.
각 파라미터들은 어떠한 의미를 갖는가?
처음 살펴볼 파라미터는 Surface Inputs이다.
여기에는 다음과 같은 종류가 있다.
- Base Map
- Metallic Map
- Smoothness
- Normal Map
- Height Map
- Occlusion Map
- Emission
- Tiling
- Offset
여기서 끝에 Map이라고 붙은 것들은 모두 네모 빈칸이 들어가 있는 것을 알 수 있다. 저 빈칸이 바로 지도(Map)를 넣는 칸이다. 모든 3D 오브젝트는 매쉬로 이루어져 있고, 펼쳐진 UV가 각 버텍스 정보에 맞게 매핑되며 색이나 캐릭터의 스킨이 입혀지게 되는 것이다. 지구본을 예로 든다면 아래와 같은 평면지도를 구로 접었다고 생각하면 되겠다. 다시 말해, Base Map, Metallic Map 등은 모두 해당 정보를 지도 형태로 저장한 텍스쳐를 넣을 수 있다는 의미이다.
Tiling와 Offset의 경우 UV와 직접적으로 관련된 파라미터이다.
이제 하나씩 살펴보도록 하자.
Base Map (Albedo)
URP에서는 Base Map이라고 되어있지만 빌트인 파이프라인에서는 Albedo로 되어있다.
이 부분은 오브젝트의 직접적인 컬러를 나타낸다. 물체에 사실성을 추가하지 않고 단순히 구현이 목적이라면 이 부분만 설정되어 있어도 문제가 없다.
Metallic Map
이름에서 알 수 있듯이 얼마나 금속성을 띄는가에 대한 파라미터이다. 이 수치가 높을수록 물체는 더 금속처럼 보인다. 이때 우리가 눈여겨봐야 할 점은 '금속처럼'이라는 용어이다. 금속처럼 보인다는 것은 어떤 것을 의미할까?
일반적으로 금속이라고 하면 반짝이며 주변 물체를 반사한다고 생각하지만 모든 금속이 처음부터 그런 것은 아니다. 금속이 해당 성질을 띄는 이유는 표면을 매끄럽게 다듬었기 때문이다. 위 성질은 오히려 아래에서 설명할 Smoothness(평활도)와 관련이 있다.
대신 모든 금속은 광택을 낸다. 금속마다 각각의 고유한 색깔로 은은한 빛을 방출한다. 이는 금속이 자유전자를 갖기 때문이다. 그리고 그 자유전자는 금속마다 서로 다르다. 따라서 서로 다른 빛깔의 광택을 내는 것이다. (자유전자가 가시광선을 받으면 각자 가지고 있던 진동수와 같은 가시광선을 방출한다. 이때 해당 파형과 일치하는 색을 우리가 보게 되는 것이다.)
결국 금속처럼 보이냐는 말의 핵심은 '광택을 방출하느냐'라는 것과 같다. 따라서 Metallic 수치가 높을수록 주변광을 무시하고 자기 자신의 광택을 더 나타낸다. 반면 Metallic 수치가 낮으면 주변광에 더 큰 영향을 받는다.
다만 유니티 엔진에서는 주변광에 의한 광택을 나타낼 뿐, 금속의 고유한 광택(머테리얼로 치면 Albedo)까지 염두하지는 않은 듯하다.
따라서 Metallic이 높을수록 주변 반사에 의해 오브젝트가 가진 Albedo색이 가려진다고 생각하는 것이 맞다.
아래의 사진으로 두 개의 차이가 분명히 나타난다.
위 씬에서 라이트는 Directional Light로 붉은색을 띠고 있다. HDRI Sky에 의한 주변광 역시 붉은색이다. 이때 Metallic이 낮을수록(비금속일수록) 오브젝트 본연의 색을 방출한다. 반면 오른쪽 구체의 경우 금속성을 띄기 때문에 주변의 다양한 색이 함께 묻어 나온다. 노란색뿐만 아니라 다양한 색이 얹혀 있는 듯한 느낌이다.
Smoothness
이 파라미터 역시 이름 그대로 표면이 얼마나 부드럽냐에 관한 값이다. 표면의 부드러움에 따라 재질은 어떤 성질을 띄게 될까?
표면이 매끄러울수록 물체에 반사되는 빛은 정반사를 하고 거칠수록 난반사를 한다. 정반사는 입사각과 반사각이 같아서 들어온 것 그대로 반사된다. 따라서 상의 형태를 유지한 채 반사시킨다. 반면 난반사는 자기 멋대로 빛을 반사시킨다. 난반사가 이루어지면 흐릿하게 반사되거나 빛 반사가 이뤄지지 않게 된다.
결국 Smoothness(평활도)는 얼마나 표면이 매끈하여 빛을 고르게 반사하느냐와 관련이 있다.
출처 https://www.olympus-lifescience.com/en/microscope-resource/primer/java/reflection/specular/
아래의 사진은 Smoothness값의 차이에 따른 정반사와 난반사의 차이이다.
위 사진처럼 정반사(오른쪽)는 스카이박스를 포함한 지형지물을 모두 반사시킨다. 반면 난반사(왼쪽)는 빛이 불규칙하게 산란, 반사되며 물체의 형태를 그대로 보여준다.
참고로 Unity를 비롯하여 하얀색 하이라이트로 많이 사용되는 Specular라는 말은 원래 정반사(정반사의 영어 번역)를 의미한다. 반면 난반사는 Diffusion이다.
'유니티 > 그래픽스' 카테고리의 다른 글
[Unity] HDRP에서 기본 Material 사용법 (1) (0) | 2023.01.17 |
---|---|
[Unity] 머테리얼 파라미터 (2) - Normal, Height, Occlusion, Emission Map, Tiling and Offset (0) | 2022.11.03 |
[Unity] 셰이더 (Shader) (0) | 2022.08.13 |
[Unity] HDRP (4) - 포스트 프로세싱 (0) | 2022.08.11 |
[Unity] HDRP (3) - 렌더링 보정 (0) | 2022.08.10 |