

개요
Custom Primitive Data(이하 CPD)는 float 단위의 배열로 데이터를 저장하는 방식이다.
이 방식에 대한 특징을 알아본다.
내용
동적으로 인스턴스마다 다른 값을 주려면 보통 '다이내믹 머티리얼 인스턴스(MID)'를 생성한다.
하지만 CPD를 사용하면 동일한 효과를 구현하면서도 최적화에 유리하다는 장점이 있다.
단점은 유지보수와 기능에 제약이 있다는 점이다.
장점
1. 드로우콜 최적화
MID를 생성하면 오브젝트마다 개별 드로우콜이 발생한다.
하지만 CPD를 사용하면 동일한 베이스 머티리얼을 공유하므로,
인스턴싱 및 배칭 효율을 유지하면서 오브젝트별로 서로 다른 값을 지정해줄 수 있다.
2. 메모리 절약
머티리얼 인스턴스를 무분별하게 생성하지 않으므로 메모리 오버헤드가 줄어든다.
단점
1. 하드코딩된 인덱스 관리
파라미터 접근시, 인덱스를 활용해서 접근하므로 직관적이지 않고 유지보수가 어렵다는 단점이 있다.
2. 데이터 타입의 제한
float 기반의 수치 데이터만 전달 가능하므로,
텍스처, 스태틱 스위치, 블렌드 모드 등을 동적으로 바꾸는 것이 불가하다.
3. 할당 가능한 슬롯의 한계
32개로 제한됨.
Vector4 변수 사용시, 이 변수 하나만으로도 4개의 슬롯을 차지해버린다.
4. 단방향 데이터 흐름
Get Custom Primitive Data ... 같은 독립된 전용 노드가 네이티브로 존재하지 않는다.
CPD는 기본적으로 CPU에서 GPU로 데이터를 일방향으로 밀어 넣는 최적화 목적의 기능이기 때문이다.
따라서 역으로 값을 읽어오는 전용 노드는 제공하지 않아서 값을 받아오는데 제약이 있다.
이를 우회하는 방법으로는, 블루프린트 내부에 동일한 타입의 일반 변수를 만들어 두고,
CPD를 Set할 때 이 변수도 함께 갱신해 두는 것이다.
값을 역으로 읽어야 할 때는 메시 컴포넌트가 아닌 이 블루프린트 변수를 참조한다.
'이펙트 (FX) > 이펙트 팁 : Unreal' 카테고리의 다른 글
| [Unreal/Optimizing] Optimizing Niagara for Performant Worlds | Unreal Fest Orlando 2025 요약 (0) | 2026.07.08 |
|---|---|
| [Unreal/Optimizing] Optimizing the Game Thread | Unreal Fest 2024 요약 (0) | 2026.07.08 |
| [Unreal/Niagara] 나이아가라 모듈 스크립트에서 원하는대로 분기 처리하기 (NMS, Enum, Static Switch) (0) | 2026.06.19 |
| [Unreal/Niagara] 나이아가라 모듈 스크립트 GPU Fixed Bounds 설정법 (0) | 2026.06.12 |
| [Unreal/Niagara] 나이아가라 네임스페이스 정리 (0) | 2026.06.10 |
댓글