레이어드 머티리얼 개요

머티리얼 함수를 사용하여 복잡한 레이어드 머티리얼을 생성하는 방법을 소개하는 문서입니다.

Choose your operating system:

Windows

macOS

Linux

이 문서는 머티리얼 함수를 사용하여 복잡한 레이어 블렌드를 만드는 원본 레이어드 머티리얼 워크플로의 개요입니다. 머티리얼 인스턴스 에디터의 새로운 머티리얼 레이어(Material Layers) 기능에 대한 정보는 여기를 참조하세요.

레이어드 머티리얼(Layered Materials) 을 사용하면 일련의 서브머티리얼(레이어)이 포함된 머티리얼을 만든 다음 마스크와 같은 픽셀당 연산으로 오브젝트의 표면에 배치할 수 있습니다. 이 기능은 고유 표면 타입의 복잡한 블렌딩을 처리하는 데 아주 적합합니다. 아래의 로켓 이미지에서 가장 오른쪽에 있는 로켓에는 크롬, 알루미늄, 구리 부분에 별도의 레이어를 사용했습니다. 이 부분들은 머티리얼상에서 픽셀 단위로 블렌딩됩니다.

레이어드 머티리얼 예시

레이어드 머티리얼 기능은 머티리얼 함수의 익스텐션입니다. 머티리얼 함수는 복잡한 수학 방정식처럼 특정한 연산을 수행하는 독립적인 노드 네트워크입니다. 이 함수는 여러 머티리얼에서 원하는 대로 재사용할 수 있습니다. Make Material Attributes 노드와 Break Material Attributes 노드를 사용하면 머티리얼 함수 내에서 머티리얼 어트리뷰트 전체를 정의할 수 있습니다. 이 머티리얼 함수들은 베이스 머티리얼에서 호출한 뒤 머티리얼 레이어 블렌드 함수를 사용하여 블렌딩할 수 있습니다.

크롬 머티리얼 레이어 함수

위의 이미지는 Make Material Attributes 노드를 사용하여 머티리얼 함수 내에서만 정의한 간단한 크롬 머티리얼입니다. 이 함수는 블렌드 머티리얼에서 레이어로 사용하고 다른 머티리얼 함수(레이어)와 블렌딩할 수 있습니다.

머티리얼 함수는 표면에 직접 적용할 수 없으므로 머티리얼 함수 레이어를 표준 베이스 머티리얼에 사용한 뒤에 스태틱 메시에 적용해야 합니다. 머티리얼 함수를 사용하면 원하는 만큼 레이어를 만들고 원하는 방식으로 블렌딩할 수 있습니다.

고수준 환경에서 워크플로는 아래와 같습니다.

  • 새 머티리얼 함수를 만들고 노드 그래프를 수정하여 완성합니다. 베이스 머티리얼에서 호출 시 이 함수는 레이어 역할을 하게 됩니다.

  • 노드 네트워크를 새 Make Material Attributes 노드에 연결한 뒤 함수 출력에 연결합니다.

  • 머티리얼 함수를 저장합니다.

  • 생성하고자 하는 다른 머티리얼 함수 레이어에서 이 과정을 반복합니다.

  • 새 머티리얼을 만들고 머티리얼 에디터에서 엽니다.

  • 머티리얼 함수를 콘텐츠 브라우저에서 새 머티리얼로 드래그하여 레이어로 사용합니다.

  • 머티리얼 레이어 블렌드 함수를 사용하여 여러 머티리얼 함수를 함께 블렌딩합니다,

이제 최종 오브젝트가 표면에 블렌딩된 여러 머티리얼이 생성되었습니다.

주요 장점

레이어드 머티리얼을 사용하면 매우 복잡한 머티리얼을 간단히 생성하고 향후에 편집이 용이하도록 만들 수 있습니다.

예를 들어, 레이어나 함수 없이 기존 머티리얼 그래프만으로도 레이어드 머티리얼의 효과를 만들 수 있습니다. 하지만 이 경우, 머티리얼 입력에 대한 여러 텍스처와 값을 블렌딩하려면 복잡한 네트워크가 필요합니다. 대부분의 머티리얼은 여러 입력을 사용하므로 이러한 머티리얼은 복잡도가 상당히 증가합니다.

레이어가 있는 로켓 이미지

머티리얼 레이어를 사용하지 않고 위에서 본 로켓처럼 크롬과 구리 효과를 블렌딩한 아래 네트워크의 복잡도가 얼마나 높을지 생각해 보세요.

