PART 5 - 강의 2/5
Clipmap 구조
Directional Light의 계층적 VSM 구조
01
라이트 타입별 구조
| 라이트 타입 | 구조 | 해상도 |
|---|---|---|
| Directional | Clipmaps | 각 레벨 16k |
| Point | Cube Map (6면) | 면당 16k |
| Spot | 단일 VSM | 16k |
02
Clipmap 계층
Clipmap 구조 (Directional Light)
[카메라]
|
+-----------+-----------+
| Level 6 | ~64cm |
| Level 7 | ~1.3m |
| Level 8 | ~2.6m |
| ... | |
| Level 22 | ~40km |
+-----------+-----------+
각 레벨: 16k 해상도, 이전 레벨의 2배 반경
03
Clipmap 레벨 설정
범위와 해상도 조절
Clipmap 관련 설정
// Clipmap 레벨 수
r.Shadow.Virtual.Clipmap.LevelCount = 17 // 기본 17 레벨
// 첫 번째 레벨의 반경 (기본 ~64cm)
r.Shadow.Virtual.Clipmap.FirstLevelRadius
// 마지막 레벨의 범위
// = FirstLevelRadius * 2^(LevelCount-1)
// 기본: ~40km
// Clipmap 시각화
r.Shadow.Virtual.Visualize = 1
레벨 수 조절
씬의 최대 그림자 거리에 맞춰 LevelCount를 조절하세요. 불필요하게 높은 레벨은 페이지 풀을 낭비합니다. 소규모 실내 씬에서는 레벨 수를 줄여 메모리를 절약할 수 있습니다.
04
로컬 라이트 VSM
Point/Spot Light의 VSM 구조
로컬 라이트 특성
- Point Light: 6면 Cube Map, 각 면 16k 가상 해상도
- Spot Light: 단일 VSM, 16k 가상 해상도
- Rect Light: Spot과 유사한 단일 VSM
로컬 라이트 VSM 최적화
// 로컬 라이트 VSM 해상도 제한
r.Shadow.Virtual.MaxPhysicalPagesLocal = 512
// 로컬 라이트가 많을 때 페이지 풀 압박
// MegaLights 또는 Shadow Distance로 관리
// 그림자 거리 제한
// Light의 Shadow Max Distance 속성 활용
SUMMARY
핵심 요약
- Directional Light는 Clipmap 구조 사용 (17 레벨)
- 각 레벨 16k 해상도, 이전 레벨의 2배 반경
- Point Light는 6면 Cube Map, Spot Light는 단일 VSM
- Clipmap LevelCount 조절로 메모리 최적화 가능
PRACTICE
도전 과제
배운 내용을 직접 실습해보세요
실습 1: Clipmap 시각화
r.Shadow.Virtual.Visualize = 1로 Directional Light의 Clipmap 레벨을 시각화하고, 카메라 근처에서 먼 거리까지 각 레벨의 해상도 차이를 관찰하세요.
실습 2: 로컬 라이트 VSM 비용
Point Light를 10개, 50개, 100개로 증가시키면서 stat ShadowRendering의 Physical Pages Used를 모니터링하세요. 페이지 풀 압박이 시작되는 라이트 수를 확인하세요.
심화 과제
대규모 오픈월드에서 Clipmap LevelCount를 12, 17, 22로 변경하면서 그림자 커버리지와 메모리 사용량의 트레이드오프를 분석하세요. 프로젝트에 최적인 레벨 수를 결정하세요.