Unity는 실시간 GI에 인라이튼이라는 미들웨어를 사용합니다.
기본적으로 실시간 광원은 직접 조명만 씬에 제공합니다. 씬에서 실시간 전역 조명(실시간 GI)을 활성화한 경우 실시간 광원은 씬에 실시간 간접 조명도 제공합니다.
실시간 GI는 천천히 변하고 씬에 높은 시각적 영향을 미치는 광원(예: 하늘을 가로지르는 태양, 닫힌 복도에서 천천히 약동하는 빛)을 구현할 때 유용합니다. 실시간 GI는 성능 부하와 지연 문제로 인해 빠르게 변하는 광원이나 특수 효과에는 부적합합니다.
실시간 GI는 중급 사양과 고사양의 PC 시스템과 콘솔을 위한 게임을 만드는데 적합합니다. 일부 고사양 모바일 기기도 이 기능을 사용할 만큼 성능이 뛰어날 수도 있지만, 시스템 리소스를 아끼기 위해 씬을 작게 유지하고 실시간 라이트맵의 해상도를 낮게 유지해야 합니다.
씬에서 실시간 GI를 활성화하려면 Lighting 창(메뉴: Window > Rendering > Lighting Settings)을 열고 Realtime Global Illumination 을 활성화합니다.
특정 광원의 Realtime GI 효과를 비활성화하려면, Light 컴포넌트의 광원 게임 오브젝트를 선택한 다음 Indirect Multiplier 를 0으로 설정합니다. 이것은 광원이 씬에 간접광을 전혀 제공하지 않음을 의미합니다.
실시간 GI 를 완전히 비활성화하려면 Lighting 창(메뉴: Window > Rendering > Lighting Settings)을 열고 Realtime Global Illumination 을 선택 해제합니다.
실시간 GI 사용에 대한 단계별 상세 정보는 사전에 계산된 실시간 GI에 대한 Unity 튜토리얼을 참조하십시오.
Unity 에디터에서 인라이튼은 씬을 작은 표면 패치로 분할하고, 이러한 패치가 서로에게 보이는 정도를 결정합니다. 런타임 시점에 인라이튼은 이러한 미리 계산된 가시성 정보를 사용하여 실시간 광원이 씬에서 바운스되는 정도를 근사화하고, 결과를 라이트맵 세트에 저장한 후 이 라이트맵을 사용하여 씬에 간접 조명을 적용합니다.
라이트맵 업데이트에는 계산 성능이 많이 소모되므로, 이러한 프로세스는 여러 프레임으로 분할됩니다. 즉 인라이튼이 간접 조명 변경 사항을 씬 전체에 전파하는 데는 여러 프레임이 소요됩니다.
실시간 GI를 활성화하면 라이트 프로브가 다른 방식으로 동작합니다.
씬에서 실시간 GI를 활성화하면 런타임 시점에 라이트 프로브는 조명을 반복적으로 샘플링합니다. 즉 씬 조명의 실시간 변경 사항에 대해 반응합니다.
씬에서 실시간 GI를 비활성화하면 라이트 프로브는 베이크된 조명 데이터만 사용합니다. 즉 씬 조명의 런타임 변경 사항에 대해 반응하지 않습니다.
광원이 섀도우를 캐스트하면 Unity는 씬의 동적 게임 오브젝트와 정적 게임 오브젝트를 모두 광원의 그림자 맵에 렌더링합니다. 그러면 정적 게임 오브젝트와 동적 게임 오브젝트 모두의 머티리얼 셰이더가 섀도우 맵을 샘플링하며, 서로에게 실시간 그림자를 드리웁니다. Shadow Distance(메뉴: Edit > Project Settings 로 이동한 다음 Quality 카테고리를 선택하고 Shadows 섹션으로 이동)는 그림자가 사라지기 시작하여 완전히 사라지는 최대 간격을 조정하며, 이것은 성능과 이미지 품질에 영향을 미칩니다.
또한 실시간 GI는 소프트 섀도우를 생성하지만, 씬이 매우 작은 경우를 제외하고는 대개 라이트매핑이 구현할 수 있는 것보다 조금 더 거칠게 보입니다.
인라이튼은 실시간 간접 바운스를 저장하기 위해 추가 라이트맵 세트를 사용하므로 실시간 GI는 메모리 요구 사항을 증가시킬 수 있습니다.
또한 인라이튼이 추가 라이트맵 및 프로브 세트를 샘플링하므로 실시간 GI는 셰이더 계산도 증가시킵니다.
실시간 GI가 씬 조명 변경에 빠르게 응답하지 않으면 다음과 같은 여러 방법으로 이 문제를 해결할 수 있습니다.