머티리얼과 셰이더란?

2022. 3. 30. 13:39Unity

에셋스토어에서 받은 모델링들을 보면 머티리얼이 붙어있고 그 머티리얼들에는 셰이더가, 셰이더에는 텍스쳐나 컬러 등 여러 속성들이 붙어있다.

에셋스토어에서 무료로 받을 수 있는 Robot Kyle 모델링
kyle에 붙어있는 머리티얼, Base와 Normalmap이라는 항목에 텍스처가 붙어있다.

 

이 머티리얼과 셰이더는 뭐하는 놈들일까?

 

알아보기 위해 프로젝트창에서 적당한 위치에 우클릭>Create>Shader>Standard Surface Shader를 만들어주자.

 

새로 생성한 서피스 셰이더를 열면 프로퍼티 부분에 이렇게 4개 항목이 있다. 이 셰이더를 머티리얼에 연결하면(머티리얼도 마찬가지로 적당한 위치에 우클릭으로 만들어 주면 된다.)

 

 

 

이렇게 색상,  알베도(텍스처), (표면의)매끈함, 금속성 항목이 나타난다.

 

 

 

 

 

 

 

새로 구체를 하나 만들어주고 방금 만든 머티리얼을 연결(그냥 끌어다가 하이어라키창에 있는 구체에 드랍하면 된다)해주고

Color를 선택해주면 해당 색으로 구체가 변한다.

 

 

 

 

 

 

 

 

 

 

 

Smoothness와 Metallic은 말 그대로 표면이 얼마나 매끈한지(반사가 잘 일어나는지), 금속성을 띄는지 조절하는 프로퍼티이다.

여기에서 PBR(Physically Based Renderer- 물리 기반 렌더링)의 개념이 등장한다.

 

 

 

 

 

이번엔 kyle에게 우리가 만든 머티리얼을 붙여주자. 끔찍한 빨간색이 되었다.

 

 

 

 

 

 

 

 

 

 

 

 

색을 다시 하얀색으로 해주고 텍스처를 찾아서 붙여주면

 

원래의 모습으로 돌아온다.

 

이제 Smoothness와 Metallic을 모두 1로 설정해 주자.

 

마치 표면이 매끈한 금속처럼 되었다!

 

이제 Metallic을 0으로 바꿔주자

 

이번엔 표면이 매끈하지만 금속성은 아닌 도자기 비슷한 느낌이 되었다.

 

실제로 셰이더가 어떤 동작으로 이런 결과들을 만들어내는지는 그래픽 파이프라인이라든가 픽셀 셰이더라든가 다른 많은 개념들이 필요한데다가 나도 대충의 흐름만 알지 정확히는 알지 못한다.

여하튼 유니티는 광원과 물체 표면의 반사등을 계산하는 물리에 기반한 셰이더를 제공해준다. 이전, 그러니까 유니티5 버전보다 더 이전에는 다른 방식으로(사실 나도 잘 모른다) 표현되었다.