스카이 라이트(Sky Light)는 레벨의 먼 부분을 캡처하여 씬에 라이트로 적용합니다. 즉, 하늘 아래에 애트머스피어 또는 스카이박스 위에 겹겹이 쌓인 구름이 있거나 먼 산이 있더라도 하늘의 외관과 라이팅/리플렉션이 일치하게 됩니다. 사용할 큐브맵을 수동으로 지정할 수도 있습니다.
씬 캡처
스카이 라이트는 특정 상황에서만 씬을 캡처합니다.
- 스태틱 스카이 라이트(Static Sky Lights) 의 경우 라이팅을 빌드할 때 자동으로 업데이트됩니다.
-
스테이셔너리(Stationary) 또는 무버블 스카이 라이트(Movable Sky Lights) 의 경우 로드 시 한 번 업데이트되며 리얼타임 캡처 기능을 활성화하지 않는 한 리캡처(Recapture) 가 호출될 때만 추가로 업데이트됩니다. 둘 다 디테일(Details) 패널을 통해 액세스할 수 있으며, 리캡처는 게임 내 블루프린트를 통해 호출할 수도 있습니다.
디테일 패널 스카이 라이트 리캡처 버튼
스카이박스가 사용하는 텍스처를 변경하면 자동으로 업데이트되지 않습니다. 업데이트하려면 위의 방법 중 하나를 사용해야 합니다.
하늘의 빛을 표현하기 위해서는 앰비언트 큐브맵(Ambient Cubemap) 대신 스카이 라이트를 사용해야 합니다. 스카이 라이트는 하늘의 빛이 실내 영역을 비추는 것을 방지하는 로컬 섀도잉을 지원하기 때문입니다.
모빌리티
다른 라이트 타입과 마찬가지로 스카이 라이트는 다음 모빌리티 중 하나로 설정할 수 있습니다.

모빌리티 | 설명 |
---|---|
스태틱(Static) | 게임 중에 라이팅을 변경할 수 없습니다. 렌더링에 가장 빠른 메서드이며 구운 라이팅이 가능합니다. |
스테이셔너리(Stationary) | 라이팅이 빌드될 때 섀도잉과 라이트 바운스가 스태틱 지오메트리에서만 캡처됩니다. 다른 모든 라이팅은 다이내믹입니다. 또한 이 세팅을 사용하면 게임에서 라이팅의 컬러, 강도, 큐브맵을 변경할 수 있지만 움직이지 않으며, 부분적으로 구운 라이팅이 가능합니다. |
무버블(Movable) | 필요에 따라 게임 내에서 라이팅을 이동하고 변경할 수 있습니다. |
스태틱 스카이 라이트
스카이 라이트를 스태틱 으로 설정하면 레벨의 스태틱 오브젝트에 대한 라이트맵으로 완전히 구워지므로 비용이 전혀 들지 않습니다. 라이트의 프로퍼티를 편집하면 해당 레벨에 대해 라이팅을 다시 빌드할 때까지 변경 사항이 표시되지 않습니다.
스태틱 스카이 라이트를 사용할 때는 모빌리티가 스태틱 또는 스테이셔너리 로 설정된 레벨의 액터와 라이트만 캡처되어 라이팅에 사용됩니다. 또한, 피드백 루프를 피하기 위해 스태틱 스카이 라이트를 사용할 때는 머티리얼의 이미시브 기여도만 캡처할 수 있습니다. 따라서 스카이박스에 언릿 으로 설정된 머티리얼이 있는지 확인하세요.
스테이셔너리 스카이 라이트
스테이셔너리 모빌리티(Stationary Mobility) 로 설정된 스카이 라이트는 라이트매스(Lightmass) 에서 구운 섀도잉을 가져옵니다. 레벨에 스테이셔너리 스카이 라이트를 배치한 후 구운 섀도잉을 가져오려면 라이팅을 한 번 다시 빌드해야 합니다. 그 후에는 다시 빌드하지 않고도 원하는 만큼 스카이 라이트를 변경할 수 있습니다. 라이트매스 가 굽는 스카이 라이트 섀도잉은 벤트 노멀(Bent Normal) 에 디렉셔널 오클루전 정보를 저장합니다.
스태틱 또는 스테이셔너리 모빌리티 로 설정된 컴포넌트와 라이트만 캡처되어 스테이셔너리 스카이 라이트를 사용한 라이팅에 사용됩니다.
모든 타입의 스테이셔너리 라이트 와 마찬가지로 다이렉트 라이팅의 컬러는 블루프린트 또는 시퀀서 를 통해 런타임에 변경할 수 있습니다. 그러나 간접광은 라이트맵에 구워지며 런타임에 수정할 수 없습니다. 간접광의 양은 IndirectLightingIntensity
로 제어할 수 있습니다.