레이어가 없는 기존 머티리얼 그래프.

이미지를 클릭하면 확대됩니다.

레이어드 머티리얼을 사용하면 각 머티리얼 종류가 해당하는 노드 자체에 포함됩니다. 따라서 블렌딩이 훨씬 쉬워지고, 아티스트의 수정과 디버깅도 간편해집니다. Make Material Attributes 노드와 Break Material Attributes 노드를 사용하면 개별 프로퍼티를 복잡하게 연결하지 않고도 각 머티리얼 함수 레이어를 직접 연결할 수 있습니다.

아래 네트워크는 크롬과 구리 머티리얼을 각각의 머티리얼 함수로 모듈화하여 위와 동일한 결과를 만든 것입니다.

머티리얼 함수를 레이어로 사용한 동일 머티리얼입니다.

이미지를 클릭하면 확대됩니다.

레이어드 머티리얼을 사용하는 방식의 또 다른 장점은 머티리얼 함수를 사용하므로 각 레이어를 재사용할 수 있다는 것입니다. 이렇게 하면 머티리얼 아키타입의 라이브러리나 기초적인 실제 표면 타입을 정의하는 머티리얼을 구성할 수 있습니다. 예를 들어, 알루미늄이나 철, 가죽, 플라스틱, 고무 등 일반적인 표면을 나타내는 레이어를 생성할 수 있습니다. 또한, 레이어드 머티리얼을 사용하여 여러 레이어를 블렌딩할 수 있습니다. 이 방법은 표면에 별도로 적용할 방대한 머티리얼 세트를 만들지 않고도 캐릭터처럼 디테일한 오브젝트를 생성할 때 특히 유용합니다.

레이어드 머티리얼을 사용한 캐릭터

블렌드 타입

머티리얼 에디터 팔레트의 머티리얼 함수 목록에는 다양한 머티리얼 레이어 블렌드 함수가 있습니다. 이 함수들을 이용하면 복잡한 노드 그래프를 매번 다시 만들지 않고도 머티리얼을 블렌딩할 수 있습니다. 여기에는 특정 머티리얼 기능을 오버라이드하는 등 특수한 타입의 블렌드도 포함됩니다.

팔레트의 머티리얼 레이어 블렌드 함수

머티리얼 레이어 블렌드 함수

MatLayerBlend_AO

앰비언트 오클루전(AO) 맵을 표면에 블렌딩하여 리플렉션을 제거합니다.

MatLayerBlend_BaseColorOverride

베이스 컬러를 대체할 수 있습니다.

MatLayerBlend_BreakBaseColor

입력되는 머티리얼 레이어에서 베이스 컬러를 출력합니다.

MatLayerBlend_BreakNormal

들어오는 머티리얼 레이어에서 노멀을 출력합니다.

MatLayerBlend_Decal

두 번째 UV 채널을 사용하여 데칼 시트를 머티리얼에 블렌딩합니다.

MatLayerBlend_Decal_UV3

세 번째 UV 채널을 사용하여 데칼 시트를 머티리얼 레이어에 블렌딩합니다.

MatLayerBlend_Emissive

이미시브 텍스처를 머티리얼 레이어에 블렌딩합니다.

MatLayerBlend_GlobalNormal

노멀 텍스처를 머티리얼 레이어에 블렌딩합니다.

MatLayerBlend_LightmassReplace

라이트매스의 베이스 컬러를 대체하여 간접광 결과를 바꿀 수 있습니다.

MatLayerBlend_ModulateRoughness

머티리얼 레이어의 러프니스에 입력되는 텍스처를 곱합니다. ‘번들거리는' 느낌을 연출하는 데 유용합니다.

MatLayerBlend_NormalBlend

노멀 텍스처를 표면에 블렌딩하지만 노멀이 나타날 곳을 컨트롤할 수 있도록 마스크 텍스처를 사용합니다.

MatLayerBlend_NormalFlatten

노멀 맵의 효과를 줄입니다.

MatLayerBlend_RoughnessOverride

머티리얼 레이어의 러프니스 텍스처를 대체합니다.

MatLayerBlend_Simple

두 개의 머티리얼 레이어를 위한 간단한 선형보간(Lerp) 블렌딩 솔루션을 제공합니다. 노멀은 블렌딩하지 않고, 베이스 머티리얼의 노멀을 유지합니다.

MatLayerBlend_Stain

