모바일 플랫폼용 라이팅

모바일 게임용 라이팅 셋업하기 입니다.

Windows
MacOS
Linux

언리얼 엔진 4 (UE4)의 모바일 플랫폼에서 라이트 사용시, UE4 프로젝트가 다양한 모바일 디바이스에서 올바른 프레임 속도로 실행되도록 하기 위해 지켜야 하는 제한 사항이 있습니다. 여기서는 그 주의 및 제한 사항과 그에 대한 우회법을 알아보도록 하겠습니다.

지원되는 기능

모바일 플랫폼에서 지원되는 기능은 다음과 같습니다:

  • 리니어 HDR 라이팅

  • 디렉셔널 라이트맵 (노멀을 고려합니다.)

  • 디스턴스 필드 섀도 + 태양에 분석적 스페큘러

  • 이미지 기반 스페큘러 라이팅 - 각 오브젝트마다 가장 가까운 리플렉션 캡처 가 시차 보정 없이 적용됩니다.

  • 다이내믹 오브젝트는 라이팅을 올바르게 받지만 그림자를 드리우지는 않습니다.

모바일에 지원되는 라이트 유형

모바일 디바이스에 작동하는 라이트 유형과 수는 다음 표와 같습니다.

스태틱 라이트

라이트 유형

모빌리티

지원 개수

프로젝트 세팅 옵션

추가 정보

디렉셔널

스태틱

무제한

Allow Static Lighting

퍼포먼스가 가장 좋습니다. 빛과 그림자는 디렉셔널 라이트맵에 구워 넣습니다. 퀄리티가 감소합니다.

포인트

스태틱

무제한

Allow Static Lighting

퍼포먼스가 가장 좋습니다. 빛과 그림자는 디렉셔널 라이트맵에 구워 넣습니다. 퀄리티가 감소합니다.

스포트

스태틱

무제한

Allow Static Lighting

퍼포먼스가 가장 좋습니다. 빛과 그림자는 디렉셔널 라이트맵에 구워 넣습니다. 퀄리티가 감소합니다.

스테이셔너리 라이트

라이트 유형

모빌리티

지원 개수

프로젝트 세팅 옵션

추가 정보

디렉셔널

스테이셔너리

1

Allow Static Lighting

퀄리티가 가장 좋습니다. 미리 계산, 부호화 디스턴스 필드 소프트 섀도 를 지원합니다.

포인트

스테이셔너리

미지원

Allow Static Lighting

스테이셔너리 모빌리티는 지원하지 않으며, 모빌리티 = 스태틱처럼 취급합니다.

스포트

스테이셔너리

미지원

Allow Static Lighting

스테이셔너리 모빌리티는 지원하지 않으며, 모빌리티 = 스태틱처럼 취급합니다.

무버블 라이트

라이트 유형

모빌리티

지원 개수

프로젝트 세팅 옵션

추가 정보

디렉셔널

무버블

1

Support Movable Directional Lights

그림자는 모듈레이트 섀도 만, 또는 지원하지 않습니다.

포인트

무버블

최대 4

Use Shared Movable Spotlight / Point Light Shaders

그림자를 지원하지 않습니다.

스포트 *

무버블

최대 4

Support Movable Spotlights

그림자를 지원하지 않습니다.

기본적으로, 모바일 디바이스의 무버블 스포트라이트 지원은 비활성화되어 있습니다. 활성화하려면 프로젝트 세팅 > 렌더링 > Mobile Shader Premutations Reduction (모바일 셰이더 퍼뮤테이션 감소)에서 Support Movable Spotlights (무버블 스포트라이트 지원) 옵션 옆 박스를 체크합니다. 활성화한 이후 UE4 에디터를 재시작해야 사용할 수 있습니다.

SupportMovableSpotLight.png

리플렉션

