안녕하세요 주인장입니다.
오늘은 Camera Stacking 기능에 대해 알아보고, 실제로 어떻게 활용할 수 있는지 간단한 예시를 통해 알아보겠습니다.
Camera Stacking 이란?
Camera Stacking은 URP에서 여러 카메라의 출력을 순서대로 쌓아 올려 하나의 최종 이미지를 만드는 기능입니다. 이는 마치 포토샵의 레이어처럼 작동합니다.
이 기능을 하용하려면 씬에 최소 두개의 카메라가 필요하며, 이 카메라들은 다음과 같은 역할을 수행합니다.


- Base Camera (기본 카메라)
- 가장 아래에 있는 레이어 역할을 합니다.
- 주로 배경, 지형, 캐릭터 등 씬의 주요 요소를 렌더링합니다.
- Overlay Camera (오버레이 카메라)
- Base Camera 위에 쌓이는 레이어 역할을 합니다.
- 주로 UI, 미니맵, 전장의안개, 특정 이펙트 등 Base Camera와 독립적으로 렌더링되어야 하는 요소를 처리합니다.
Camera Stacking 설정 방법
Camera Stacking을 활성화하는 과정은 매우 간단합니다
1. Scene을 생성하시면 기본적으로 제공되는 Main Camera가 있으실겁니다, 기본 카메라의 Render Type이 Base로 설정되어있는지 확인합니다.
2. Overlay Camera로 사용할 새로운 Camera를 생성합니다 Render Type이 Overlay로 설정되어있는지 확인합니다
3. Overlay Camera의 Rendering → Culling Mask를 설정하여 이 카메라가 렌더링 할 특정 레이어만 선택합니다.


4. Main Camera → Stack 리스트를 찾아 '+' 버튼을 클릭하여 새로운 Overlay Camera를 추가합니다

간단한 응용
1. 렌더링 우선순위 변경
앞서 설명 드린것처럼, Camera Stacking은 포토샵의 레이어 개념과 비슷합니다. 포토샵에서 레이어의 순서를 조정하면 이미지의 표시 우선순위가 바뀌듯이, Unity의 Camera Stacking에서도 각 카메라의 렌더링 순서를 조정하여 3D 환경에서 어떤 요소가 먼저 혹은 나중에 렌더링될지를 제어할 수 있습니다.

위에 이미지에서는 Scene 뷰에서 Cube → Sphere → Cylinder 순서로 오브젝트가 배치되어 있습니다. 하지만 Camera Stacking의 렌더링 순서를 조정함으로써 실제 게임 화면에서는 역순으로 렌더링된 모습을 확인할 수 있습니다.

제 생각에는 오버워치2의 위도우메이커의 궁극기는 Unity의 Camera Stacking과 완전히 동일한 방식은 아니지만 비슷한 원리로 구현됐다고 생각합니다. 특정 쉐이더나 별도의 카메라 렌더 패스를 이용해 적 캐릭터만 다른 레이어나 렌더 큐로 처리하여 마치 투시 카메라처럼 보이게 만든 것이죠.
2. UGUI 위에 3D 오브젝트 렌더링
주인장은 개발 도중에 UI 위에 3D 캐릭터를 렌더링해야 하는 연출이 필요했던 적이 있었습니다. 하지만 당시에는 Camera Stacking에 대한 사전 지식이 전혀 없었기 때문에, Screen Space - Overlay 상태의 Canvas로는 아무리 시도해도 3D 오브젝트를 UI 위로 올릴 방법이 없었습니다.

그래서 Canvas의 Render Mode를 Screen Space - Camera로 변경한 뒤, UI를 Overlay 카메라의 렌더 대상으로 설정했습니다. 그 후 Camera Stacking을 통해 UI위에 3D 오브젝트가 정상적으로 렌더링 되도록 구현할 수 있었습니다.
오늘의 기록은 여기까지. 주인장은 이만 로그아웃 합니다. 모두 평안한 밤 보내세요!
'개발 > Unity' 카테고리의 다른 글
| [Unity] SOLID 원칙 (2) OCP : 개방 폐쇄 원칙 (0) | 2025.11.25 |
|---|---|
| [Unity] SOLID 원칙 (1) SRP : 단일 책임 원칙 (0) | 2025.11.24 |
| [에셋/툴] Build Report Tool (0) | 2025.11.06 |
| [Unity] 클라이언트에서 사용할 수 있는 안티치트 기법 (1) (0) | 2025.11.03 |
| [Unity] 유니티에서 다른 앱 호출 방법 (0) | 2025.10.27 |