Shadowing

사용할 수 있는 섀도잉 메서드와 지원되는 프로퍼티에 대한 개요입니다.

Choose your operating system:

Windows

macOS

Linux

섀도는 오브젝트가 월드에 기반을 둔 것 같은 느낌을 만들어줍니다. 보는 사람이 깊이감과 공간감을 느끼게 합니다. 섀도잉은 사용 가능한 모든 라이트 타입에서 지원되며 라이트의 모빌리티에 의해 결정됩니다.

지원되는 섀도잉 메서드

라이트가 사용하는 섀도잉 유형은 모빌리티 설정이 스태틱(Static)인지, 스테이셔너리(Stationary)인지, 아니면 무버블(Movable)인지에 따라 결정됩니다. 모빌리티는 라이트맵이라고 하는 텍스처에 라이트가 미리 계산된 섀도를 구울지 아니면 실시간으로 생성된 다이내믹 섀도나 프리컴퓨티드 섀도잉과 다이내믹 섀도잉의 조합을 사용하는 섀도를 캐스트할지를 결정하는 주요 가이드 요소입니다.

라이트의 모빌리티는 레벨의 다른 라이트에 독립적으로 설정할 수 있습니다. 즉, 씬을 밝히는 데 있어 어떠한 모빌리티 조합도 다 사용 가능하다는 이야기입니다.

다음과 같은 섀도잉 메서드를 사용할 수 있습니다.

일부 메서드는 프로젝트 세팅에서 활성화하거나 라이트에서 추가 프로퍼티를 활성화해야 작동합니다.

  • 섀도 매핑

    • 섀도 뎁스 맵에 지오메트리를 렌더링하는 기본 섀도잉 메서드입니다. 이 섀도잉 메서드는 다이내믹 섀도잉을 지원하는 모든 플랫폼에서 작동하지만, 섀도잉 거리를 수동으로 설정해야 하며, 오직 컴포넌트 단위로만 컬링하므로 하이 폴리곤 씬에서는 퍼포먼스가 저하됩니다. 또한, 나나이트 지오메트리도 지원하지 않습니다.

  • 버추얼 섀도 맵

    • 이 섀도잉 메서드는 가상화된 섀도 뎁스 맵에 지오메트리를 렌더링합니다. 간소화된 설정으로 차세대 프로젝트에 맞는 고퀄리티 섀도를 구현합니다. 나나이트 지오메트리와 함께 사용 시 매우 효율적인 컬링이 가능합니다.

  • 레이 트레이싱 섀도

    • 이 메서드는 노이즈 제거 알고리즘과 함께 하드웨어 레이 트레이싱을 사용하여 픽셀당 설정 샘플 수를 추적하여 실시간으로 고퀄리티 레이 트레이싱 섀도를 렌더링합니다.

  • 디스턴스 필드 섀도

  • 라이트매스가 있는 미리 계산된 섀도

    • 이 메서드는 씬의 라이팅 데이터를 사용하여 레벨에서 스태틱 지오메트리에 적용되는 라이트맵 텍스처를 생성합니다. 지오메트리에는 적절한 라이트맵 UV로 추가적인 설정이 필요합니다. 씬을 미리 계산하는 라이팅은 머신 사양과 씬 복잡도, 라이트 빌드에 걸리는 시간을 결정하는 기타 요인에 따라 달라질 수 있습니다.

스태틱 및 스테이셔너리 라이트 프리뷰 섀도잉

모빌리티를 스테이셔너리 또는 스태틱 으로 설정한 라이트를 편집하는 경우, 해당 라이트는 un-built 로 간주됩니다. 프리뷰 섀도잉(Preview Shadowing) 라이팅을 다시 빌드할 때 섀도의 모습이 어떨지에 대한 아이디어를 주지만 최종적으로 구워진 결과를 반영하지는 않습니다.

실제 프리뷰 섀도가 무엇인지 나타내기 위해 이러한 라이트의 섀도가 프리뷰(Preview) 라는 텍스트와 함께 레벨 에디터(Level Editor)에 표시됩니다.

UnbuiltShadows.png

