-
[Unreal] Instanced Static Mesh 사용기쾌락없는 책임 (공부)/Unreal 2026. 2. 4. 12:22반응형
공식 문서
언리얼 엔진의 인스턴스드 스태틱 메시 컴포넌트 | 언리얼 엔진 5.7 문서 | Epic Developer Community
언리얼 엔진에서 인스턴스드 스태틱 메시 컴포넌트를 사용한 인스턴싱을 통해 프로젝트를 최적화하는 방법을 살펴봅니다.
dev.epicgames.com
개요
개발자에게는 필요한 역량일까 싶지만 게임 개발자에게는 필요한 역량이라 생각해 현재 개발 중인 게임에 적용해 두기로 했습니다.
Instanced Static Mesh 란 같은 메쉬/메테리얼을 공유하는 레벨 내 요소들의 드로우 콜을 줄여주는 기능입니다. 원래라면 100개가 있으면 같은 메쉬라도 드로우콜을 100번 보내지만 해당 기능으로 수집한 메쉬들의 경우에는 드로우콜을 1번만 보내게 된다는 이야기죠.
보통 대부분의 엔진들은 가지고 있는 기능으로 보이고 유니티에서도 있었던 기능으로 알고 있으니 3D 게임 제작 중이라면 최적화를 위해 적용할 가치가 있다고 봅니다.
실제 개인 프로젝트에 적용
현재 제 개인 프로젝트에서는 레벨 디자인을 하면서 Foliage를 제외하고 마구잡이로 액터들을 배치해 두었습니다. 같은 메쉬가 최소 10개부터 400개까지 되는 경우가 많았기에 해당 메쉬들에 대해서 ISM (Instanced Static Mesh)를 적용해 보려고 했습니다.



최적화 전에는 총 액터 수는 8520개, 프레임은 57정도 나오고 있었습니다. 맨 위 RenderViewFamily의 경우에도 10ms를 넘는 경우가 빈번해 프레임 방어가 힘들어진 상태였습니다.



최적화 후에는 액터 수를 1/8 수준인 1705개로 줄였습니다. 최적화 도중도중 여러 프랍들을 설치했지만 그를 무시해도 액터 수는 드라마틱하게 줄었다고 볼 수 있습니다. RenderViewFamily도 평균이 1ms로 줄여져 많이 줄게 되었습니다.
프레임은 다시 보니 라이팅이 일부 삭제된게 클 것으로 보여 ISM 만으로는 줄였다고 보기 어려울 것 같습니다.
주의점
다들 아는 사실일 수 있지만 ISM 은 메테리얼도 모든 메쉬들이 '공유' 하게 됩니다. 때문에 UV 좌표를 통해 뭔가를 하는, 텍스쳐 패턴에 변형을 주는 메테리얼들의 경우 모든 위치나 방향 등에서 ISM의 메쉬들이 동일해지기에 사용에 있어 주의가 필요해 보입니다.
추가로 ISM 으로 된 메쉬들은 1개의 액터로 병합 후 다시 분해가 안되니 레벨을 백업해 두고 작업하는게 편하며(전/후 성능 비교에도 좋음) 가급적 레벨 디자인이 완료된 후 마무리 단계에서 진행하는게 생산성에 좋을 것으로 보입니다.
결론
드로우콜을 줄이기 위한 여러 기법들이 있겠지만 ISM 은 간단하고 그 성과가 바로 눈에 보인다는 점에서 필수적인 사용이라 봅니다. 개발자가 해야 하는 업무냐?라고 한다면 아니겠지만 이런 기법들을 알아두는 건 분명 도움이 될 것이고 특히 1인 개발이면 분야에 대한 경계는 없으니 알아두면 더더욱 좋을 거라 봅니다.
반응형'쾌락없는 책임 (공부) > Unreal' 카테고리의 다른 글
[Unreal] UMG View Model 바인딩 후 컴파일이 되지 않는 오류 (0) 2026.02.13 [Unreal] Unreal Engine5 Unreal Lightmass executable is outdated 오류 (1) 2026.01.18 [Unreal] Game Ability System, GAS를 써본 후기 (0) 2025.09.02 [Unreal] Urneal MVVM plugin, UMG ViewModel 사용 및 후기 (1) 2025.08.31 [Unreal] Unreal Engine 에서 RAII 패턴을 통해 자동으로 함수에서 EndAbility 하기 (1) 2025.08.20