빠른 비교
| 방식 | 핵심 | 장점 | 약점 |
|---|---|---|---|
| Baked GI | 미리 계산한 간접광 저장 | 런타임 비용 낮음 | 동적 변화에 약함 |
| Light probe | 위치별 간접광 샘플 | 동적 물체에 적용 쉬움 | 공간 해상도 제한 |
| Screen-space GI | 화면에 보이는 정보 사용 | 적용 쉬움 | 화면 밖 정보 없음 |
| Ray-traced GI | ray로 간접광 추적 | 물리적으로 자연스러움 | 비용과 noise |
| Voxel/clipmap GI | 장면을 볼륨으로 근사 | 동적 GI 가능 | 누수와 해상도 문제 |
구조
직접광은 빛에서 표면으로 바로 들어오는 조명입니다. Global Illumination은 표면에 닿은 빛이 다른 표면에서 반사되어 다시 들어오는 간접광까지 다룹니다.
direct light: light -> surface
indirect light: light -> surface A -> surface B -> cameraGI가 없으면 그림자 영역이 완전히 어둡거나, 색 번짐이 없고, 실내 조명이 부자연스럽게 보일 수 있습니다. GI는 장면의 공간감과 재질감을 크게 좌우합니다.
Baked GI는 정적인 장면의 간접광을 lightmap 같은 texture에 미리 저장합니다. 런타임 비용은 낮지만, 문이 열리거나 조명이 움직이는 변화는 그대로 반영하기 어렵습니다.
light probe는 공간 곳곳에 간접광 샘플을 저장하고, 움직이는 물체가 자기 위치 주변 probe를 보간해 조명을 받게 합니다. screen-space GI는 depth와 color처럼 현재 화면에 있는 정보로 간접광을 추정하므로 적용은 쉽지만 화면 밖 정보가 빠집니다.
ray-traced GI는 ray를 쏴서 다른 표면에서 오는 빛을 직접 추적합니다. voxel이나 clipmap 기반 GI는 장면을 거친 볼륨으로 근사해 넓은 월드의 동적 간접광을 다루지만, 해상도와 light leaking 문제가 생길 수 있습니다.
Irradiance와 radiance
irradiance는 표면으로 들어오는 빛의 양이고, radiance는 특정 방향으로 나가는 빛입니다. IBL에서는 environment map을 적분해 diffuse irradiance나 specular prefilter를 만들어 간접광을 근사합니다.
선택 기준
| 상황 | 먼저 볼 방식 |
|---|---|
| 정적인 배경 | baked lightmap |
| 움직이는 캐릭터의 간접광 | light probe |
| 화면 공간 보강 | SSAO, SSGI |
| 동적 조명과 반사 | ray-traced GI |
| 넓은 실시간 월드 | probe grid, clipmap, hybrid |
GI는 한 가지 기술로 끝나는 기능이 아니라 여러 근사법의 조합입니다. 정적/동적, 실내/실외, 품질/비용 기준을 먼저 나눠야 합니다.
주의할 점
Screen-space GI는 화면에 보이는 정보만 사용합니다. 카메라 밖의 벽이나 가려진 표면에서 오는 간접광은 알 수 없습니다.
Baked GI는 품질이 안정적이지만 동적 물체, 시간 변화, 파괴 가능한 환경에는 별도 보정이 필요합니다.
AO는 접촉부를 어둡게 하는 visibility 근사에 가깝고, GI 전체를 대체하지 않습니다. AO만 강하게 올리면 간접광이 아니라 단순한 때 낀 그림자처럼 보일 수 있습니다.
참고 링크
1 sources