무버블 스카이 라이트
무버블 로 설정된 스카이 라이트는 어떤 형태의 사전 계산도 사용하지 않습니다. 씬을 캡처하도록 구성할 때 모든 모빌리티의 컴포넌트와 라이트를 캡처합니다.
디스턴스 필드 앰비언트 오클루전
이 프로퍼티를 사용하려면 프로젝트 세팅에서 메시 디스턴스 필드를 활성화해야 합니다.
무버블 스카이 라이트에 대한 섀도잉은 각 리지드 오브젝트 주위에 생성되는 '부호 있는 디스턴스 필드 볼륨(Signed Distance Field Volumes)'의 디스턴스 필드 앰비언트 오클루전에 의해 제공됩니다. 디스턴스 필드 앰비언트 오클루전(Distance Field Ambient Occlusion)은 리지드 메시를 이동하거나 숨길 수 있는 다이내믹 씬 변경을 지원하며 오클루전에 영향을 미칩니다.
이미지를 클릭하면 최대 크기로 볼 수 있습니다.
자세한 정보와 예시는 디스턴스 필드 앰비언트 오클루전 사용 방법 페이지를 참조하세요.
프리컴퓨티드(스태틱 또는 스테이셔너리) 스카이 라이트
스태틱 또는 스테이셔너리 스카이 라이트와 함께 구운 라이팅을 사용하는 경우 라이팅 및 섀도잉 데이터가 라이트맵에 저장됩니다. 아래의 섹션은 라이트매스에 의해 지원되는 몇 가지 기능에 대해 설명합니다.
향상된 스태틱 스카이 라이트 방향성
언리얼 엔진 4.18 이전까지 스태틱 스카이 라이트는 일출이나 일몰에 나타날 수 있는 디테일을 캡처하지 못하는 3차 구면 하모닉을 사용하여 라이트매스로 표현되었습니다. 이제 필터링된 큐브맵을 사용하여 기본적으로 더 높은 해상도를 얻을 수 있습니다. 또한 라이트매스는 에일리어싱을 방지하기 위해 파이널 개더(Final Gather) 광선의 크기에 따라 큐브맵 텍스처의 적절한 밉을 선택합니다.
이러한 인터랙션 타입의 예시를 보려면 엔진 콘텐츠(Engine Content) > MapTemplates > Sky 로 이동하여 훌륭한 예시인 SunsetAmbientCubemap 을 선택하세요.


밝기와 컬러 변화가 많은 스카이 라이트 큐브맵을 사용하여 심하게 가려진 씬에서도 볼 수 있다는 점이 가장 큰 차이점입니다.
카메라 옵스큐라
스태틱 스카이 라이트의 향상된 방향성을 통해 이제 충분히 작은 오프닝으로 핀홀 카메라 이펙트 (카메라 옵스큐라)를 재현할 수 있습니다. 오프닝이 작을수록 디렉셔널 스카이 라이트가 많아집니다.
스카이 라이트 소스 큐브맵 | 라이트 빌드 결과 |
이미지를 클릭하면 최대 크기로 볼 수 있습니다. | 이미지를 클릭하면 최대 크기로 볼 수 있습니다. |
스테이셔너리 스카이 라이트에 대한 벤트 노멀
스테이셔너리 스카이 라이트의 경우, 스태틱 및 스테이셔너리 라이팅은 라이트매스를 사용해 무버블과 별도로 구워져 벤트 노멀 에 방향 정보를 저장합니다. 벤트 노멀은 텍셀에서 오클루전이 가장 적은 앰비언트 라이트 소스로의 방향입니다. 가장 오클루전이 많은 영역은 스카이 라이트에 표면 노멀 대신 이 방향을 사용하여 균열의 퀄리티를 향상합니다.


