Version: 5.6
실시간 조명
베이크된 간접 모드

혼합 조명

혼합 광원을 사용하려면 광원(Light) 컴포넌트에서 모드(Mode) 프로퍼티를 혼합(Mixed) 으로 설정해야 합니다.

혼합 광원은 런타임 시점에 트랜스폼 및 비주얼 프로퍼티(예: 컬러 또는 강도)를 변경할 수 있지만, 엄격한 제한이 따릅니다. 혼합 광원은 정적 게임 오브젝트와 동적 게임 오브젝트 모두에 조명을 비추고, 직접 조명은 항상 제공하고, 간접 조명은 필요에 따라 제공합니다. 혼합 광원에서 빛을 받는 동적 게임 오브젝트는 항상 다른 동적 게임 오브젝트에 실시간 그림자를 드리웁니다.

씬의 모든 혼합 광원은 같은 혼합 조명 모드 를 사용합니다. 조명 모드 를 설정하려면 조명 창(메뉴: 창(Window) > 조명(Lighting))을 열고 씬(Scene) 탭을 클릭한 다음 혼합 조명(Mixed Lighting) 섹션으로 이동합니다.

조명 창의 혼합 조명(Mixed Lighting) 섹션
조명 창의 혼합 조명(Mixed Lighting) 섹션

사용할 수 있는 모드 다음과 같습니다.

혼합 광원 사용

혼합 조명은 게임플레이의 일부가 되는 광원에는 적합하지 않고 정적 환경을 밝혀주는 광원(예를 들어 하늘에서 움직이지 않는 태양)에 유용합니다. 혼합 광원에서 전달되는 직접 조명은 여전히 런타임 시점에 연산되므로 정적 메시의 머티리얼은 완전한 물리적 기반 셰이딩(PBS)을 지원하는 것은 물론 시각적 정확성을 유지합니다.

혼합 광원 예
혼합 광원 예

Distance Shadowmask__는 가장 많은 자원이 요구되는 옵션이지만 가장 좋은 결과를 만들어 낼 수 있습니다. Shadow Distance(Edit__ > Project Settings > Quality > Shadows) 이내와 고품질 베이크된 섀도우 이상에서 고품질 섀도우를 생성합니다. 예를 들어, 사용자는 태양이 하늘에서 움직이지 않는 한, 수평선 바로 앞까지 사실적인 대단위 풍경을 생성할 수 있습니다.

감산 모드는 가장 낮은 품질의 결과를 가져옵니다. 이 모드에서는 단 하나의 광원에 대한 그림자만 실시간으로 렌더링하며, 그림자를 베이크된 직접 조명 및 간접 조명과 함께 합성합니다. 이 모드는 원하는 플랫폼에서 다른 모드를 사용하지 못할 때(예를 들어 애플리케이션을 저사양 모바일 기기에서 구동해야 하지만 메모리 제한 때문에 섀도우 마스크 또는 디스턴스 섀도우 마스크 를 사용하지 못할 때)에만 최후의 대안으로 사용해야 합니다.

Unity 조명 모드 레퍼런스 카드에서 여러 모드의 요약 비교표를 살펴볼 수 있습니다.

모든 혼합 조명 모드는 모든 플랫폼에서 지원합니다. 하지만 다음과 같은 렌더링 제한이 있습니다.

  • 감산 모드는 포워드 렌더링(디퍼드 또는 광원 프리패스 지원되지 없음)으로 돌아갑니다.

  • Shadowmask__와 Distance Shadowmask__ 모드는 DirectX 9과 같은 4개의 렌더 타겟만 지원하는 플랫폼에서 포워드 렌더링(RenderTech-ForwardRendering)(디퍼드 또는 광원 프리패스 지원 없음)으로 돌아갑니다.

포워드 렌더링과 디퍼드 렌더링에 대해 자세하게 알아보려면 렌더링 경로 문서를 참조하십시오.

고급 사용

혼합 광원은 런타임 시점에 트랜스폼 및 비주얼 프로퍼티(예: 컬러 또는 강도)를 변경할 수 있지만, 엄격한 제한이 따릅니다. 실제로 일부 조명은 베이크되어 있고 따라서 미리 계산되기 때문에, 파라미터를 런타임 시점에 변경하면 실시간 조명과 미리 계산된 조명을 합성할 때 일관성이 없는 결과가 나옵니다.

Shadowmask__와 Distance Shadowmask, Baked Indirect__의 경우 직접 조명의 영향이 Realtime 광원과 똑같기 때문에, 광원의 컬러, 강도, 심지어는 트랜스폼과 같은 파라미터까지 변경할 수 있습니다. 하지만 베이크된 값은 미리 계산되기 때문에 런타임 중에 변경할 수 없습니다.

예를 들어 빨간색 혼합 광원을 라이트맵에 베이크하고 런타임 시점에 빨간색에서 녹색으로 컬러를 바꾸면 모든 직접 조명이 녹색으로 바뀝니다. 하지만 모든 간접 조명은 라이트맵에 베이크되어 있으므로 빨간색으로 유지됩니다. 혼합 광원을 런타임 시점에 이동하는 경우에도 마찬가지입니다. 직접 조명은 광원을 따라가지만, 간접 조명은 광원이 베이크된 위치에 그대로 남습니다.

