언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

레이 트레이스 디스턴스 필드 소프트 섀도우

언리얼 엔진

DistanceFieldShadowing_Header.jpg

이 페이지의 내용:

무버블 라이트 소스에서의 그림자는 각 스태틱 메시의 오브젝트 디스턴스 필드를 사용하여 다이내믹 라이트 소스에서 효율적인 에리어 섀도우를 계산하는 식으로 제공됩니다. 언리얼 엔진 4 (UE4) 에서 이는 Ray Traced Distance Field Shadows (레이 트레이스 디스턴스 필드 섀도우, RTDF) 라 합니다. 그림자 계산을 위해 그림자를 받을 점에서 각 라이트 방향 씬의 Signed Distance Fields (부호화 디스턴스 필드, SDF)를 통해 레이 트레이싱을 합니다. 차폐된 오브젝트까지 가장 가까운 거리를 사용하여 레이 트레이싱과 거의 같은 비용으로 콘 트레이싱을 추정합니다. 구면 광원 모양에서 높은 퀄리티의 에리어 섀도우를 얻을 수 있습니다.

씬 구성

이 기능은 프로젝트 세팅Rendering (렌더링) 섹션의 Generate Mesh Distance Fields (메시 디스턴스 필드 생성) 옵션을 켜야 합니다. 자세한 정보는 메시 디스턴스 필드NEW! 문서를 참고하세요.

레이 트레이스 디스턴스 필드 섀도잉을 켜려면, 라이트 를 끌어 씬에 놓고 모빌리티를 무버블 로 설정한 뒤 라이트 디테일 패널에서 Ray Traced Distance Field Shadows (레이 트레이스 디스턴스 필드 섀도우) 옵션을 켜면 됩니다.

DirectionalLightDFSettings1.png

단계별 안내서는 레이 트레이스 디스턴스 필드 소프트 섀도 사용법NEW! 문서를 참고하세요.

에리어 섀도잉 세팅

각 라이트 유형은 디스턴스 필드 섀도우를 사용하여 소프트 에리어 섀도우를 만들 수 있습니다. 이 그림자는 선명하게 접한 그림자는 바탕에 가깝게 유지하고 멀어질 수록 그림자를 연하게 만드는 식으로 현실의 그림자를 흉내냅니다.

Traditional Shadow Map

Distance Field Shadow

라이트 소스 세팅 관련 자세한 정보와 예제는, 메시 디스턴스 필드 세팅 참고서NEW! 문서를 참고하세요.

포인트 및 스포트 라이트 소스 반경

포인트 및 스포트 라이트의 경우, Source Radius (소스 반경)을 사용하여 라이트의 그림자 반그늘 크기를 결정합니다. 에리어 섀도우는 접점에서 선명했다가 긴 거리에 늘어지면서 부드러워지는 식으로 계산됩니다. 포인트 및 스포트 라이트에서는, 노랑 구체로 표현됩니다.

LightSourceVis.jpg

에디터에서 라이트의 소스 모양을 노랑 선으로 그립니다.

라이티의 소스 반경 구체는 씬과 교차되지 않아야 하며, 그렇지 않으면 라이팅 부작용이 생깁니다.

Source Radius: | 0

Source Radius: | 50

포인트 라이트에서 나온 레이 트레이스 디스턴스 필드 섀도우에 소스 반경을 사용하여 출입구, 벤치, 피아노가 주면 지오메트리에 드리우는 그림자를 부드럽게 하고 있습니다.

씬을 이동하는 포인트 라이트가 각각의 메시에서 에리어 섀도우를 드리우는 데모입니다.

포인트 및 스포트 라이트 세팅 관련 자세한 정보는 메시 디스턴스 필드 세팅 참고서NEW! 문서를 참고하세요.

디렉셔널 라이트 소스 앵글

