본문 바로가기
공부/Unreal Engine 4

[언리얼4] Material instance

by MY블로그 2023. 11. 3.

게임에서 몬스터를 만들때 하나의 몬스터를 다양한 객체로 생성하였을때

모양은 같더라도 색상을 다르게 하여 다양한 타입처럼 보이도록 할수 있습니다.

하지만 각각의 몬스터를 단순하게 생상만 바꾸기 위해서 색상이바뀐 Material을 여러개 만들다보면

셰이더 컴파일은 생성된만큼의 작업을 반복해야 합니다.

때문에 최적화에 적합하지 않으므로 instancing 하여 동일한 버퍼를사용하고 내부의 값만 변환시켜 색상을 바꾸어 봅니다.

 

1. Material 생성하기

브라우저창에서 우클릭하여 머티리얼을 생성합니다.

 

처음 머티리얼을 생성했을때 연결할수있는 노드(우측 노드 내부의 흰색 글씨)와 없는 노드들(선택불가능한 회색 글씨)로 나뉘어져 있습니다.

 

이부분은 Material Domain 의 설정값에따라 연결이 가능한 노드들이 바뀌게됩니다.

가장기본인 Surface만 사용해보도록 합니다.

 

Surface의 경우

베이스컬러(Dx에서의 Diffuse Map)

메탈릭 - 금속느낌의 설정

스페큘러 - 간단히 말하자면 반사값

러프니스 - 표면의 거칠기

부분을 사용해 보도록 합니다. 노드에 마우스를 올려두면 상세한 설명들을 볼 수 있습니다.

 

사용할 노드들에 연결한 값은 크게 두가지로 나누어 볼 수 있습니다.

1. 외부에서 접근이 불가능한 Const 

2. 외부에서 접근이 가능한 파라미터

 

현재 머티리얼 인스턴스를 사용하는 이유는 단순하게 색만 바꾸기 위함이므로

색변경이 가능할수 있도록 외부에서 접근이 가능한 파라미터로 승격을 사용하도록 합니다.

 

Constant와 파라미터의 차이를 보기위해서 섞어서 연결해 주었습니다.

 

설정이 완료되었다면 오브젝트에 드래그하여 적용시켜 줍니다.

 

2. 인스턴스 생성

만들어진 머티리얼의 인스턴스 생성은 매우 간단 합니다.

인스턴스시킬 머티리얼을 우클릭하여 [머티리얼 인스턴스 생성]을 선택합니다.

생성된 인스턴스는 중복되지않는 이름으로 설정하여 생성하도록 합니다.

 

생성한 인스턴스를 더블클릭하여 편집으로 들어가보면 기존의 머티리얼과는 화면구성이 다른것을 볼 수 있습니다.

 

우측의 디테일 창을 보도록 합니다.

파라미터 그룹이 따로 마련되어져 있고 먼저 생성해둔 머티리얼은 Parent로 설정이 되어있습니다.

샘플은 단순하게 파라미터에서 기본 생상값만을 변경하여 오브젝트에 적용시켜 보았습니다.

 

댓글