Global Illumination
- 물체 표면에 직접 들어오는 빛뿐만 아니라 다른 물체의 표면에서 반사되어 들어온 간접광까지 표현
- 매우 높은 처리량 요구
- Realtime Global Illumination
- Baked Global Illumination
- 고정된 오브젝트에만 적용
- 두 설정의 차이는 GI에 반영될 빛이 실시간으로 변할 수 있도록 허용하는지의 여부
- 두 설정 모두 빛이 입혀질 대상이 될 오브젝트들은 고정되어 있어야 함
Realtime Global Illumination
- 빛의 세기, 방향 등이 달라졌을 때 그 변화를 간접광에 실시간으로 반영
- 라이트맵을 여러 방향에 대해 생성
- 여러가지 경우에 대한 빛의 에상 반사 방향과 광원의 예상 이동 경로 등의 정보를 미리 계산하여 저장
- 미리 계산된 정보로 방향 등이 달라져도 간접광이 어떤 방향, 세기로 반사 되어야 하는지 적은 비용으로 추측
- ‘실시간’이더라도 미리 계산해야 하는 정보가 있으므로, 데이터 에셋을 Bake 해야 함
- Percomputed realtime GI 라고 부름
Baked Global Illumination
- 고정된 빛에 의한 간접광들을 라이트맵으로 구워 게임 오브젝트 위에 미리 입힘
- 게임 도중에 실시간으로 변하지 않음
- 갑자기 주변이 밝아지거나 어두워지면 이질감 발생할 수 있음
베이크된 간접 (Baked Indirect) 모드
- 간접광만 구워서 미리 계산
- 직사광과 그림자는 실시간으로 처리
섀도우마스크 (Shadowmask) 모드
- 간접광을 위한 라이트맵 이외에 그림자 맵을 추가로 구워서 사용
- 실시간 그림자와 미리 구워진 그림자가 자연스럽게 합성됨
감산(Subtractive) 모드
- 간접광, 직사광, 그림자까지 하나의 라이트맵에 모두 구워버림
- 실시간 그림자와 미리 구워진 그림자가 자연스럽게 합성되지 않음
- 가장 오버헤드가 적음(성능이 제일 좋음)
Light Component
Realtime : 실시간 빛 연산
-
런타임
에 실시간
라이트 설정이나 위치가 변경되면 오브젝트에 반영
- 실시간으로 움직이거나 생성되는 오브젝트의 그림자도 그릴 수 있음
- Bake된 Light에 비해서 빛 표현, 그림자 질감이 떨어질 수 있음
Mixed : Realtime <=> Bake 사이의 동작을 가짐
- 가볍거나 동적 게임 오브젝트에만 적용할 연산은 실시간
- 무겁거나 정적 게임 오브젝트에만 적용할 연산을 베이크된 라이트로 동작
- 런타임 중 변경 가능 => 실시간으로 연산되는 것들만 변화 반영 됨
동적 (Dynamic)
- 실시간 직사광
- 실시간 그림자
- 그림자 맵을 활용한 실시간 그림자
정적(Static)
- 실시간 직사광
- 라이트맵을 통해 미리 구워진 간접광
- 미리 구워진 그림자
- 그림자 맵을 활용한 실시간 그림자
Baked : 빛을 미리 라이트 맵에 구워 사용
- 런타임 도중 밝기, 컬러 등을 변경할 수 없으며, 강제로 변경해도 반영되지 않음
그림자를 그릴 수 없는 경우
- 라이트를 굽는 시점에 없던 게임 오브젝트
- 게임 도중 움직일 수 있는 동적 게임 오브젝트