직접 조명에 아주 작은 변화(예를 들어, 광원의 색조 강도에 경미한 수정)만 주는 경우, Realtime 광원을 처리하는 데 필요한 추가 시간 없이 간접 조명의 이점을 살리고 광원이 다소 동적으로 보이게 할 수 있습니다. 간접 조명은 여전히 정확하진 않지만, 오차가 문제가 되지 않을 만큼 작을 수도 있습니다. 이것은 특히 미리 계산된 섀도우 정보가 없는 광원에 유용합니다. 광원의 섀도우를 없애거나 섀도우가 실시간인 경우에 베이크된 간접 모드를 사용하여 이렇게 할 수 있습니다. 섀도우 마스크가 직접 조명 계산의 일부이기 때문에, 그러한 광원을 움직이면 섀도우가 올바로 정렬되지 않는 시각적 불일치가 발생합니다.

다음 비디오에서는 혼합 광원이 베이크된 지점에서 너무 멀리 이동할 때 어떠한 일이 벌어지는지 예를 통해 설명합니다. 오브젝트가 멀어짐에도 불구하고 벽 위의 빨간색 간접광이 그대로 남아 있습니다. https://youtu.be/o6pVBqrj8-s

다음 비디오에서는 눈에 띄는 불일치를 초래하지 않으면서 간접 조명으로 혼합 광원을 살짝 수정하는 방법을 설명합니다. https://youtu.be/XN6ya31gm1I

기술 세부 정보

혼합 광원의 경우, 광원 경로의 마지막 세그먼트(광원에서 표면으로의 경로)는 사전 계산의 일부가 됩니다. 하지만, Unity는 여전히 직접 조명과 간접 조명을 따로 처리합니다. 간접 조명은 라이트맵과 라이트 프로브로 베이크하고, 그런 후에 런타임 중에 샘플링합니다. 간접 조명은 보통 저주파이며, 이는 섀도우나 광원의 자세한 변화를 포함하지 않아 매끈함을 의미합니다. 그러므로 섀도우는 직접 조명으로 처리되며 큰 시각적 효과가 있습니다.

그림자가 미리 계산되고 저장되는 방식의 차이는 혼합 광원의 다양한 하위 모드에 반영됩니다.

그림자 정보를 미리 계산하여 섀도우 마스크에 저장할 수 있습니다. 섀도우 마스크는 UV 레이아웃과 해상도가 해당 라이트맵과 동일한 텍스처입니다. 텍셀당 4개 이하의 광원(최신 GPU에서 텍스처가 4채널 이하로 제한되므로)에 대한 오클루전 정보가 저장됩니다. 값 범위는 0부터 1까지이며, 0과 1 사이의 값은 부드러운 그림자 영역을 나타냅니다.

섀도우 마스크가 활성화되었다면 라이트 프로브 또한 오클루전 정보를 최대 4개의 광원까지 저장합니다. 4개 이상의 광원이 겹치면 초과 광원은 베이크된 광원으로 돌아갑니다. 이러한 동작은 섀도우 마스크 오버랩 시각화 모드로 검사할 수 있습니다. 이 정보는 미리 계산되므로, Unity가 섀도우 마스크에 저장하는 유일한 섀도우는 정적 게임 오브젝트에서 다른 정적 게임 오브젝트로 캐스트되는 섀도우뿐입니다. 이러한 섀도우는 라이트맵 해상도에 따라 실시간 섀도우 맵보다 더 나은 품질의 매끄러운 가장자리를 가지게 됩니다. 각각의 광원 조명이 섀도우 마스크 채널 맵핑을 런타임 중에 유지하기 때문에, 동적 게임 오브젝트에서 섀도우 맵으로 캐스트하는 섀도우는 정적 게임 오브젝트로부터 미리 계산된 섀도우와 올바르게 합성될 수 있으며 더블 섀도우와 같은 불일치를 피할 수 있습니다.

정적 게임 오브젝트의 그림자와 동적 게임 오브젝트의 그림자 사이에 인지할 수 있는 차이점은 미리 계산된 섀도우 마스크와 런타임 섀도우맵의 해상도와 필터링 차이, 그리고 미리 계산된 그림자가 다양한 형태의 면 광원을 지원하므로 부드러운 그림자에 더 사실적인 반그림자가 포함될 수 있다는 것밖에 없습니다.

이 그림에서 베이크된 섀도우 마스크 해상도는 실시간 그림자 해상도와 비슷합니다
이 그림에서 베이크된 섀도우 마스크 해상도는 실시간 그림자 해상도와 비슷합니다
이 그림에서 베이크된 섀도우 마스크 해상도는 실시간 그림자 해상도보다 훨씬 낮습니다
이 그림에서 베이크된 섀도우 마스크 해상도는 실시간 그림자 해상도보다 훨씬 낮습니다

Subtractive 모드를 제외한 모든 혼합 모드의 공통점은 광원 방향을 요구하는 모든 머티리얼 효과가 계속해서 적용되도록, 직접 조명이 항상 실시간으로 계산되며 라이트맵에 저장된 간접 조명에 더해진다는 것입니다. 동적 게임 오브젝트는 광원에 대한 섀도우가 활성화된 경우에는 항상 다른 동적 게임 오브젝트에 Shadow Distance(Edit > Project Settings > Quality > Shadows)의 섀도우 맵을 통해 섀도우를 캐스트합니다.

베이크된 간접 모드: 간접 조명만 미리 계산됨
베이크된 간접 모드: 간접 조명만 미리 계산됨
섀도우 마스크 및 디스턴스 섀도우 마스크 모드: 간접 조명과 직접 오클루전이 미리 계산됨
섀도우 마스크디스턴스 섀도우 마스크 모드: 간접 조명과 직접 오클루전이 미리 계산됨
감산 모드: 모든 광원 경로가 미리 계산됨
감산 모드: 모든 광원 경로가 미리 계산됨

실시간 조명
베이크된 간접 모드
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961