1. Camera란?
- 유니티에서 카메라는 게임 화면을 렌더링하는 데 사용
- 실제로 플레이어가 보는 "화면"은 카메라를 통해 렌더링
2. Camera 주요 속성
| 옵션 | 설명 |
| Clear Flags | 카메라가 어떤 배경으로 화면을 초기화할지 설정 (Skybox, Solid Color, Depth Only 등) |
| Background | Clear Flags가 Solid Color일 때 사용할 배경 색상 |
| Culling Mask | 카메라가 렌더링할 레이어 선택 |
| Projection | 카메라 투영 방식 (Perspective: 원근감 / Orthographic: 평면) |
| Clipping Planes | 카메라가 렌더링하는 거리 범위 (Near, Far) |
| Viewport Rect | 화면 내에서 카메라가 차지하는 영역 |
| Depth | 카메라의 렌더링 순서 |
| Rendring Path | 렌더링 처리 방법 |
| Target Texture | 카메라가 렌더링할 대상 설정 |
| Occlusion Culling | 카메라가 보지 않는 영역을 관리하여 최적화 |
| HDR | HDR 효과 지원 |
| MSAA | 계단 현상 완화 |
| Allow Dynamic Resolution | 성능에 따라 해상도 자동 조절 |
| Target DisPlay | 여러 디스플레이가 있을 경우, 어느 디스플레이에 카메라를 출력할지 설정 |
| Target Eye | VR 환경에서 어느 눈을 대상으로 할지 설정 |
3.상세 설명
1. Clear Flag
- 카메라가 화면을 그리기 전에 '기존 화면'을 어떤 방식으로 초기화할지 결정하는 속성
- 선택된 Clear Flags에 따라 화면 초기화 방식이 달라지며, 렌더링 최적화에 영향을 줄 수 있음
지원 옵션
| Skybox | 씬에 설정된 Skybox를 화면 배경으로 렌더링 |
| Solid Color | 지정한 단일 색상으로 화면을 채움 |
| Depth Only | 깊이 정보만 초기화하고, 색상은 유지 (주로 다중 카메라 구성 시 사용) |
| Don't Clear (Nothing) | 아무것도 초기화 X (드물게 사용하며, 직접 관리할 때 활용) |
- Skybox 는 씬 전체를 둘러싸는 거대한 배경 텍스처
- Clear Flag에서 Skybox 선택시 사용자가 지정한 텍스처를 배경으로 렌더링
- Solid Color 선택시 Background 속성을 사용 가능하며 선택한 색을 배경으로 렌더링
- Depth Only 설명에 색상을 유지하고 깊이 정보만을 초기화 한다는 설명이 있다.
간단한 예시로 포토샵에 투명 배경을 활용한 이미지를 들 수 있다.
투명 배경의 이미지는 어떤 배경 위에 올려도 색상을 덮어쓰지 않고 자연스럽게 겹쳐지는 것처럼,
Depth Only를 사용하면 기존 화면(배경 색상)은 유지한 채, 새로운 오브젝트를 추가로 렌더링할 수 있다.
그럼 Canvas옵션에 있는 Screen Space와는 어떤 차이가 있을까?
Screen Space - Overlay도 카메라를 무시하고 항상 화면 최상단에 그려진다는 점에서 기능은 비슷해 보인다.
하지만 두 방식의 가장 큰 차이는 거리에 따른 연출 가능 여부가 있다.
Sreen Space는 카메라 자체를 무시하기 때문에 거리가 변해도 별 다른 연출을 줄 수 없지만,
Depth Only를 사용하여 랜더링 하면 거리에 따라 UI 색을 바뀌게 하거나 없애거나 하는 연출을 줄 수 있다.
그렇다면 거리에 따라 크기가 달라지는 World Space 옵션과는 또 어떤 차이가 있을까?
World Space를 통해 씬 내 오브젝트에 UI를 부착하면 거리에 따라 크기가 달라지는 효과를 얻을 수 있다.
이 또한 거리에 따른 연출로 볼 수 있지만 롤이나 스타크래프트 처럼 거리가 달라져도 유닛의 HP UI가 고정되어야 하는 상황에서는 사용할 수 없다.
Depth Only는 거리에 따라 UI크기를 고정할 수도 있기 때문에 위 게임에서 사용하기 적합하고, 거리나 시야에 따라 UI를 지운다거나 하는 연출도 가능해지는 것이다. - Don't Clear는 색과 깊이를 모두 초기화 하지 않고, 이전 프레임의 화면 데이터를 그대로 남긴 채 렌더링을 시작하는 옵션이다.
그럼 안좋은거 아닌가요? 그렇다. 실제로 자주 쓰이지도 않고 특별한 상황에서 가끔씩 사용하는데,
대표적으로 잔상효과를 만들대 사용할 수 있다. 아니면 자신만의 특수한 효과를 만들어서 커스텀 렌더링 파이프라인을 구축할 때 정도 사용할 수 있을것이다.
화면이 엉키거나 잔상이 이상하게 남을 수 있기 때문에 일반적인 게임 카메라에서는 절대 권장되지 않는 방식이다.
2. Culling Mask
- Unity에서는 오브젝트마다 layer 설정이 가능하다. (예: Default, UI, Background, Enemy, Player 등등)
- 카메라에 Culling Mask 에서 선택한 layer 오브젝트만 렌더링 할때 사용한다.
- Culling Mask를 통해 화면에 보여줄 오브젝트를 세밀하게 제어할 수 있지만, 다중 카메라를 사용해야 하기 때문에
최적화에 신경을 써줘야 한다.
3. Projection
- Projection은 Unity World의 원근감을 표현하는 방식을 설정한다.
| Projection 종류 | 노출되는 주요 프로퍼티 | 설명 |
| Perspective | Fov Axis | 수직 또는 수평 기준으로 시야각을 계산할지 설정 |
| Field of View | 카메라의 시야각을 ° 단위로 설정 | |
| Orthographic | Orthographic Size | 카메라 중심으로 보이는 거리의 반절을 설정 |
- Fov Axis 내부에 Vertical(기본값)과 Horizontal 이 있다.
해상도에 대응하는 기능으로 Vertical은 세로 시야각이 고정되어 가로 시야가 화면 비율에 따라 변화한다.
Horizontal은 Verical과 반대로 가로 시야각이 고정되어 세로 시야가 화면 비율에 따라 변화하는 기능이다 - Field of View 는 시야각으로 숫자가 커질수록 더 넓은 영역을 렌더링한다.
- Orthographic은 시야각이 아닌 절대적인 월드 유닛 단위로 화면 범위를 조정한다.

