Material vs Material Instance: 나의 초보자 깨달음
Source: Dev.to
나는 머티리얼 인스턴스가 단순히 복제본이라고 생각했다. 그 후 아무것도 다시 컴파일하지 않고 값을 바꾸어 보았다. 그때 비로소 이해가 되었다.
이 글은 게임 개발을 배우는 나의 일일 학습 여정의 일부이다. 나는 매일 배우는 것—기본, 혼란, 그리고 실제 진전—을 초보자의 시각에서 공유한다.
Day 22에 나는 언리얼 엔진의 머티리얼, 머티리얼 인스턴스, 그리고 에미시브 머티리얼에 대해 배웠다.
오늘 시도한 것 / 배운 것
먼저 일반 머티리얼을 만든 뒤, 그 머티리얼에서 머티리얼 인스턴스를 만들었다. 머티리얼 인스턴스는 메인 머티리얼의 자식과 같으며, 셰이더를 다시 컴파일하지 않고도 값을 바꿀 수 있다는 것을 알았다.
부모 머티리얼에 다음을 추가했다:
- Scalar Parameters – 강도나 세기 값을 위한 파라미터
- Vector Parameters – 색상을 위한 파라미터
또한 Emissive Color 입력을 연결해 머티리얼이 빛나게 만들었다. 이를 큐브에 적용했을 때 뷰포트에서 즉시 빛나는 모습을 확인할 수 있었다.
중요하게 배운 점은 에미시브는 조명 소스가 필요 없다는 것이다. 자체 색을 방출하므로 어두운 환경에서도 보인다.
또한 랜드스케이프의 경우 하나의 머티리얼이 여러 레이어를 제어할 수 있으며, 머티리얼 인스턴스를 사용하면 이를 더 효율적으로 재사용하고 관리할 수 있다는 점을 배웠다.
혼란스러웠던 점
처음엔 머티리얼 인스턴스 안에서 노드를 직접 편집할 수 없는 것이 왜인지 혼란스러웠다. 이해하지 못한 부분은:
- 일반 값 대신 파라미터가 필요한 이유
- Base Color와 Emissive Color의 차이
- 에미시브가 실제 조명처럼 씬 전체를 밝히지 않는 이유
랜드스케이프 머티리얼은 일반 머티리얼에 비해 훨씬 복잡해 보였다.
결국 이해된 점
결국 나는 다음을 깨달았다:
- 머티리얼 인스턴스는 값을 미세 조정하는 용도이며, 로직을 구현하는 곳이 아니다.
- 파라미터는 머티리얼과 인스턴스 사이의 다리 역할을 한다.
- 에미시브는 시각적인 빛일 뿐, 실제 씬 조명은 아니다.
이해가 되자 모든 것이 더 논리적으로 느껴졌다.
초보자를 위한 한 가지 교훈
- 로직은 항상 부모 머티리얼에 구현할 것
- 머티리얼 인스턴스를 만들 계획이라면 파라미터를 사용할 것
- 에미시브는 빛나는 효과용, 조명용이 아님
- 좋은 파라미터 이름은 혼란을 크게 줄여준다
천천히 진행 중이지만 탄탄한 기반을 다지고 있다.
당신도 게임 개발을 배우고 있다면, 시작할 때 가장 먼저 혼란스러웠던 점은 무엇이었나요?
다음 글에서 또 만나요 🎮🚀