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

그림자 드리우기

언리얼 엔진

lighting_overview_banner_001.png

그림자는 시각적인 대조를 통해 오브젝트가 땅 위에 있구나 하는 느낌을 내면서, 관찰자에게 공간감과 입체감을 부여해 줍니다. 스태틱 섀도는 사실상 렌더링 비용이 없는 것이나 마찬가지인 반면, 다이내믹 섀도는 퍼포먼스에 있어 가장 주의해야 할 부분 중 하나가 될 수 있습니다. 이 글에서는 언리얼 엔진 4 에서 사용할 수 있는 네가지 그림자 유형에 대한 기초적인 내용을 다루겠습니다.

스태틱 라이트

스태틱 라이트는 완벽히 정적인 빛과 그림자를 드리우는 것으로, 아래 동상에서 볼 수 있듯이 다이내믹 오브젝트에 직접적인 영향을 끼치지 않습니다 (스태틱 라이트는 간접광 캐시에 구워지므로, 약간의 영향을 끼치기는 합니다).

LI_StaticMeansStatic.png

스테이셔너리 라이트의 빛 속에 서 있는 오른쪽의 동상과 달리, 왼쪽의 동상은 스태틱 라이트의 빛 속에 서 있어서 (빛이든 그림자든) 어떠한 영향도 받지 않고 있습니다.

디렉셔널 라이트 캐스케이드 섀도 맵 (전체 씬 그림자)

Directional Light Stationary (스테이셔너리 디렉셔널 라이트)는 스태틱 섀도잉과 동시에 캐스케이드 섀도 맵 을 통해 전체 씬 그림자를 지원한다는 점에서 특수한 라이트입니다. 움직이는 폴리지가 많은 레벨에서 특히나 유용한데, 플레이어 주위로 움직이는 그림자를 두되, 넓은 시야 범위를 커버하기 위해 다수의 캐스케이드 비용을 들이지 않고자 할 때입니다. 거리에 따라 다이내믹 섀도를 스태틱 섀도로 페이드 인 시켜, 그림자의 갑작스런 전환이 눈에띄지 않도록 합니다. 이런 구성을 하기 위해서는 스테이셔너리 디렉셔널 라이트Dynamic Shadow Distance StationaryLight (다이내믹 섀도 거리 스테이셔너리 라이트** 를 페이드가 시작되었으면 하는 범위로 바꿔주면 됩니다.

스테이셔너리 라이트 섀도

다이내믹 오브젝트(, 이를테면 모빌리티가 무버블로 설정된 스태틱 메시 컴포넌트 및 스켈레탈 메시 컴포넌트)는, 디스턴스 필드 섀도맵에서 월드의 스태틱 섀도잉에 통합시켜야 합니다. 이는 Per Object 섀도로 가능합니다. 각 이동 오브젝트는 하나의 스테이셔너리 라이트에서 다이내믹 섀도를 두 개 만듭니다: 오브젝트에 드리워지는 정적인 월드에 대한 그림자와, 월드에 드리워지는 오브젝트에 대한 그림자입니다. 이런 구성에서 스테이셔너리 라이트에 드는 섀도잉 비용은, 영향을 끼치는 다이내믹 오브젝트에서만 발생합니다. 즉 다이내믹 오브젝트의 수에 따라 비용이 매우 조금 들 수도 많이 들 수도 있습니다. 다이내믹 오브젝트의 수가 일정 이상이라면, 무버블 라이트의 효율이 더 좋습니다.

아래 씬에서 구체는 모두 무버블 이며, 둘 다 스태틱 월드의 그림자를 받으면서 자신의 그림자를 드리우고 있고, 그 내용이 디스턴스 필드 섀도에 병합됩니다. 각 무버블 컴포넌트에 대한 Per Object 그림자 절두체 역시 표시됩니다.

DynamicObjectShadowFrustums.png

무버블 컴포넌트에 사용되는 Per Object 그림자는 오브젝트의 바운드에 섀도맵을 적용하므로, 바운드가 정확해야 합니다. 스켈레탈 메시의 경우 피직스 애셋이 있어야 한다는 뜻입니다. 파티클 시스템의 경우 고정 바운딩 박스가 모든 파티클을 담을 만큼 충분히 커야 합니다.

다이내믹 섀도

무버블 라이트는 모든 것에 완벽히 동적인 (빛과) 그림자를 드리웁니다. 그 라이트 데이터는 라이트 맵에 구워지지 않으며, 어느 것에도 자유로이 다이내믹 섀도를 드리울 수 있습니다. 스태틱 메시, 스켈레탈 메시, 이펙트 등등 모두 무버블 라이트에서의 다이내믹 섀도를 드리우고 받습니다.

평균적으로 무버블 다이내믹 섀도를 드리우는 라이트가 가장 비쌉니다.

프리뷰 섀도

라이팅이 빌드되지 않는 방식으로 스테이셔너리 / 스태틱 라이트를 편집할 때는, Preview Shadowing (프리뷰 섀도)가 켜져 라이팅 리빌드시 그림자가 어떤 모양일지 개념을 잡아볼 수 있습니다.

이 그림자는 에디터에서 "Preview" 라는 글자가 찍혀 보이므로 기존의 그림자와 구분이 되는데, 아래와 같습니다.

UnbuiltShadows.png

라이팅 리빌드 전 에디터에서 게임을 테스트하면, 프리뷰 섀도는 에디터 안에서만 존재하지 '에디터에서 플레이'시에는 존재하지 않기 때문에 사라집니다.

UnbuiltShadowsPIE.png

프리뷰 섀도에서 그림자를 생성하기 위해서는, 메인 에디터 툴바의 빌드 옵션에서 라이팅 빌드 를 선택해야 합니다.

BuiltShadows.png

뷰포트의 표시/시각화 메뉴에서 프리뷰 섀도 인디케이터 체크를 해제해 주면 프리뷰 섀도를 끌 수 있습니다.

이 텍스트를 투사하는 데 사용되는 Light Function Material 을 수정하려면, 그 위치는: Engine/EditorMaterials/PreviewShadowIndicator 에 있습니다.

종합

각각이 서로의 단점을 보완하는 식으로 모든 그림자를 종합해서 사용할 때, 인상적이면서 렌더링 속도도 빠른 비주얼에 생동감을 불어넣을 수 있습니다.

LO_Shadows_Footer.png