카메라 중심을 기준으로 size 만큼 렌더링 범위가 확장된다. 크기는 거리와 무관하게 고정된다.
4. Clipping Planes
- 카메라가 렌더링할 수 있는 거리의 시작과 끝을 설정하는 설정
- Near : 카메라로부터 얼마만큼 가까운 거리부터 보일지
- Far : 카메라로부터 얼마만큼 먼 거리까지 보일지 결정
Near와 Far값을 조절하여 렌더링할 거리를 조절하여 불필요한 영역을 렌더링하지 않게 하여 성능을 최적화 할 수 있다.
다만 사용에 주의할 점은 Near와 Far의 차이가 너무 클 경우에는 깊이 버퍼의 정밀도가 떨어져 깜빡임 현상이 발생할 수 있다고 하니 적절한 거리를 유지해주는 것이 좋다고 한다.
5. Viewport Rect
- 카메라가 화면 내에서 차지할 영역을 설정한다.
- 값은 x,y, w(width),h(height) 형태로 입력하며 0~1 사이 비율로 동작한다.
- 여러 카메라를 동시에 출력하거나 분활 화면 등을 구현할 때 효과적이다.
예를 들어 전체 화면을 100%라고 할때 x가 0.1이라면 왼쪽 10%는 렌더링 되지않고 10%이후로 렌더링이 된다.

w,h 값은 카메라에 렌더링 되는 비율을 뜻한다. w가 0.5라면 가로 렌더링을 50%만 해주는것이다.
x가 0.2이고 w가 0.5라면 0.2부분부터 0.5만큼 렌더링하여 화면에는 0.2~0.7부분만 렌더링이 되는것이다.