리플렉션이 모바일 프로젝트의 생동감과 사실감에 생명력을 불어넣어 주는 것은 사실이지만, 모바일 디바이스에서 사용할 때 유의해야 하는 제한 사항이 몇 가지 있습니다. UE4 모바일 프로젝트에 리플렉션 캡처를 다음과 같이 사용하면 대상 모바일 디바이스에 리플렉션이 최상의 모습으로 나타나 보이도록 만들 수 있습니다.

  • Intensity (강도)를 0 으로 설정하여 포스트 프로세스 볼륨에 있는 앰비언트 큐브맵을 끕니다.
    PP_Settings.png

  • 라이팅을 캡처하고자 하는 곳에 SphereReflectionCaptures 액터를 배치합니다.

    구체 리플렉션 캡처 꺼짐 구체 리플렉션 캡처 꺼짐

    구체 리플렉션 캡처 켜짐 구체 리플렉션 캡처 켜짐

  • 머티리얼에 리플렉션을 지원할 때는 다음과 같은 정보에 유의합니다.

    • 노멀 맵에 지그재그가 더하고 덜한 디테일이 많아야 보다 흥미로은 리플렉션을 만드는 데 도움이 됩니다.

      평평한 노멀 맵 밋밋한 노멀 맵

      거친 노멀 맵 거친 노멀 맵

    • 러프니스 맵도 흑백 강도를 다양하게 해야 리플렉션의 광택을 다양하게 만들 수 있습니다.

      다양한 러프니스 다양한 러프니스

      평평한 러프니스 다양한 러프니스

    • 표면 유형에 따라 메탈릭 입력은 1 또는 0 으로 합니다.

      메탈릭 꺼짐 메탈릭 꺼짐

      메탈릭 켜짐 메탈릭 켜짐

각 스태틱 메시 컴포넌트가 가장 가까운 리플렉션 캡처 에 할당되는 것이 보입니다. 즉 오브젝트 사이의 리플렉션에 이음새가 생기므로, 가끔 리플렉션 캡처가 큰 메시의 가운데에 가까우면 바람직하지 못한 결과가 생길 수 있습니다.

모바일의 스카이라이트 리플렉션

모바일 렌더러는 연관된 리플렉션 캡처 액터가 없을 때 스페큘러 리플렉션에 Skylight Cubemap (스카이라이트 큐브맵)을 사용할 수도 있습니다. 이 옵션을 활성화하려면 리플렉션 캡처 액터를 전부 지우고 Screen Space Reflections (스크린 스페이스 리플렉션) 옵션을 비활성화하면 됩니다. 그 예제는 다음 비교 이미지에서 확인할 수 있습니다.

스카이라이트 리플렉션 PC

스카이라이트 리플렉션 모바일

이 기능은 Android ES2 디바이스에 지원되지 않습니다. Android ES2 디바이스에서는 여전히 씬 캡처 없이 렌더링됩니다.

모바일용 스페큘러 라이팅

모바일 스페큘러 반응은 GGX Lighting 모델을 기본 사용하도록 변경되었습니다. 모바일 디바이스의 스페큘러 퀄리티가 향상되어 셰이더 모델 5 (SM5)와 더욱 잘 일치합니다. 이 기능을 활성화하면 셰이더 처리 시간이 약간 늘어납니다. 이 변경으로 프로젝트의 라이팅 룩 앤 필에 변화가 생겨서 기존 스페리컬 가우시안 스페큘러 모델로 돌아가려는 경우, 그 방법은 다음과 같습니다.

  1. Project Settings (프로젝트 세팅) > Rendering (렌더링) > Mobile (모바일) 로 갑니다.

  2. Use legacy shading model (레거시 셰이딩 모델 사용) 옆 박스를 체크합니다.
    UseOLDLegacyShadingModel.png

아래 이미지 비교 슬라이더는 현재 스페큘러 셰이딩 모델과 레거시 셰이딩 모델의 차이점을 보여줍니다.

레거시 셰이딩 모델

새로운 셰이딩 모델

모듈레이트 섀도

풀 다이내믹 섀도는 모바일 프로젝트에 생명력과 현실감을 더하는 데 정말 큰 도움이 됩니다. 하지만 일부 모바일 디바이스에서 풀 다이내믹 섀도는 렌더링하기 위한 하드웨어 또는 리소스 요구 사양이 높아 그림의 떡입니다. 이에 대한 우회책으로 보다 저렴한 동적인 그림자 방식이 UE4 에 새로 도입되었는데, 바로 Modulated Shadows (모듈레이트 섀도)입니다. 여기서는 모듈레이트 섀도 란 무엇이며 UE4 안에서 어떻게 켜고 사용하는지에 대해 알아보도록 하겠습니다.

다이내믹 캐스케이드 섀도 맵

스테이셔너리 디렉셔널 라이트는 씬의 다이내믹 오브젝트에 대해서만 전체 씬 다이내믹 캐스케이드 섀도 맵(CSM) 섀도를 드리울 수 있습니다. CSM 섀도의 한 가지 장점은, 씬의 스태틱 오브젝트가 드리우는 미리계산 그림자와 제대로 블렌딩된다는 점입니다. CSM 섀도는 모듈레이트 섀도와 겹쳐도 이중으로 보이지 않으며, 다수의 오브젝트에 대해 다이내믹 섀도를 그리는 작업도 더욱 빠릅니다. 캐스케이드 섀도를 구성하는 자세한 방법은 캐스케이드 섀도 사용법 문서를 참고하세요.