디렉셔널 라이트의 경우, Light Source Angle (라이트 소스 앵글)을 사용하여 라이트의 그림자 반그늘 크기를 결정합니다. 레이 트레이스 섀도우에는 자체적으로 교차되는 문제가 매우 적어 전통적인 섀도우 매핑 방식이라면 발생할 원거리의 누수나 편향치가 과한 문제를 피할 수 있습니다.

Light Source Angle: | 1

Light Source Angle: | 3

디렉셔널 라이트에서의 레이 트레이스 디스턴스 필드 섀도우로, 부드러운 그림자를 위해 라이트 소스 앵글을 조절한 것입니다.

대부분의 경우, 캐스케이드 섀도우 맵(CSM)을 사용하여 디렉셔널 라이트의 다이내믹 섀도우를 처리합니다. 그러기 위해서는 씬의 메시를 다수의 캐스케이드 섀도우 맵(, 섀도잉용 레벨 오브 디테일) 속에 렌더링해야 합니다. 섀도잉 비용은 섀도우 거리가 클 때 늘어나는데, 섀도우 맵 속에 렌더링되는 트라이앵글과 메시 수가 늘어나기 때문입니다.

레이 트레이스 디스턴스 필드 섀도우는 원거리의 경우 섀도잉 작업을 보이는 픽셀에 대해서만 하는 방식으로 훨씬 잘 돌아갑니다. 캐스케이드 섀도우 맵은 카메라 근처 영역의 섀도잉에 사용할 수 있는 반면, RTDF 섀도우는 설정된 Distance Field Shadow Distance (디스턴스 필드 섀도우 거리)까지 섀도잉에 사용할 수 있습니다.

Cascaded Shadow Maps Only

Cascaded Shadow Maps & Ray Traced Distance Field Shadows

레이 트레이스 디스턴스 필드 섀도우를 켜면, Cascaded Shadow Map Distance 에 설정된 값 이상에 대한 섀도잉은 디스턴스 필드를 사용합니다. CSM 과 RTDF 섀도잉을 둘 다 사용한 비교에서, CSM 섀도우는 1,000 CM (센티미터)로 설정되어, 디테일이 많은 카메라 근처에는 선명한 그림자가 나옵니다. 1,000 CM 이후에는 RTDF 섀도잉이 사용되어, 1.2 KM (킬로미터) 까지의 오브젝트 그림자를 담당합니다. 먼 거리의 나무에 대해 캐스케이드 섀도우 맵으로 할 때 너무 비싼 경우에도 그림자를 드리울 수 있습니다.

디렉셔널 라이트가 있는 씬에서 레이 트레이스 디스턴스 필드 섀도잉을 사용하여 하루 중 시간 변화를 나타낸 데모입니다.

디렉셔널 라이트 세팅 관련 자세한 정보는 메시 디스턴스 필드 세팅 참고서NEW! 문서를 참고하세요.

씬 표현

생성하는 각 레벨은 배치한 액터의 모든 메시 디스턴스 필드로 구성됩니다. 메시 디스턴스 필드를 생성할 때, 결과를 볼륨 텍스처에 저장하는 트라이앵글 레이트레이싱을 사용하여 "오프라인" 생성합니다. 그때문에 디스턴스 필드는 실행시간에 생성할 수 없습니다. 이 메서드는 모든 방향의 부호화 디스턴스 필드 광선을 계산하여 가장 가까운 표면을 찾아 그 정보를 저장합니다.

뷰포트에서 표시 > 시각화 > Mesh Distance Fields (메시 디스턴스 필드)를 사용하여 씬을 표현하는 메시 디스턴스 필드 시각화를 볼 수 있습니다.

시각화 표시 메뉴

메시 디스턴스 필드 시각화

이미지를 클릭하면 원본을 확인합니다.

이미지를 클릭하면 원본을 확인합니다.

회색보다는 흰색에 가까운 영역이 보이면, 메시 표면의 교차를 찾아내는 데 몇 단계가 더 필요하다는 뜻입니다. 표면 지표각에 가까운 광선은 교차를 알아내는 데 단순한 메시보다 여러 단계가 더 필요했습니다.