첫 번째 이미지는 앰비언트 오클루전만 있는 스카이 라이트를 보여줍니다. 두 번째 이미지는 벤트 노멀 오클루전이 있는 스카이 라이트를 보여줍니다. 균열의 표면이 라이팅의 소스와 얼마나 '일치'하는지 확인해 보세요.
추가 정보는 벤트 노멀 맵 페이지를 참조하세요.
다수의 라이트 바운스
월드 세팅(World Settings) > 라이트매스(Lightmass)에서 스카이 라이트 반사 수(Num Sky Lighting Bounces) 세팅을 조정하여 스카이 라이트에서 간접광의 다중 바운스를 지원합니다.

사용할 스카이 라이트 바운스 수에 대한 세팅입니다.


다수의 스카이라이트 바운스를 눈에 띄게 만들기 위해서는 머티리얼의 디퓨즈 값이 높아야 하는 경우가 대부분입니다. 예를 들어 디퓨즈 값이 0.18(18% 회색)인 경우 두 번째 스카이라이트 바운스는 라이트 방출 에너지의 18^3 = 0.006에만 기여하며 매우 희미합니다. 디퓨즈 값이 0.5면 두 번째 스카이 라이트 바운스가 라이트 방출 에너지의 0.125에 기여하고 눈에 띄게 됩니다.
바운스가 추가될 때마다 비분산 빌드 시간이 늘어나므로 Swarm 분포를 사용하지 않을 때는 주의해서 사용해야 합니다.
리얼타임 캡처
리얼타임 캡처(Real Time Capture) 모드는 다이내믹 및 스페큘러 환경 라이팅을 제공하여 씬 엘리먼트에 대한 리얼타임 리플렉션을 통해 동적 시간 시뮬레이션을 가능하게 합니다.
이 모드는 스카이 라이트의 모빌리티가 스테이셔너리 및 다이내믹으로 설정되고 스카이 라이트 컴포넌트 디테일 패널에서 리얼타임 캡처 가 활성화된 경우 사용할 수 있습니다.

이 모드는 캡처된 리플렉션 및 섀도잉에 대해 다음 컴포넌트를 지원합니다.
- 스카이 애트머스피어
- 볼류메트릭 클라우드
- 익스포넨셜 하이트 포그
- IsSky 태그가 지정된 언릿 머티리얼이 있는 스카이 돔 메시
이 모드를 사용할 때 추가로 주의해야 할 사항은 다음과 같습니다.
- 볼류메트릭 포그는 지원되지 않습니다.
- 리얼타임 캡처가 작동하려면 씬에 스카이 애트머스피어 컴포넌트가 있어야 합니다. 향후 버전에서는 이러한 요구 사항 없이 리얼타임 캡처가 지원될 예정입니다.
- 메인 뷰에서 메시 렌더링을 비활성화하면 리얼타임 캡처 모드에서만 메시를 렌더링할 수 있습니다.
- 개별 액터에 리얼타임 스카이 캡처에서 표시(Visible in Real Time Sky Captures) 를 활성화하면 리얼타임 캡처의 리플렉션과 비교하여 메인 뷰에 다른 스카이 돔 메시를 사용할 수 있습니다.
- 리얼타임 캡처 모드를 사용하면 클라우드 앰비언트 오클루전(Cloud Ambient Occlusion) 이 활성화된 경우 볼류메트릭 클라우드의 주변 섀도잉을 월드에 드리울 수 있습니다.
- 리얼타임 캡처 모드는 RecaptureSky 블루프린트 노드보다 더 빠르고 효율적입니다. 게임플레이를 멈추거나 느리게 할 수 있는 CPU 처리를 사용하지 않고 모든 계산이 GPU에서 이뤄지기 때문입니다.
- 볼류메트릭 클라우드를 사용하는 경우 사용 중인 클라우드 머티리얼의 복잡도에 따라 퍼포먼스가 크게 달라질 수 있습니다. 볼류메트릭 클라우드 컴포넌트의 리플렉션 샘플 수 스케일(Reflection Sample Count Scale) 및 섀도 리플렉션 샘플 수 스케일(Shadow Reflection Sample Count Scale) 값을 조정하여 씬의 시각적 요소를 유지하면서 퍼포먼스와의 균형을 잡을 수 있습니다.
리플렉션 퀄리티
스카이 라이트에 의해 캡처된 리플렉션의 퀄리티는 큐브맵 해상도(Cubemap Resolution) 프로퍼티에 의해 설정됩니다. 캡처된 씬의 텍스처 해상도를 지정하기 위해 2의 거듭제곱(예: 64, 128, 256 등)을 사용합니다.
해상도 값이 클수록 퍼포먼스는 저하되지만 퀄리티가 향상된다는 점을 명심하세요. 지정된 값은 가장 높은 큐브맵 밉(텍스처의 레벨 오브 디테일)에 적용됩니다.