섀도 위의 프리뷰 텍스트는 레벨 에디터에서 작업하는 동안에만 보입니다. 에디터에서 플레이(PIE) 또는 독립형 게임 모드에서 프로젝트를 실행하면, 빌드되지 않은 섀도 위에는 아무런 텍스트도 표시되지 않습니다.

프리뷰 섀도를 해결하려면 라이팅을 빌드해야 합니다. 메인 메뉴에서 빌드(Build) > 모든 레벨 빌드(Build All Levels) 를 선택하여 라이팅 빌드를 시작합니다.

빌드된 씬 섀도

프리뷰 섀도

빌드된 씬 섀도

프리뷰 섀도

프리뷰 섀도는 에디터에서 작업하면서 비활성화할 수 있는데, 레벨 뷰포트의 표시(Show) > 시각화(Visualize) 메뉴에서 프리뷰 섀도 인디케이터(Preview Shadows Indicator) 를 체크 해제하면 됩니다.

라이트의 섀도잉 프로퍼티 환경설정

다음 프로퍼티는 사용할 수 있는 라이트 타입에서 찾을 수 있습니다.

이 프로퍼티들은 레벨에서 라이트 선택 시 디테일(Details) 패널을 통해 이용할 수 있습니다.

디렉셔널 라이트 프로퍼티

스카이 라이트 프로퍼티

포인트 라이트 프로퍼티

스포트 라이트 프로퍼티

렉트 라이트 프로퍼티

디렉셔널 라이트(Directional Light)

스카이 라이트(Sky Light)

포인트 라이트(Point Light)

스포트 라이트(Spot Light)

렉트 라이트(Rect Light)

전체 크기로 보려면 이미지를 클릭하세요.

소스 각도, 반경, 높이 및 너비

각 라이트 타입에는 라이트 소스의 각도나 반경, 높이, 너비를 설정하여 캐스팅할 섀도 크기와 모양을 제어할 수 있는 옵션이 있습니다. 각도, 반경, 높이, 너비가 클수록 해당 라이트의 영향을 받는 오브젝트의 섀도가 부드러워집니다.

아래 예시에서 왼쪽 스포트 라이트에는 소스 반경이 지정되지 않았고 예리한 섀도를 생성합니다. 오른쪽 스포트 라이트에는 보통의 소스 반경이 지정되어 해당 라이트와 오브젝트의 거리에 따라 섀도가 부드러워집니다.

소스 반경 예시

레벨 에디터 뷰포트에서 스포트 라이트를 보면, 해당 라이트의 소스 반경이 오른쪽 스포트 라이트에 노란색 구체로 표시되는 것을 확인할 수 있습니다.

소스 반경 에디터 예시

포인트 라이트, 스포트 라이트, 렉트 라이트에는 모두 편집 중 실시간으로 업데이트되는 눈에 보이는 크기의 소스가 있습니다.

포인트 라이트, 스포트 라이트, 렉트 라이트 소스 크기

포인트 라이트와 스포트 라이트에는 소스 길이(Source Length) 프로퍼티를 통해 소스 반경의 길이를 제어하는 추가 옵션이 있으므로 튜브 라이트와 같은 원통형 라이트 셰이프를 생성할 수 있습니다.

포인트 및 스포트 라이트 소스 길이

어테뉴에이션 반경

포인트 라이트, 스포트 라이트, 렉트 라이트의 어테뉴에이션 반경(Attenuation Radius) 을 사용하면 이 라이트의 영향을 받을 경계 영역을 설정할 수 있습니다. 물리적으로 정확하지는 않지만, 퍼포먼스를 위해 다이내믹 섀도잉 캐스팅 라이트의 경계를 고정하는 것이 중요합니다.

아래 예시에서 왼쪽 스포트 라이트의 어테뉴에이션 반경은 오른쪽보다 작습니다. 라이트가 반경에서 가장 먼 지점 내 영역에만 영향을 주는 모습을 확인해보세요.

라이트 어테뉴에이션 반경 예시

라이트를 선택하면, 어테뉴에이션 반경 거리가 그 영역 내 오브젝트에 주는 영향을 볼 수 있으며, 라이트가 닿지 않는 오브젝트에 섀도가 드리워지지 않는 모습을 볼 수 있습니다.

라이트 어테뉴에이션 반경 에디터 뷰

