Unity 섀도우 매핑 가이드
개요
Unity는 실시간 그림자를 렌더링하기 위해 '섀도우 매핑' 기술을 사용합니다. 이 기술은 간단한 원리를 바탕으로 하며, 게임의 비주얼을 더욱 사실적으로 만들어 줍니다.
섀도우 매핑의 원리
섀도우 매핑은 섀도우 맵이라는 특별한 텍스처를 사용합니다. 이 섀도우 맵은 장면의 깊이 정보를 담고 있으며, 광원에서의 시점에서 생성됩니다. 카메라가 광원과 같은 위치에 있을 때, 카메라는 볼 수 없는 영역이 광선이 도달하지 않는 영역과 일치하게 됩니다. 따라서 그러한 영역은 그림자로 가려지게 됩니다.
Unity는 섀도우 맵을 사용하여 그림자가 필요한 게임 오브젝트에 대한 정보를 계산합니다.
섀도우 맵 해상도
Unity에서는 섀도우 맵의 해상도를 다음과 같은 방식으로 결정합니다:
- 조명 영역 결정: 스크린 뷰에서 광원으로 비출 수 있는 영역을 계산합니다. 방향광원은 전체 화면을 커버하고, 스폿 및 점 광원은 특정 모양으로 투영됩니다.
- 픽셀 크기 계산: 투사된 모양의 너비와 높이 중 큰 값을 사용하여 픽셀 크기를 결정합니다.
- 품질 설정에 따른 멀티플라이어 적용: 그림자 품질 멀티플라이어가 적용되어 해상도가 결정됩니다.
광원 타입 | 최대 해상도 (픽셀 단위) |
---|---|
방향성 모드 | 4096 x 4096 (높은 해상도시) 또는 2048 x 2048 |
스폿 광원 | 2048 x 2048 (높은 해상도시) 또는 1024 x 1024 |
점 광원 | 1024 x 1024 (높은 해상도시) 또는 512 x 512 |
점 광원은 그림자에 큐브맵을 사용하기 때문에 해상도 제한이 더 낮습니다.
섀도우 맵 해상도 오버라이드
Unity에서는 빌트인 렌더 파이프라인을 사용하는 경우 Light.shadowCustomResolution 프로퍼티를 통해 광원의 섀도우 맵 해상도를 설정할 수 있습니다. 이 값을 사용하여 해상도를 조절하고, 필요한 경우 수동으로 해상도를 오버라이드할 수 있습니다.
추가 예제 및 활용
- 실시간 그림자 추가: 게임 내에 실시간 그림자를 추가하여 입체감을 더할 수 있습니다.
- 렌더링 품질 조정: 다양한 품질 설정을 통해 낮은 성능의 하드웨어에서도 최적의 성능을 유지할 수 있습니다.
참고 링크
이 문서는 Unity의 섀도우 매핑에 대한 기본적인 이해를 돕기 위해 작성되었습니다. 각 항목을 참고하여 실질적인 적용을 해보시기 바랍니다.