슬라이더를 드래그하면 감소(64), 디폴트(128), 증가(256)된 스카이 라이트 큐브맵 해상도를 볼 수 있습니다.
이 샷에서는 스크린 스페이스 리플렉션(SSR)이 비활성화되었습니다. 반사는 스카이 라이트의 결과일 뿐입니다.
타임 슬라이싱 최적화
리얼타임 캡처 모드는 타임 슬라이싱(Time Slicing) 이라는 퍼포먼스 최적화를 활용하여 프레임마다 전체 씬 프로세스를 수행하지 않고 캡처된 씬을 여러 프레임에 분산시킵니다. 이 최적화는 전체 프로세스의 리얼타임 캡처가 일부 플랫폼에서 사용하기에는 너무 비용이 높은 이유인 프레임당 비용을 줄입니다.
예를 들어, PlayStation 4에서 스카이 및 볼류메트릭 클라우드가 포함된 128x128x6 HDR 큐브맵을 사용하여 수행된 캡처는 다음과 같습니다(밀리초 단위로 측정).
- 128x128 큐브맵의 프레임당 전체 프로세스 비용은 약 1.465ms입니다(다음과 같이 나뉩니다).
- 스카이 및 클라우드 비용 0.60 ms
- 큐브맵 밉 생성 비용 0.05 ms
- 스페큘러 컨볼루션 비용 0.80 ms
- 디퓨즈 복사도 비용 0.015 ms
- 동일한 프로세스지만 9프레임 타임 슬라이스 에 걸쳐 시간이 분할되면 가장 비용이 많이 드는 단계의 경우 최대 0.20ms의 비용이 발생합니다.
단일 프레임의 캡처를 여러 프레임에 분산하면 타임 슬라이싱 비용의 최댓값이 가장 비싼 프레임의 비용이므로 프로젝트에 적합한 예산 내에서 리얼타임 스카이 라이트 캡처를 유지할 수 있다는 이점이 있습니다. 프레임 예산에 약간의 여유가 있기 때문에 스카이 또는 클라우드의 퀄리티와 같은 다른 영역에서 퀄리티를 높일 수 있다는 뜻이기도 합니다.
타임 슬라이싱은 디폴트로 활성화되어 있지만 r.SkyLight.RealTimeReflectionCapture.TimeSlice
콘솔 명령을 사용하여 설정할 수 있습니다.
무버블 오브젝트로부터의 섀도잉
무버블 오브젝트에서 환경으로의 부드러운 섀도잉은 스켈레탈 메시의 경우 캡슐 섀도 또는 리지드 메시의 경우 디스턴스 필드 간접 섀도잉을 사용하여 구현할 수 있습니다. 제대로 작동하려면 별도의 구성이 필요합니다.
프로퍼티
스카이 라이트 컴포넌트 프로퍼티에는 스카이 라이트와 라이트라는 두 가지 카테고리가 있지만 UI에서는 구별되지 않습니다. 이는 액터 디테일 패널에서 액세스할 수 있습니다. 스카이 라이트 프로퍼티는 스카이 라이트 액터에만 적용되는 반면, 라이트 프로퍼티는 모든 라이트 액터에 공통입니다. 특정 프로퍼티는 아래 표에 나와 있는 고급(Advanced) 섹션을 확장해야만 액세스할 수 있습니다.