섀도 캐스팅

섀도 캐스트(Cast Shadow) 는 선택한 라이트가 씬에 섀도를 기여하는지 여부를 제어합니다.

섀도 캐스트 켜고 끄기

왼쪽은 섀도 캐스팅 활성화되어 있고, 오른쪽은 섀도 캐스팅이 비활성화되어 있습니다.

볼류메트릭 섀도잉

체적 산란 강도(Volumetric Scattering Intensity) 를 활성화하면 안개 강도와 라이트 색의 스케일을 조절할 수 있습니다. 강도를 직접 높이지 않고도 라이트가 안개에 더 많이 기여하게 만들 수 있습니다.

씬에 활성화된 경우 라이트는 볼류메트릭 포그에 기여합니다.

볼류메트릭 스캐터링 밀도 를 통해 볼류메트릭 포그에 개별 라이트가 기여하는 정도를 제어할 수 있습니다. 기본적으로 라이트의 볼류메트릭 섀도는 비활성화되어 있지만, 볼류메트릭 포그 캐스트(Cast Volumetric Fog) 를 통해 활성화할 수 있습니다.

볼류메트릭 섀도: 비활성화됨(기본값)

볼류메트릭 섀도: 활성화됨

글로벌 일루미네이션 간접광

글로벌 일루미네이션은 표면을 때리고 공간 내에서 반사되는 라이트로 씬에 간접광을 제공합니다. 공간 내 지상 오브젝트의 표면을 채우는 라이팅과 소프트 에리어 섀도잉을 제공합니다. 언리얼 엔진은 라이트매스로부터 미리 연산된 구워진 글로벌 일루미네이션과 루멘스크린 스페이스 글로벌 일루미네이션을 통해 다이내믹하게 간접광을 지원합니다.

라이트의 모빌리티는 (경우에 따라) 라이트에 기여해야 하는 메서드를 결정합니다.

루멘 글로벌 일루미네이션 예시 씬

루멘 다이내믹 글로벌 일루미네이션으로 리얼타임 간접광을 보여주는 씬입니다.

일부 다이내믹 글로벌 일루미네이션 메서드는 구워진 글로벌 일루미네이션이 있는 루멘 같이 미리 연산된 메서드와 결합할 수 없습니다. 하지만 구워진 글로벌 일루미네이션이 있는 하드웨어 레이 트레이싱을 사용하는 방식처럼 함께 사용할 수 있습니다.

섀도 바이어스

기본 섀도 매핑 메서드를 사용하는 경우, 레벨의 섀도 에셋에 생성된 섀도 맵은 퍼포먼스와 섀도잉 퀄리티 간의 균형을 유지하기 위해 라이트별로 설정됩니다. 섀도 맵에는 커브 지오메트릭 표면의 면내기나 자체 섀도잉 아티팩트 등 몇 가지 한계가 있는데, 이는 라이트의 섀도 바이어스 프로퍼티를 사용하여 조정할 수 있습니다.

섀도 바이어스는 라이트 소스로부터의 컨택트 하드닝 및 자체 섀도잉의 정확도를 개선할 수 있는 라이트별 프로퍼티 세트입니다. 바이어스 세팅은 한 영역에서 정확도 사이의 절충점을 찾는 동시에 다른 영역에서 자체 섀도잉 아티팩트를 줄이는 데 유용합니다.

기본 섀도 바이어스 세팅

조정된 섀도 바이어스 세팅

자세한 정보는 무버블 라이트에서 확인할 수 있습니다.

컨택트 섀도

컨택트 섀도는 라이트에서 채택한 다른 섀도잉 메서드에 더해서 사용하는 라이트별 애디티브 피처입니다. 씬의 뎁스 버퍼를 통해 라이트 소스 방향으로 픽셀의 위치에서 레이를 그리는 스크린 스페이스 이펙트입니다. 따라서, 경우에 따라 섀도 정확도와 컨택트 하드닝을 개선할 수 있지만, 현재 카메라 뷰 안에 무엇이 보이느냐에 따라 제한됩니다.