모듈레이트 섀도 vs 다이내믹 섀도

모듈레이트 섀도나 다이내믹 섀도나 모양도 작동 방식도 매우 비슷하지만, 사실은 매우 다릅니다. 그 이유는 다이내믹 섀도에 없는 제한 사항이나 엄격한 한계로 인해, 모듈레이트 섀도는 모바일 디바이스의 열악한 하드웨어 성능에서도 퍼포먼스가 더 좋기 때문입니다. 아래는 다이내믹 섀도와 모듈레이트 섀도 비교 화면입니다.

다이내믹 섀도

모듈레이트 섀도

UE4 에서 모듈레이트 섀도를 사용할 때 얻을 수 있는 장단점은 다음과 같습니다.

  • 그림자 색 변경: 모듈레이트 섀도가 드리우는 그림자는 디렉셔널 라이트의 Light 섹션 아래 Modulated Shadow Color 옵션으로 색을 변경할 수 있습니다. 미적인 이유나 게임 플레이 상의 이유로 그림자의 색을 조정하고자 할 때 좋습니다.

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

  • 그림자 블렌딩: 다이내믹 섀도와 달리, 모듈레이트 섀도는 구운 것이든 동적인 것이든 프로젝트에 보이는 다른 그림자와 블렌딩되지 않습니다. 다른 그림자 위에 모듈레이트 섀도가 있으면, 하나로 혼합되어 보이지 않고 두 그림자 모두 표시된다는 뜻입니다.

    다이내믹 섀도

    모듈레이트 섀도

모듈레이트 및 다이내믹 섀도 작업

모듈레이트 섀도 작업을 할 때 몇 가지 콘솔 명령과 .INI 세팅으로 모듈레이트 섀도의 모양과 퍼포먼스를 조절할 수 있습니다. 여기서는 이러한 세팅이 무엇인지, UE4 프로젝트에 적용하는 방법은 어떻게 되는지 알아보겠습니다.

모듈레이트 섀도는 기존 섀도 기법과 가급적 많은 코드를 공유합니다. 즉 다른 섀도잉 메서드에 사용되는 여러가지 섀도 콘솔 변수와 .INI 세팅이 모듈레이트 섀도에도 작동한다는 뜻입니다.

  • 섀도 퀄리티: 처음 모듈레이트 섀도를 켜고 모바일 디바이스에서 보면 모듈레이트 섀도의 선명도나 품질이 예상보다 약간 낮을 수 있습니다. 이 문제 해결을 위해서는, 언리얼 콘솔을 열고 r.shadowquality 명령 뒤에 수치를 입력하여 그림자의 퀄리티를 조정할 수 있습니다. 수치가 클 수록 FPS 는 낮아지지만 모듈레이트 섀도 퀄리티는 높아집니다. 다음 그림에서 r.shadowquality 값이 0, 1, 2, 3, 4, 5 일 때 모듈레이트 섀도 퀄리티에 끼치는 영향을 확인할 수 있습니다.

슬라이더를 끌면 r.shadowquality 값이 0 에서 5 로 갈 때의 변화를 확인할 수 있습니다.

  • 셀프 섀도잉: 기본적으로 모듈레이트 섀도는 캐릭터나 픽업같은 다이내믹 오브젝트에 셀프 섀도를 제공하나, 모듈레이트 섀도의 퍼포먼스를 최대한 높이기 위해 이러한 부분을 없앴습니다. 프로젝트가 셀프 섀도에 요구되는 부가 비용을 감당할 수 있다면, UE4 콘솔에 r.Shadow.EnableModulatedSelfShadow 1 명령을 입력하여 켤 수는 있습니다. 셀프 섀도잉을 끄려면 콘솔에 r.Shadow.EnableModulatedSelfShadow 0 를 입력하면 됩니다.

    셀프 섀도 켜짐 셀프 섀도 켜짐

    셀프 섀도 꺼짐 셀프 섀도 꺼짐

  • 그림자 깊이: r.Shadow.CSMDepthBias 명령을 사용하면 그림자 렌더링이 시작되는 위치에 오프셋을 줄 수 있습니다. 아래 그림에서 제일 왼쪽은 r.Shadow.CSMDepthBias 가 기본값 0 일 때, 그 오른쪽으로 값이 10, 100, 500, 1000, 1500 일때 어떤 일이 벌어지는지 확인할 수 있습니다.

    슬라이더를 끌면 r.Shadow.CSMDepthBias 값이 0 에서 1500 으로 갈 때의 변화를 확인할 수 있습니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