머티리얼 함수는 머티리얼 파이프라인 툴 중 세 번째로 다뤄볼 툴이다.
앞서 살펴보았듯 머티리얼은 근본적으로 일반적인 표현식 조합 그룹을 기반으로 빌드되기 때문에 툴 중에는 그런 그룹을 자체 포함한 노드로 만드는 것도 있다. 기본적으로 이 모든 머티리얼을 빌드하면서 똑같은 조합의 작은 그룹을 반복 사용해야 한다면 그냥 이 작은 조합을 작은 커스텀 표현식으로 합치는게 더 효율적일 것이다. 그게 바로 사용자 생성 표현식이다.
머티리얼 함수의 입력 부분의 핀은 하얀색과 회색으로 구분된다. ‘Preview as Defautl’가 활성화된 입력 핀은 어두운 회색으로 표시되는데 즉 이걸 연결할 필요가 없다는 것이며 이 입력에 연결된게 없어도 함수는 작동할 것이라는 뜻이다.
함수의 ‘Expose to Library’ 옵션은 팔레트 패널에서 해상 함수가 보이도록 하는 옵션이다.
오로지 파이프라인과 워크플로만을 위한 것인데 장점이 다양하다. 우선 업데이트가 쉽고 특정한 종류의 기능도 관리할 수 있어서 다수의 애셋을 일일이 교체할 필요가 없다. 눈이 오는 풍경의 프로젝트를 진행한다고 생각해보자. 프로젝트에 눈이 많을 것이다. 눈 이펙트와 바닥에 표시되는 눈 등이 많을 것이다. 즉 프로젝트에 있는 모든 머티리얼에 이런 눈 기능이 내장되어야 한다는 것이다. 이 표현식 네트워크를 매번 복사 붙여넣기 하고 싶지는 않을텐데 한번이라도 수정을 했다간 또 다시 수정 작업을 일일이 해주어야 할테니 말이다. 그 많은 머티리얼 하나하나에 말이다. 그보다 훨씬 나은 방법은 눈 함수, 즉 눈 기능이 있는 머티리얼 함수를 하나 만드는 것이다. 여기서 모든 작업을 하면서 필요할 때마다 함수를 쓰기만 하면 된다. 이런 작업 방식은 일반적인 함수 기능을 대량 리플리케이트 및 조작하는 것보다 훨씬 쉽다.
이 기능은 협업을 개선해준다. 숙련된 개발자들은 이 함수를 관리하고 일반 개발자들은 자신들에게 제공되는 함수를 쓰기만 하면 된다. 그 작업이 더 쉬워진다는 것이다. 단지 그런 이유 뿐만 아니라 작업을 많은 애셋으로 나눌 수 있기에 더 편리하다. 단 하나의 초대형 머티리얼에서 모든 작업을 하는게 아니라 분할을 할 수 있는 것이다.
함수 라이브러리는 프로젝트 간의 공유도 가능하다. 심지어 함수 내에 함수를 둘 수도 있다.
함수는 두 개의 그룹으로 분류될 수 있다.
Foundational base functions는 작은 벽돌과 같아서 그 자체로는 아무 효과도 없다. 예컨대 ‘Blend Angle Corrected Normals’가 있다. 이 자체로는 딱히 하는 것이 없다. 매우 중립적이다.
수백 개의 머티리얼에 사용된 함수에 변경을 가하면 컴파일 시간이 아주 길어지는 단점이 있다.