컨택트 섀도 길이(Contact Shadows Length) 프로퍼티를 사용하여 길이를 정의합니다. 값이 1이면 전체 화면과 같고, 0.5이면 화면의 반이며, 0이면 비활성화된 상태입니다. 값이 낮을수록 노이즈가 감소하며 씬에 따라 더 올바르게 나타날 수 있습니다.

컨택트 섀도 비활성화됨

컨택트 섀도 활성화됨

라이트매스 세팅

라이트의 라이트매스(Lightmass) 세팅은 라이트 모빌리티스태틱 또는 스테이셔너리 로 설정되어 있고 라이팅 빌드가 완료된 경우, 미리 연산된 라이팅에 영향을 줍니다.

이러한 세팅은 디렉셔널 라이트의 소스 각도를 사용하여 구운 섀도의 소프트니스와 이 라이트의 채도가 간접광에 미치는 영향, 섀도 익스포넌트가 있는 섀도 반그림자의 감소를 제어합니다.

머티리얼과 텍스처를 통한 섀도잉

라이트는 라이트 함수IES 라이트 프로필을 사용하여 라이트와 그 섀도의 측면을 추가로 정의할 수 있습니다.

라이트 함수 는 라이트매핑되지 않은 라이트에 적용 가능한 머티리얼 유형으로, 무버블 라이트스테이셔너리 라이트(Stationary Lights) 처럼 라이트의 강도는 필터링하지만 라이트의 색은 필터링하지 않습니다. 또한, 라이트 소스에 애니메이팅된 텍스처를 적용하는 데 사용할 수도 있습니다. 예를 들어, 디렉셔널 라이트로부터 섀도를 드리우며 움직이는 구름을 시뮬레이션할 수 있습니다.

스포트 라이트의 라이트 함수

IES 라이트 프로필 은 현실에서 측정한 데이터를 사용하여 라이트 소스로부터의 라이트 분포를 설명하는 텍스처입니다. 특정 조명 기구에서 발산하는 라이트의 밝기와 감소를 도표로 나타내는 업계 표준 라이팅 메서드입니다.

IES 프로필 예시

디스턴스 필드 섀도잉

메시 디스턴스 필드는 섀도잉부터 인터랙티브 머티리얼 생성과 루멘을 사용한 다이내믹 간접광 및 리플렉션까지 다양한 용도로 사용됩니다.

스태틱 메시의 메시 디스턴스 필드 표현은 디스턴스 필드 섀도 프로퍼티가 활성화된 경우 무버블 라이트 소스로부터 소프트 섀도잉을 생성하는 데 사용됩니다.

이 섀도잉 메서드는 하드웨어 레이 트레이싱버추얼 섀도 맵과 같이 소스 각도나 반경, 크기로 섀도의 반그림자를 제어하는 다른 메서드와 비슷합니다.

섀도 맵 대 디스턴스 필드 섀도

왼쪽은 섀도 맵, 오른쪽은 메시 디스턴스 필드의 섀도입니다.

디렉셔널 라이트

디렉셔널 라이트에는 이 라이트 소스와 관련된 고유 세팅이 포함되어 있으며 방대한 월드 라이팅을 시뮬레이션합니다.

클라우드 및 애트머스피어 섀도잉

라이트의 애트머스피어 및 클라우드 섹션에는 이 라이트 소스가 스카이 애트머스피어볼류메트릭 클라우드와의 인터랙션 방식에 영향을 주는 세팅과 프로퍼티가 있습니다. 태양이 애트머스피어 및 클라우드에 영향을 주거나 클라우드로부터 또는 클라우드 위에 섀도를 캐스팅하거나 섀도 퀄리티를 조정하는 경우를 그 예로 들 수 있습니다.

클라우드 및 애트머스피어 섀도잉

캐스케이드 섀도 맵

캐스케이드 섀도 맵(Cascaded Shadow Maps)은 전체 씬의 다이내믹 섀도잉을 위해 카메라 뷰 프러스텀을 여러 캐스케이드(또는 섀도 레벨 오브 디테일)로 분할합니다. 이렇게 하면 더 먼 거리에 걸쳐 섀도를 최적화하여 필요한 퀄리티를 제공합니다. 즉, 카메라 위치와 가까울수록 퀄리티가 좋아지고 카메라 위치에서 멀어질수록 퀄리티가 낮아집니다.

