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 : 빛을 미리 라이트 맵에 구워 사용

  • 런타임 도중 밝기, 컬러 등을 변경할 수 없으며, 강제로 변경해도 반영되지 않음

    그림자를 그릴 수 없는 경우

  • 라이트를 굽는 시점에 없던 게임 오브젝트
  • 게임 도중 움직일 수 있는 동적 게임 오브젝트