본문 바로가기

유니티/그래픽스

[Unity] 메탈릭과 스무드니스 정리 (Metallic & Smoothness)

반응형

Lit 머테리얼 파라미터

빌트인과 SRP 모두 Lit셰이더에는 Metallic과 Smoothness를 입력할 수 있는 파라미터가 있다.

 

일반적으로는 두 개를 크게 건드릴 필요가 없을 수도 있으나, 디테일한 미세조정을 하거나 셰이더를 직접 작성해야 하는 경우 두 가지를 명확히 인지를 한 상태에서 작업을 하면 좋다.

인터넷에는 이와 관련된 내용이 잘 설명되어 있는 문건이 없었기때문에 직접 정리하여 포스팅하였다.


Metallic과 Smoothness에 대한 정의

우선 알아야 할 것은, 두개의 파라미터는 분명 다르다. 함께 사용될 뿐 비슷한 의미를 갖는 것은 아니다.

이는 앞선 머테리얼 파라미터에 대한 포스팅에도 잘 나와있다.

각각의 파라미터에 대한 정의를 살펴보면 다음과 같다.

 

Metallic이란?

아래는 유니티 문서의 메탈릭에 대한 설명이다.

머티리얼의 메탈릭 파라미터에 따라 표면이 얼마나 “금속 같은지” 결정됩니다. 표면이 더 금속 같을수록 환경을 더 많이 반사하고 표면의 알베도 컬러가 덜 보입니다. 최고 메탈릭 레벨에서는 표면 컬러가 환경의 반사에 따라서만 결정됩니다. 표면이 덜 금속 같으면 표면의 알베도 컬러가 더 분명해지고 표면 반사가 표면 컬러를 가리지 않고 그 위에 보입니다.

다시 말해, 메탈릭값이 높을수록 주변 환경을 더 잘 반사한다. 여기서 중요한것은 반사에 한해서 금속성이 높을수록 물체가 주변의 색을 더 많이 띤다는 것이다.

 

Smoothness가 높은 값으로 일정할 때의 Metallic에 따른 물체의 색상 변화를 살펴보면 다음과 같다.

 

우선 환경 반사광을 순수한 빨간색(255, 0, 0)으로 설정한다. 이제 반사되는 빛은 모두 빨간색을 띄게될것이다.

커스텀 큐브맵

그리고 lit머테리얼에서 메탈릭을 변화시키면 다음과 같다.

Metallic Value 변화

 

Metallic이 높을 때는 물체의 색(Base Map에 해당하는 Albedo) 위에 Environment Reflection이 덧입혀진다. 따라서 처음 설정한 빨간색이 우세하게 나타나는 것이다.


Smoothness란?

Smoothness의 정의

평활도(Smoothness)에 대한 유니티 엔진의 가이드는 다음과 같다.

매끄러운 표면에는 마이크로서피스 디테일이 매우 낮거나 아예 없어서 광원은 균일하게 튕겨 나오며 선명한 반사가 일어납니다. 거친 표면에는 높게 튀어나온 부분과 깊게 파인 부분의 마이크로서피스 디테일이 존재해서 광원이 다양한 각도로 튕겨 나옵니다. 이를 평균하면 선명하지 않은 반사를 보이는 디퓨즈 컬러가 만들어집니다.

간단히 난반사를 하게 할 것인지 정반사를 하게 할 것인지에 대한 결정을 Smoothness로 하게 된다.

난반사가 일어나면 주변의 상이 흐릿하게 비치게 되고 정반사 일어나면 주변의 상이 또렷하게 비친다.

 

Smoothness에 따른 반사 변화

결국 수치에 따라 반사의 종류가 달라지게 되는 것이다.

 

Source

스무드니스는 Source로 Metallic Alpha와 Albedo Alpha를 입력받도록 되어있다.

이들은 어떤 차이가 있는 것일까?

 

결론부터 말하면 Smoothness Map은 1 채널(그레이 스케일)이므로 별도로 맵을 적용시키지 않고 알베도나 메탈릭맵의 알파채널에 넣은 뒤 사용할 수 있게 한 것이다.

따라서 해당 맵의 알파값이 스무드니스의 값이 된다.

 

아래의 큐브로 확인해 볼 수 있다.

 

 

이 큐브는 아래와 같은 메탈릭맵을 갖고 있다.

Metallic Map

 

다만 알파채널을 갖고 있어서 별을 제외한 부분은 투명하게 나타난다.

알파채널만 따로 확인하면 다음과 같다.

Alpha Channel

 

이제 이 텍스처를 메탈릭맵에 적용하면 어떻게 될까?

Smoothness에 따른 변화

 

조금만 생각해 보면 왜 이러한 변화가 나타났는지 알 수 있다.

 

우선 메탈릭맵에서 하얀 부분은 금속성이 큰 부분이다. 값이 1이기 때문이다. 따라서 별을 제외한 바깥 부분은 모두 금속성이 크게 나타나고 본연의 색보다 주변광에 따른 색이 더 우세하게 나타난다.

 

반면 별에 해당하는 부분은 알파채널이 1이므로 평활도가 큰 부분이다. 따라서 슬라이드를 움직여 값을 높이면 이 부분만 정반사가 이루어지고 나머지 부분은 여전히 난반사로 남게 되는 것이다.

 

만약 메탈릭 알파가 아닌 알베도 알파를 적용한다면?

Albedo Alpha 사용

알베도에는 텍스쳐 맵이 없기 때문에 Smoothness가 UV전체에 적용되고, 평활도 값을 1로 맞추었을 경우 큐브의 모든 면이 정반사를 띄게 된다.

 

비교를 하면 다음과 같다.

  적용 미적용
Smoothness  Map

 

반응형