실시간 광원은 모드(Mode) 프로퍼티가 실시간(Realtime) 으로 설정된 광원(Light) 컴포넌트입니다.
프로퍼티를 변경해야 되거나 게임플레이 중 스크립트를 통해 스폰해야 되는 광원은 Realtime 모드를 사용합니다. Unity는 이러한 광원의 조명을 런타임 중 프레임마다 계산하고 업데이트합니다. 플레이어가 취하는 행동 또는 씬에서 벌어지는 사건에 대응하여 바뀔 수 있습니다. 예를 들어, 꺼지고 켜지게(깜박이는 전등과 같이) 설정하거나 트랜스폼을 변경(횃불을 어두운 방에서 들고 다니는것 같이)하거나 컬러와 강도 같은 비주얼 프로퍼티를 바꿀 수 있습니다.
실시간 광원은 정적 게임 오브젝트와 동적 게임 오브젝트 모두에 사실적인 섀도우를 비춰주고 캐스트합니다. Shadow Distance(Edit > Project Settings > Quality 에서 정의됨)까지 섀도우를 캐스트할 수 있습니다.
또한 실시간 조명을 Realtime Global Illumination(Realtime GI)과 합쳐서 정적 게임 오브젝트와 동적 게임 오브젝트에 간접 조명 효과를 주게 할 수 있습니다.
실시간 조명을 Realtime GI 와 합쳐서 사용하는 옵션은 Unity에서 가장 유연하며 사실적인 조명 옵션입니다. 실시간 GI를 활성화하려면, 조명 창 (메뉴: Window > Lighting > Settings)을 연 후에 Realtime Global Illumination 에 체크 표시합니다.
Realtime GI 이 활성화되면, 실시간 광원은 직접 조명뿐 아니라 씬에 간접 조명 효과를 제공합니다. 이 조합은 태양이 하늘을 가로질러 이동하거나 밀폐된 통로에서 느리게 진동하는 광원과 같이 천천히 변화하며 씬에 큰 시각적 효과를 주는 광원 소스에 사용합니다. 시스템의 지연 시간으로 인한 오버헤드가 그만큼의 가치가 없기 때문에 Realtime GI 을 빠르게 변화하는 광원 또는 특수 효과에 사용할 필요는 없습니다.
실시간 GI 은 덜 복잡한 베이크된 GI 에 비해 현저히 많은 시스템 리소스를 사용한다는 점에 유의하십시오. Unity에서 전역 조명은 Enlighten이라는 미들웨어에 의해 관리되는데, Enlighten은 그 자체의 오버헤드(시스템 메모리 및 CPU 주기)를 가집니다. 자세한 내용을 보려면 전역 조명을 참조하십시오.
실시간 GI 은 중급 사양과 고사양의 PC 시스템과 PS4 및 Xbox One과 같은 현세대 콘솔을 위한 게임을 만드는데 적합합니다. 일부 고사양 모바일 디바이스도 이 기능을 사용할 만큼 성능이 뛰어날 수도 있지만, 시스템 리소스를 아끼기 위해 씬을 작게 유지하고 실시간 라이트맵의 해상도를 낮게 유지해야 합니다.
특정 광원의 실시간 GI 효과를 비활성화하려면, 광원(Light) 컴포넌트의 광원 게임 오브젝트를 선택한 다음 간접 멀티플라이어(Indirect Multiplier) 를 0으로 설정합니다. 이것은 광원이 간접광을 전혀 제공하지 않음을 의미합니다. 실시간 GI 을 완전히 비활성화하려면 조명 창(메뉴: 창(Window) > 조명(Lighting) > 설정(Settings))을 연 후에 실시간 전역 조명(Realtime Global Illumination) 을 체크 해제합니다.
Enlighten 조명 시스템에서 계산한 실시간 인다이렉트 바운스를 저장하기 위해 사용하는 추가 저해상도 실시간 라이트맵 세트 때문에 메모리 요구 사항이 높아집니다.
Enlighten 라이팅 시스템에서 계산한 실시간 간접 바운스를 저장하기 위해 사용하는 추가 실시간 라이트맵과 프로브의 샘플링 때문에 셰이더 산출 요구 사항이 높아집니다.
간접 조명은 시간이 지남에 따라 한 곳으로 수렴하기 때문에, 프로퍼티 변화가 너무 급격하면 안됩니다. 적응적 HDR 톤 맵핑을 이용하면 이러한 문제를 숨길 수 있습니다. 자세한 내용은 Unity 포스트 프로세싱 스택(에셋 스토어)을 참조하십시오.
실시간 광원(Light 컴포넌트 Mode 가 Realtime 으로 설정된)의 경우, 표면에서 광원까지의 마지막 이미션(또는 경로 세그먼트)은 미리 계산되지 않습니다. 이것은 광원이 씬에서 움직일 수 있으며 컬러와 강도 같은 비주얼 프로퍼티를 변경할 수 있음을 의미합니다. 경로 세그먼트에 대한 자세한 내용을 보려면 Unity에서 Enlighten 사용 문서를 참조하십시오.
광원이 섀도우를 캐스트하면, 씬의 동적 게임 오브젝트와 정적 게임 오브젝트 모두 광원의 섀도우 맵에 렌더링됩니다. 섀도우 맵은 정적 게임 오브젝트와 동적 게임 오브젝트 모두의 머티리얼 셰이더에서 샘플링되며, 이것은 서로에게 실시간 섀도우를 캐스트하기 위함입니다. Shadow Distance(메뉴: Edit > Project Settings > Quality > Shadows)는 섀도우가 사라지기 시작하여 완전히 사라지는 최대 간격을 조정하며, 이것은 성능와 이미지 품질에 영향을 미칩니다.
Realtime GI 이 활성화되지 않았다면, 실시간 광원은 동적 게임 오브젝트와 정적 게임 오브젝트의 직접 조명만 계산합니다. Realtime GI 이 활성화되었다면, Unity는 Enlighten을 사용하여 정적 게임 오브젝트의 표면에서 표면으로의 광원 경로를 미리 계산합니다.
미리 계산된 실시간 GI 모드: Unity는 표면에서 표면으로의 정보만 미리 계산합니다.
마지막 경로 세그먼트(표면에서 광원 이미터로의 세그먼트)는 사전 계산의 일부가 아닙니다. 표면에 광원이 비춰진 경우에 뒤따르는 표면과 프로브 또한 광원이 비춰지며, 유일하게 저장되는 정보는 다양한 조명의 강도입니다. Enlighten이 실시간 라이트맵을 런타임 중에 CPU에 반복적으로 업데이트하는 별도의 저해상도 실시간 라이트맵이 있습니다. 이 반복적 프로세스는 계산집약적이기 때문에 여러 프레임으로 나눠집니다. 다시 말해, 광원이 씬의 모든 정적 요소에 완전히 반사되고 실시간 라이트맵과 라이트 프로브 최종 결과로 수렴하려면 한두 개의 프레임이 소요됩니다.
천천히 변화하는 프로퍼티(광원을 발산하는 해가 하늘 위를 지나는 것과 같은)를 가진 광원의 경우, 이것은 문제가 되지 않습니다. 하지만, 빠르게 변화하는 프로퍼티(깜빡이는 전구와 같은)의 경우에, 실시간 GI 의 반복적 성향은 적합하지 않을 수 있습니다. 빠른 프로퍼티 변화는 반사광 시스템에 별다른 영향을 주지 않으므로, 산출에 포함시킬 이유가 없습니다.
이 문제를 해결할 수 있는 방법은 여러가지입니다. 하나는 실시간 라이트맵 해상도를 줄이는 방법입니다. 더 많은 CPU 타임을 할당함으로써 런타임 산출은 더 빨리 수렴하게 됩니다. 이렇게 하면 런타임 중 더 적은 계산을 하기 때문에, 조명이 더 빨리 수렴합니다. 다른 옵션으로는 실시간 GI 런타임을 위한 CPU 사용 설정을 늘리는 방법입니다. 이렇게 하면 물론 다른 시스템이 작동 하기 위한 CPU 시간이 줄어듭니다. 그래도 괜찮은지는 개별적인 프로젝트에 따라 다릅니다. 이것이 씬별 설정이기 때문에, 사용자는 프로젝트에서 개별적인 씬의 복합성에 따라 CPU 시간을 더 많이 할당하거나 줄일 수 있다는 점에 유의하십시오.
실시간 GI 이 모든 실시간 광원에 대해 씬당 기반으로 활성화되어 있기는 하지만, 여전히 실시간 GI 이 개별적인 실시간 광원을 고려하지 않도록 방지할 수 있습니다. 이렇게 하려면, 광원(Light) 컴포넌트의 모드(Mode) 를 실시간(Realtime) 으로 설정하고 간접 멀티플라이어(indirect multiplier)를 0으로 설정하여 모든 간접광 기여를 제거합니다.
2017–06–08 일부 편집 리뷰를 거쳐 페이지 게시됨
Unity 5.6에 추가된 광원 모드