6. Depth
- Depth는 여러 카메라가 있을 때 어떤 순서로 화면을 렌더링할지를 결정한다.
- 숫자가 낮을수록 먼저 렌더링되며, 숫자가 높을 수록 나중에 렌더링되어 덧칠되듯 출력된다.
- UI나 미니맵 등 특수 효과를 주는 카메라를 따로 만들때 Depth를 조절하여 원하는 렌더링 순서를 결정해 보자.
7. Rendering Path
- Unity의 렌더링 처리 방법을 선택할 수 있다.
| Forward (기본값) | 각 오브젝트가 라이트마다 한 번씩 렌더링됨 | 간단하고 가볍다 | 라이트 수가 많아지면 성능 저하 |
| Deferred | 모든 오브젝트를 한 번에 렌더링 후 조명 따로 계산 | 조명 개수가 많아도 효율적 | 일부 기능 제한 (투명도, MSAA 미지원 등) |
| Legacy Vertex Lit | 예전 방식, 버텍스 단위 조명 처리 | 매우 빠름 | 품질 매우 낮음 (거의 사용 안 함) |
- Forward
- 오브젝트마다 조명 계산을 개별적으로 수행하기 때문에 기본적으로 가볍고 빠르지만, 조명이 많아지면 성능 저하가 발생한다.
- 가벼운 게임, 2D게임에 적합
- Deferred
- 화면 전체를 먼저 렌더링한 뒤 조명을 따로 계산하기 때문에,조명 개수가 많을수록 성능 면에서 유리
- 기본적으로는 Forward보다 처리 과정이 복잡하고 무거운 편
- 고품질, 복잡한 조명 및 그림자, 다이나믹 씬에 적합
8. Target Texture
- 카메라가 촬영한 화면을 직접 렌더링하지 않고, Target으로 지정한 오브젝트에서 렌더링 한다.
- 예를 들어 cctv를 구현한다고 했을때, cctv 오브젝트를 만들고 Target Texture로 설정해 놓으면
해당 카메라가 렌더링한 결과를 Target Texture로 설정한 오브젝트에 실시간으로 표시한다.
9. Occlusion Culling
- 카메라에 보이지 않는 오브젝트를 렌더링 대상에서 제외하는 설정
- 예를 들어 벽 뒤에 가려진 오브젝트처럼, 카메라가 볼 수 없는 오브젝트는 렌더링하지 않도록 처리
- 그렇기 때문에 static으로 설정된 고정 오브젝트에 사용하는것이 효과적이며, 구조물이 많은 씬에서 성능 향상에 도움이 된다.
- 다만, 빠르게 이동하는 카메라나 움직이는 오브젝트에 적용되면, 렌더링이 늦어져 오브젝트가 갑자기 튀어나오는 듯한 현상이 발생할 수 있다.
- 상황게 맞게 적절한 오브젝트에 사용한다면 성능 향상에 많은 도움이 된다.
10.HDR
- 카메라의 HDR 옵션을 Use Graphics Settings로 설정하면 사용 가능
- 다만 프로젝트 전역 그래픽 설정(URP/HDRP 에셋)에서 HDR이 비활성화되어 있다면 적용되지 않는다.
- LDR 대비 밝기와 색상의 표현 범위가 훨씬 넓어져 화면을 더욱 생생하게 만들어 준다.
- 화면을 시작적으로 풍부하게 만들어주지만 GPU와 메모리에 주는 부하도 늘어나니 플랫폼 성능을 고려하여 선택적으로 사용하도록 하자.
11. MSAA
- Muti Sample Anti Aliasing의 줄임말로 오브젝트 외각선에서 생기는 계단 현상을 부드럽게 처리해주는 기술
- MSAA를 사용하면 화면을 렌더링 할 때 픽셀을 여러 번 샘플링하여 가장자리를 부드럽게 표현
- Rendering Path - Forward 설정일 때만 사용이 가능하고, 성능에 부하가 있다.
12. Allow Dynamic Resolution
- Unity가 GPU 성능이 부족할 때 자동으로 렌더링 해상도를 낮춰 프레임을 유지하는것을 허용하는 기능
- 해상도를 낮춰 프레임을 유지하여 성능 최적화에는 효과적이지만, 해상도 저하로 인한 화질 손상이 발생할 수 있다.
- 옵션을 항상 켜는 것 보다는 사용자가 선택할 수 있도록 옵션으로 제공하는 것이 유리
- PC와 같은 해상도에 민감한 플랫폼에서는 주의가 필요하다.
13. Target Display
- Unity 프로젝트에서 카메라가 어느 Display(화면)에 출력될지를 설정하는 기능
- Unity는 기본적으로 최대 8개의 Display를 지원하며, Diplay1은 항상 기본 모니터이다.
- 디바이스에 실제로 여러 모니터나 Display가 연결되어 있어야 한다.
예를 들어 오버워치 같은 FPS 게임에서 사망하면 아군 플레이어의 화면을 보여주는 기능을 구현할 때 주로 사용 가능하다.
드론이나 CCTV 등 별도 화면을 출력하는 등 다양하게 연출이 가능하며 게임뿐 아니라 데모, 시뮬레이터 등에서도 유용하게 사용가능 하다.
14. Target Eye
- VR환경에서 사용되는 옵션으로 Unity 카메라가 어느 눈에 화면을 렌더링할지를 설정
- VR은 좌우 두 눈 시점이 따로 있기 때문에 한쪽 눈에만 출력하거나, 양쪽 눈에 똑같이 출력할지 선택할 수 있어야 함
| Both | 기본값. 양쪽 눈(Left + Right) 모두에 화면을 출력 |
| Left | 왼쪽 눈에만 출력 |
| Right | 오른쪽 눈에만 출력 |
| None (disabled) | VR 출력 대상에서 제외됨 |
'Unity > 기능' 카테고리의 다른 글
| [Unity] const, readlony, static readonly (1) | 2025.05.01 |
|---|---|
| [Unity] 2D - Mathf.Atan2를 이용한 Rotate 계산 (0) | 2025.05.01 |
| [Unity] Pixel per Unit(PPU) (1) | 2025.04.29 |
| [Unity] 알고리즘 - 동적 계획법 (0) | 2025.04.21 |
| [Unity] Class와 Struct (0) | 2025.04.16 |