메시 디스턴스 필드 퀄리티

디스턴스 필드 섀도우 충실도는 그림자 정확도에 큰 영향을 미치는데, 디스턴스 필드 앰비언트 오클루전 보다 더합니다. 메시 디스턴스 필드 해상도를 늘리면 스태틱 메시가 드리우는 그림자가 향상됩니다. 메시 디스턴스 필드 시각화를 통해 퀄리티를 조사해 보세요.

Distance Field Resolution: | 1

Distance Field Resolution: | 5

Distance Field Resolution: | 1

Distance Field Resolution: | 5

디스턴스 필드 섀도잉 포함 씬 뷰

메시 디스턴스 필드 시각화

메시 디스턴스 필드에 대한 그림자는 깊이를 인지하는 업샘플링과 함께 절반 해상도로 계산됩니다. 템포럴 안티 에일리어싱 (TAA) 는 절반 해상도로 인해 발생할 수 있는 깜빡임을 줄이는 데 큰 도움이 되지만, 가끔씩 각진 선분이 나오기는 합니다.

메시 디스턴스 필드 퀄리티 관련 자세한 정보는 메시 디스턴스 필드NEW! 문서를 참고하세요.

퍼포먼스

풀 게임 씬을 1920x1080 해상도로 Radeon 7870 에서 돌린 GPU 시간은 다음과 같습니다:

테스트

캐스케이드/큐브맵 섀도우 맵 비용 (ms)

디스턴스 필드 섀도우 비용 (ms)

빠른 정도 (%)

디렉셔널 라이트에 거리 10k 유닛, 캐스케이드 섀도우 맵 3 개

3.1

2.3

25%

디렉셔널 라이트에 거리 30k 유닛, 캐스케이드 섀도우 맵 6 개

4.9

2.8

43%

포인트 라이트 하나에 커다란 반경

1.8

1.3

30%

포인트 라이트 다섯에 작은 반경

3.2

1.8

45%

최적화

디스턴스 필드 섀도잉 최적화를 위해 할 수 있거나 고려해야 하는 몇 가지 사항입니다:

  • 디렉셔널 라이트에서, Light Source Angle 값이 클 수록 비용이 늘어나는데, 섀도잉이 적용되는 점마다 많은 수의 오브젝트를 고려해야 하기 때문입니다.

  • Distance Field Shadow Distance 값이 크면 컬링 효율이 떨어집니다.

  • (빌드 세팅 에서 켤 수 있는) Two-Sided Distance Field Generation (양면 디스턴스 필드 생성) 옵션을 켠 메시의 그림자는 완전히 불투명이 되지 않으므로 비용이 비싸질 것입니다.

언리얼 엔진 4.16 에서 켤 수 있는 최적화는 다음과 같습니다:

  • 프로젝트 세팅 > Rendering (렌더링) 에서 다음 옵션을 켭니다:

    이미지를 클릭하면 원본을 확인합니다.

    • Compress Mesh Distance Fields (메시 디스턴스 필드 압축)을 켜면 디스턴스 필드 볼륨 텍스처를 메모리에 압축 저장합니다. 메모리 사용량이 줄지만, 레벨 스트리밍을 사용하는 경우 이 레벨을 스트림 인 할 때 버벅임이 발생할 것입니다.

    • Eight Bit Mesh Distance Fields (8비트 메시 디스턴스 필드)를 켜면 디스턴스 필드 볼륨 텍스처를 기본 16비트 부동 소수점이 아닌 8비트 고정 소수점 포맷으로 저장합니다. 기존에 비해 메모리 사용량이 절반으로 줄지만 크거나 얇은 메시에 부작용이 생길 수 있습니다.

한계

레이 트레이스 디스턴스 필드 섀도잉은 메시 디스턴스 필드 기법의 일반적한 한계를 공유합니다. 이러한 한계 관련 자세한 정보는 메시 디스턴스 필드NEW! 문서를 참고하세요.