탑 머티리얼을 베이스 머티리얼에 스테인으로 블렌딩합니다. 즉, 탑 머티리얼의 베이스 컬러와 러프니스 값만 사용됩니다.

MatLayerBlend_Standard

두 머티리얼 레이어의 모든 어트리뷰트를 블렌딩합니다.

MatLayerBlend_Tint

색조와 마스크를 입력하여 색조의 위치를 컨트롤할 수 있도록 머티리얼 레이어에 색조를 입힐 수 있습니다. 부분적으로 색깔을 변경할 때 유용합니다.

MatLayerBlend_TintAllChannels

색조와 비슷하지만 스페큘러에도 영향을 미칩니다. 아주 특수한 경우에 사용하는 함수로, 보통은 필요하지 않습니다.

MatLayerBlend_TopNormal

두 머티리얼의 모든 어트리뷰트를 블렌딩하되 탑 머티리얼의 노멀만 사용합니다.

레이어드 머티리얼 인스턴싱하기

레이어드 머티리얼은 본질적으로 머티리얼 함수이기 때문에 인스턴싱을 위해 머티리얼을 파라미터화하려면 몇 가지 고려할 점이 있습니다. 스칼라벡터 파라미터 를 더 잘 활용하려면 머티리얼 레이어에 함수 입력(Function Input) 표현식을 만들 수 있습니다. 그 다음, 상위 머티리얼에서 파라미터를 이 입력에 연결합니다. 자세한 내용은 머티리얼 함수 개요를 참조하세요.

이 워크플로는 아래와 같이 작동합니다.

LayeredMatParamDiagram.png

  1. 머티리얼 파라미터(스칼라 파라미터, 벡터 파라미터 등)

  2. 머티리얼 레이어(함수)

  3. 함수 입력 표현식

  4. 머티리얼 레이어를 정의하는 네트워크

  5. 함수 출력

  6. 최종 머티리얼

유용한 팁:

  • 머티리얼 표현식을 함수로 붙여넣기하여 레이어를 만들 때에는 적절한 이름을 가진 함수 입력 노드로 모든 파라미터를 대체하세요.

  • 새 머티리얼 함수를 머티리얼에 적용할 때에는 새 파라미터 노드를 입력에 연결하세요.

  • 이제 최종 머티리얼을 인스턴싱할 수 있으며, 파라미터가 레이어에서 해당하는 부분에 영향을 미칩니다.

  • 함수 입력의 기본값을 설정하세요. 값 변경이 필요하지 않은 경우 워크플로 속도를 높여 줍니다.

주의사항

레이어드 머티리얼은 다중 머티리얼 구성에 유용하지만 사용할 때 주의해야 할 점이 있습니다. 특히 레이어 함수에 사용되는 머티리얼 자체가 복잡한 경우, 레이어드 머티리얼은 퍼포먼스를 수행하기에 무거울 수 있습니다.

모든 레이어는 동시에 렌더링된 뒤 블렌딩된다는 점을 유념하세요. 예를 들어, 머티리얼에 4개의 레이어가 있으면 엔진은 오브젝트의 각 픽셀에 대해 4개의 레이어 중 어떤 것이 블렌딩되는지 테스트하여 확인한 뒤 사용되지 않는 레이어를 거부합니다. 이렇게 연산이 추가되면 머티리얼의 퍼포먼스 집약도가 높아집니다.

처음에는 오브젝트에 여러 종류의 표면을 적용하고 싶을 때마다 레이어드 머티리얼을 사용해야겠다고 생각할 수도 있습니다. 예를 들어, 자동차의 경우 페인트, 철, 고무, 유리 등에 각각 다른 레이어를 사용하고 싶을 수 있습니다. 하지만 실제로는 지오메트리 수준에서 레이어를 분리하는 것이 더 효율적인 경우가 많습니다. 이 경우 오브젝트에 머티리얼 엘리먼트가 늘어나 드로 콜이 증가하지만 일반적으로 효율성은 훨씬 더 높습니다. 따라서, 레이어드 머티리얼을 사용하는 대신 여러 머티리얼을 적용할 수 있다면 후자를 선택하는 편이 좋습니다. 머티리얼이 배치된 영역을 반드시 픽셀 단위로 컨트롤해야 한다면 레이어드 머티리얼 함수나 머티리얼 레이어를 사용하세요.

여러 개의 개별 머티리얼을 하나로 압축하면 드로 콜이 줄어들지만, 그 결과 레이어드 머티리얼은 보통 모바일 플랫폼에서 사용하기에 지나치게 무거워집니다.