캐스케이드 섀도 맵 섹션에 있는 세팅으로, 사용할 캐스케이드 수와 최대 거리, 퀄리티 분포 위치, 각 캐스케이드 사이의 트랜지션 위치를 지정합니다.

디렉셔널 라이트로부터의 캐스케이드 섀도 맵

캐스케이드 섀도 맵에는 최대 거리가 지정되어 있습니다. 하지만 최대 거리보다 멀리 있는 커다란 오브젝트의 섀도잉이 필요한 경우, 원경 섀도 캐스케이드(Far Shadow Cascades) 를 사용하여 원거리에 섀도잉 아트를 구현할 수 있습니다. 그렇지만 한 가지 차이점이 있습니다. 그것은 원거리에서 섀도잉할 에셋을 활성화해야 한다는 점입니다. 그러려면 레벨(Level)에서 액터(Actor)를 선택한 다음 해당 에셋에서 원경 섀도(Far Shadow) 를 활성화해야 합니다.

디렉셔널 라이트 원경 섀도

섀도 퍼포먼스 및 최적화 옵션

섀도의 퍼포먼스는 프로젝트에서 채택한 섀도잉 메서드에 따라 크게 달라질 수 있습니다.

이 섹션에서 언급한 프로퍼티는 씬 내 라이팅 최적화의 시작점이며, 특히 기본 섀도잉 매핑처럼 더 비싼 섀도잉 메서드가 있는 다이내믹 라이트의 경우라면 더욱 그렇습니다.

  • 포인트 라이트, 스포트 라이트, 렉트 라이트에 대한 어테뉴에이션 반경(Attenuation Radius) 은 씬 내에서 라이트의 위치를 제어할 뿐 아니라 섀도가 적용될 오브젝트 수를 제한하는 데에도 중요합니다. 이를 통해 몇몇 섀도잉 메서드, 특히 기본 섀도 매핑 메서드에 비용이 많이 들 수 있습니다. 섀도가 씬에 별로 기여하지 않거나, 라이트가 어테뉴에이션 반경이 큰 수많은 오브젝트에 영향을 주거나, 에셋에 지오메트릭 디테일이 많이 있는 경우, * 다이내믹 라이트에서 **섀도 캐스팅(Cast Shadows)** 을 비활성화하면 퍼포먼스가 향상될 수 있습니다. 이는 주로 전통적인 섀도 매핑을 사용하려 라이팅하는 메서드에 영향을 주지만, 프레임 비용을 감소하려면 모든 다이내믹 라이트를 살펴보는 것이 중요합니다.

  • 라이트에서 최대 드로 거리(Max Draw Distance) 를 세팅하면 다이내믹 섀도잉이 기여하는 거리를 해당 지점으로 제한합니다. 씬에서 수많은 중소 규모의 라이트가 한 영역에 영향을 주는 경우, 이런 방식으로 프레임 비용을 줄일 수 있습니다. 최대 드로 거리에 더해 최대 페이드 범위(Max Fade Range) 를 사용하면 시간 흐름에 따라 라이트가 페이드 아웃되므로 갑자기 나타나거나 사라지는 일이 없어집니다.

  • 섀도 맵 섀도잉 메서드는 퀄리티와 퍼포먼스의 균형을 맞춘 결과물입니다. 때때로 퍼포먼스를 희생하여 퀄리티를 조금 높여야 할 때가 있습니다. 섀도 맵 해상도(Shadow Map Resolution) 프로퍼티를 사용하면 선택할 라이트의 섀도 맵을 증가시켜 퀄리티와 퍼포먼스를 절충할 수 있습니다.

  • 하드웨어 레이 트레이싱 섀도를 사용하는 경우, 레이 트레이싱(Ray Tracing) 섹션의 픽셀당 샘플(Samples Per Pixel) 프로퍼티를 조정하여 라이트의 레이 트레이싱 섀도에 더 많은 샘플을 적용할 수 있습니다. 샘플이 적을수록 퀄리티는 떨어지고 퍼포먼스는 향상됩니다. 반면 샘플이 많을수록 (노이즈 제거 알고리즘을 통해 어느 정도까지) 퀄리티는 향상되지만 비용이 증가합니다.