프로퍼티 | 설명 | ||||
---|---|---|---|---|---|
스카이 라이트 | |||||
리얼타임 캡처 | 활성화하면 다이내믹 디퓨즈와 스페큘러 라이팅을 구현하기 위해 하늘을 캡처하고 컨볼루션을 진행합니다. 스카이 머티리얼이 있는 스카이 돔과 스카이 애트머스피어(SkyAtmosphere), 볼류메트릭 클라우드 컴포넌트(VolumetricCloud Components)를 고려합니다. | ||||
소스 타입(Source Type) | 멀리 있는 씬을 캡처하여 라이트 소스로 사용할지 아니면 지정된 큐브맵을 사용할지 여부입니다. 씬을 캡처할 때 스카이 라이트 위치에서 SkyDistanceThreshold 거리보다 멀리 떨어진 것들이 모두 포함됩니다.
|
||||
큐브맵(Cubemap) | 소스 타입이 SLS_SpecifiedCubemap으로 설정된 경우 스카이 라이트에 사용할 큐브맵을 지정합니다. | ||||
소스 큐브맵 각도(Source Cubemap Angle) | 소스 타입이 SLS 지정된 큐브맵으로 설정되어 있을 때 소스 큐브맵을 회전할 각도입니다. | ||||
큐브맵 해상도(Cubemap Resolution) | 처리되는 최상단 큐브맵 밉의 최대 해상도입니다. 이 해상도도 2의 거듭제곱이어야 합니다. | ||||
스카이 거리 한계치(Sky Distance Threshold) | 어떤 지오메트리든 스카이의 일부로 취급하는 스카이 라이트와의 거리입니다(리플렉션 캡처에서도 사용됨). | ||||
이미시브만 캡처(Capture Emissive Only) | 이미시브 머티리얼만 캡처합니다. 모든 라이팅을 건너뛰므로 캡처 비용이 절감됩니다. 모든 프레임 캡처(Capture Every Frame)를 사용할 때 권장합니다. 고급 옵션입니다. | ||||
하반구 색은 단색(Lower Hemisphere is Solid Color) | 하반구에서 나오는 모든 라이팅을 0으로 설정할지 여부입니다. 하반구에서의 유출을 방지하는 데 유용합니다. 고급 옵션입니다. | ||||
하반구 색(Lower Hemisphere Color) | 컬러 피커를 사용하여 하반구의 컬러를 선택합니다. 고급 옵션입니다. | ||||
라이트 | |||||
강도 스케일(Intensity Scale) | 라이트가 방출하는 에너지의 총량입니다. | ||||
월드 영향(Affects World) | 라이트가 월드에 영향을 미치는지, 아니면 비활성화 상태인지 여부입니다. | ||||
그림자 드리우기(Cast Shadows) | 라이트가 그림자를 드리울지 여부입니다. | ||||
간접광 강도(Indirect Lighting Intensity) | 이 라이트로 인한 간접광의 스케일을 조절합니다. 값이 0이면 해당 라이트의 모든 글로벌 일루미네이션(Global Illumination, GI)이 비활성화됩니다. | ||||
볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity) | 라이트의 볼류메트릭 스캐터링 강도입니다. 강도와 라이트 컬러의 스케일을 조절합니다. | ||||
스태틱 섀도 드리우기(Casts Static Shadows) | 라이트가 스태틱 오브젝트로부터 섀도를 드리울지 여부입니다. 또한 그림자 드리우기를 True로 설정해야 합니다. 고급 옵션입니다. | ||||
다이내믹 섀도 드리우기(Casts Dynamic Shadows) | 라이트가 다이내믹 오브젝트로부터 섀도를 드리울지 여부입니다. 또한 그림자 드리우기를 True로 설정해야 합니다. 고급 옵션입니다. | ||||
반투명 라이팅 영향(Affect Translucent Lighting) | 라이트가 반투명에 영향을 줄지 여부입니다. 작은 라이트가 많을 경우, 이 값을 비활성화하면 GPU 부하를 줄일 수 있습니다. 고급 옵션입니다. | ||||
투과(Transmission) | 스카이 라이트의 라이트가 서브서피스 스캐터링 프로파일로 표면을 통해 투과되는지 여부입니다. 라이트가 무버블이어야 합니다. 고급 옵션입니다. | ||||
볼류메트릭 섀도 드리우기(Cast Volumetric Shadow) | 라이트가 볼류메트릭 포그에 섀도를 드리울지 여부입니다. 고급 옵션입니다. | ||||
깊은 그림자 드리우기(Cast Deep Shadow) | 라이트가 고퀄리티 헤어 스트랜드 자체 섀도잉을 드리울지 여부입니다. 이 옵션을 활성화하면 이 라이트에 추가 GPU 비용이 적용됩니다. 고급 옵션입니다. | ||||
레이 트레이싱 섀도 드리우기(Cast Ray Traced Shadows) | 라이트 섀도가 섀도 매핑 또는 레이 트레이싱으로 연산되는지 여부입니다. 고급 옵션입니다. | ||||
레이 트레이싱 리플렉션 영향(Affect Ray Tracing Reflections) | 레이 트레이싱 리플렉션이 활성화되었을 때 라이트가 리플렉션에서 오브젝트에 영향을 줄지 여부입니다. 고급 옵션입니다. | ||||
레이 트레이싱 글로벌 일루미네이션 영향(Affect Ray Traced Global Illumination) | 레이 트레이싱 글로벌 일루미네이션이 활성화되었을 때 라이트가 글로벌 일루미네이션에 영향을 줄지 여부입니다. 고급 옵션입니다. | ||||
깊은 섀도 레이어 분포(Deep Shadow Layer Distribution) | 깊은 섀도 레이어 분포를 변경합니다. 0: 선형적(균등한 레이어 분포), 1: 지수 함수적(가까이 있는 작은 섀도에 디테일 추가). 깊은 그림자 드리우기가 활성화되어 있어야 합니다. 고급 옵션입니다. | ||||
애트머스피어 및 클라우드 | |||||
클라우드 앰비언트 오클루전(Cloud Ambient Occlusion) | 클라우드가 애트머스피어 내에서 스카이 기여도를 가릴지(점진적으로 다중 스캐터링을 페이드 아웃) 여부입니다. | ||||
클라우드 앰비언트 오클루전 강도(Cloud Ambient Occlusion Strength) | 앰비언트 오클루전의 강도입니다. 값이 클수록 빛을 더 차단합니다. | ||||
클라우드 앰비언트 오클루전 규모(Cloud Ambient Occlusion Extent) | 카메라 주위 클라우드 앰비언트 오클루전 맵의 월드 스페이스 반경으로, 킬로미터(km) 단위입니다. | ||||
클라우드 앰비언트 오클루전 맵 해상도 스케일(Cloud Ambient Occlusion Map Resolution Scale) | 클라우드 앰비언트 오클루전 맵 해상도를 조절합니다. r.VolumetricCloud.ShadowMap.MaxResolution 으로 해상도의 범위가 제한됩니다. |
||||
클라우드 앰비언트 오클루전 조리개 스케일(Cloud Ambient Occlusion Aperture Scale) | 볼류메트릭 클라우드가 평가될 때 스카이 오클루전의 원뿔 조리개 각을 제어합니다. 값이 1이면 전체 반구를 고려하므로 오클루전이 흐릿해집니다. 값이 0이면 단일 오클루전 방향(수직)을 고려하므로 오클루전이 선명해집니다. |
제한 사항
이러한 기능은 스카이 라이트에 유용하지만 아직 구현되지 않았습니다.
- 무버블 오브젝트(캐릭터)에서 환경으로의 부드러운 그림자는 스카이 라이트와 통합되지 않으며 현재 추가 렌더링 비용을 들여 별도의 기능을 구현해야 합니다.
- SkyLightComponent 블루프린트 함수 RecaptureSky()를 사용할 수 있지만 처리 비용이 많이 들고 최소 120ms가 필요하므로 게임플레이가 멈추거나 느려집니다.