언리얼 엔진 4.15 출시!
2017년 2월 15일

언리얼 엔진 4.15 출시!

저자: Alexander Paschall

이번 출시에는 GitHub 의 엄청난 언리얼 엔진 개발자 커뮤니티가 제출한 개선사항이 79 개나 포함되어 있습니다! 언리얼 엔진 4.15 에 기여해 주신 모든 분들께 감사의 말씀 올립니다:

20tab srl (20tab), Andreas Schultes (andreasschultes), AndrewMAlvarez, Andrzej K. Haczewski (ahaczewski), Artem V. Navrotskiy (bozaro), BhaaLseN, Black Phoenix (PhoenixBlack), Brett Kercher (BrettKercher), Brian Harris (BrianHarris), BrodyHiggerson, CA-ADuran, Céleste (CelPlays), Chris Robertson (CJRobertson), Christopher P. Yarger (cpyarger), Deborggraeve Randy (DeborggraeveR), Deniz Piri (DenizPiri), Dennis Theisen (Soleone), Derek van Vliet (derekvanvliet), Dorgon Chang (dorgonman), Dustin Biser (dustin-biser), dyf303, EricLeeFriedman, finap, Garrett (RoyAwesome), Hannah Gamiel (hgamiel), How2Compute, Hyeon-Cheol Cho (crocuis), Jacob Shaffer (Phyllostachys), Joel McGinnis (joelmcginnis), Jordan Hueckstaedt (assumptionsoup), Jørgen P. Tjernø (jorgenpt), Jukka Jylänki, Justin Graham (mannewalis), kallehamalainen, kayosiii, Kory Postma (korypostma), Marat Radchenko (slonopotamus), Marco Antonio Alvarez (surakin), Mario Zechner (badlogic), Markus Breyer (pluranium), Martin Mittring (MartinMittringAtOculus), Max Shawabkeh (max99x), Michael Atkins, Moritz Wundke (moritz-wundke), Nako Sung (nakosung), Nathan Sizemore (nathansizemore), Nathan Stocks (CleanCut), nero81af, Nicolas Roblin, Orfeas Eleftheriou (orfeasel), Piotr Bąk (Pierdek), PjotrSvetachov, poiyomi, projectgheist, rarihoma, Rex Feany (laeos), Robert Segal (robertfsegal), Rūdolfs Bundulis (rubu), Satheesh  (ryanjon2040), Sébastien Rombauts (SRombauts), stefanzimecki, Stephen Dawkins (elFarto), Thomas Mayer (tommybear), Thomas McVay (ThomasMcVay), tmiv, Yours3lf, Zerophase

새로운 소식

언리얼 엔진 4.15 에는 전반적인 안정성 대폭 향상, 개발자 작업방식 강화, 런타임 퍼포먼스 개선으로 뛰어난 최종 사용자 경험 및 개발 효율을 높이는 데 도움이 될 기능이 다수 포함되어 있습니다.

프로그래머의 컴파일 시간이 크게, 자그마치 50% 나 감소합니다! 언리얼 에디터 실행 도중 콘텐츠 리로드, 머티리얼의 경유지(Reroute) 노드, 새로운 블렌드스페이스 에디터, 새로운 수학 관련 블루프린트 노드 등 이번 출시에는 개발 프로세스 효율 향상에 크게 기여하는 기능이 많이 추가되었습니다.

퍼포먼스를 극한까지 끌어내는 방법을 찾는 분들에게 희소식, 블루프린트를 C++ 네이티브 코드로 쿠킹하는 기능이 실험단계 딱지를 떼었고, 텍스처 스트리밍 시스템이 대폭 개선되었으며, NVIDIA SLI 와의 대체 프레임 렌더링 기능이 고사양 시스템 성능을 증폭시켜 줍니다.

시네마틱 및 애니메이션 파이프라인도 지속적으로 강화되고 있습니다! 이제 시퀀서에서 애니메이션 블렌딩이 가능하고, 애니메이션 커브를 본에 링크시켜 LOD 의 컬링을 지원하며, 애니메이션 블루프린트에서 Modify Curve 노드로 커브를 변경할 수 있습니다. 이제 레벨 시퀀스를 액터 블루프린트에 삽입시킬 수 있으며, 얼리 어답터들은 Level Sequence 컴포넌트를 일찍 사용해 보실 수 있습니다.

플랫폼 부문도 향상되어 이제 Nintendo Switch (닌텐도 스위치) 개발이 가능합니다. iOS 와 안드로이드에서 새로운 위치 서비스를 사용하여 GPS 데이터에 접근할 수 있습니다. 또한 iOS 에서는 스트리밍 오디오와 원격 알림이 완벽 지원됩니다. 모바일 VR 플랫폼에서 모노스코픽 파 필드 렌더링이 옵션으로 제공되고, HDR 디스플레이 출력은 실험단계 상태에서 사용 가능하며, Playstation VR Aim Controller 도 사용할 수 있게 되었습니다.

주요 기능

신기능: 닌텐도 스위치 지원

Nintendo 와의 협업을 통해 언리얼 엔진 4 개발자들의 Nintendo Switch 게임 개발을 도울 수 있게 되었습니다!

SnakePass-Switch.png

Nintendo Switch 콘솔 게임 개발을 위한 초기 지원사항이 추가되었습니다. 이번 출시에서는 아직 실험단계로 간주되나, 다음 출시에서는 실제 발매가 가능한 상태까지 개선시킬 계획입니다.

신기능: 물리 기반 기본 포스트 프로세싱 세팅

이제 기본 톤매퍼가 보다 영화같은 색감과 톤을 냅니다!

PostProcess_Cropped_003.jpg

이제 아카데미 컬러 인코딩 시스템(ACES)에 일치하는 필름 톤매퍼가 기본으로 켜집니다. 이 톤매퍼를 통해 엔진은 HDR 디스플레이 포함 다수의 디스플레이 유형을 대상으로 삼을 수도 있습니다. 블룸 기본값을 업데이트하여 보다 물리적으로 올바른 결과를 냅니다.

필름 톤매퍼는 UE4 기존 버전의 톤매퍼와 다르게 보일 것입니다. 프로젝트 DefaultEngine.ini 의 SystemSettings 섹션에 r.TonemapperFilm=0 을 추가하여 톤매퍼를 원래대로 되돌릴 수 있습니다. 하지만 앞으로 나올 엔진 버전에서는 구형 톤매퍼를 제거할 계획입니다.

신기능: 텍스처 스트리밍 개선

텍스처 스트리밍 시스템 최적화를 통해 CPU 및 메모리 사용량, 로드 시간을 줄이면서도 저해상도 부작용을 없애고 여러 플랫폼의 다양한 메모리 예산 관련 한계를 자동으로 처리해 줍니다.

  • 텍스처 메모리 사용법 개선 - 텍스처 스트리밍 시스템은 이제 컴포넌트 단위로 비저빌리티를 처리하여 스태틱 지오메트리에 바인딩된 (크기가 작은) 머티리얼 단위로 계산, 텍스처 메모리 사용량이 40% 정도 감소했습니다.

  • 텍스처 로드 시간 개선 - 보이는 맵을 트래킹하여 스트리머가 보이는 텍스처에 포커스를 맞추고 데이터 프리페치 및 강제 로드 데이터 기법을 연달아 적용하여 텍스처 로드 시간이 두 세배 빨라졌습니다.

  • CPU 시간 절약

    • 게임 스레드 업데이트 시간이 50% 감소했습니다. 다이내믹 컴포넌트 처리와 기타 태스크를 비동기 텍스처 스트리밍 태스크로 이동시켜, 다른 게임 스레드 태스크와 병렬 처리가 가능하도록 했기 때문입니다.

    • 레벨 로드 시간이 98% 정도 감소되었습니다. 이제 스트리밍 레벨의 텍스처를 여러 프레임에 걸쳐 점증적으로 처리하기 때문입니다.

  • 저해상도 부작용 감소 - 메시 UV 밀도 계산이 이제 메시가 아닌 머티리얼 단위로 이루어지며, LOD 를 고려합니다. 또한 텍스처 스트리밍에 파티클 시스템이나 인스턴스드 스태틱 메시와 같이 보다 다양한 컴포넌트 유형이 지원됩니다.

  • 자동 메모리 예산 처리 - 텍스처 스트리밍 시스템은 이제 작동방식을 자동 조절하여 수동 작업 없이도 여러가지 메모리 예산 처리를 할 수 있습니다. 이 시스템은 다양한 휴리스틱 기법을 통해 감소시킬 텍스처를 선택하여 비주얼 퀄리티를 유지합니다.

신기능: 블루프린트를 C++ 로 쿠킹

블루프린트를 네이티브 소스 코드로 패키징하여 블루프린트 실행 비용을 줄이는 기능을 이제 제작 단계에서 사용할 수 있게 되었습니다!

이 기능은 실험단계 기능으로 사용가능한 상태였으며 Robo Recall 같은 자체 프로젝트에 성공적으로 사용해 왔으나, 이제 그 실험단계 딱지를 떼었습니다.

개별 블루프린트를 하나하나, 또는 모든 블루프린트 애셋을 한꺼번에 네이티브화시킬 수 있습니다. 커다란 프로젝트에서는 포괄 모드를 사용하면 일부 플랫폼에서 실행파일 크기 문제가 생길 수 있으므로, 대부분의 경우 개별 모드에서 퍼포먼스가 치명적인 블루프린트만 대상으로 하는 것이 좋습니다. 자세한 정보는 블루프린트 네이티브화 문서를 참고하세요.

신기능: C++ 컴파일 시간 개선

언리얼 엔진 4 코드베이스의 컴파일 시간이 25-50% 빨라졌습니다! 헤더 파일은 Engine.h 나 UnrealEd.h 처럼 커다란 모놀리식 헤더 포함 모든 소스 파일을 포함시키는 것이 아닌, 딱 필요한 헤더 파일만 포함시킵니다. 이것을 Include What You Use (IWYU) 기법이라 합니다.

CompileTimes_006.jpg

새로운 모델에 대한 규칙은 다음과 같습니다:

  • 모든 헤더는 이제 컴파일에 필요한 모든 것을 포함합니다 - CoreMinimal.h 라는 헤더에 Core 의 어디에나 존재하는 (FString, FName, TArray, FVector, 등의) 유형 세트가 들어있는데, 이는 이제 대부분의 헤더에 처음 포함됩니다.

  • 모든 .cpp 파일은 일치하는 .h 파일을 먼저 포함합니다 - 각 헤더에 필요한 것을 전부 포함시켰는지 확인하는 데 좋습니다. UnrealBuildTool 은 소스 파일이 이 규칙을 따르는지 검사합니다.

  • 엔진 코드가 더이상 Engine.h 나 UnrealEd.h 같은 모놀리식 헤더를 포함하지 않습니다 - 이들 중 하나를 포함시키려 하면 엔진에서 경고가 날 것입니다. 아직 존재하는 이유는 게임 프로젝트와의 호환성 때문입니다.

  • 엔진 코드가 더이상 미리 컴파일된 헤더(PCH)를 명시적으로 포함하지 않습니다 - 아직 PCH 를 사용은 합니다만, UnrealBuildTool 에서 컴파일러 명령줄에 강제 포함시킬 경우에만 쓰입니다. 기존 종속성을 깨뜨리지 않고 포함된 내용을 조정할 수 있습니다.

주: *.build.cs (또는 전체 BuildConfiguration.xml) 파일에 ‘bEnforceIWYU = false’ 설정을 하면 이러한 규칙을 어겨도 경고나 오류가 발생하지 않습니다.

신기능: UI 블러 사각형

이제 Background Blur 위젯을 사용하여 UMG 에서 UI 와 3D 씬을 뿌옇게 만들 수 있습니다! Background Blur 위젯에는 블러 적용 제외시킬 위젯 추가를 위한 콘텐츠 슬롯도 있습니다.

배경 콘텐츠의 블러 정도를 정의하는 Strength (세기) 값이 하나 있는데, 0 (꺼짐) 부터 100 (최대 세기) 이며, 애니메이션을 통해 시간에 따라 블러 양을 변경시킬 수도 있습니다.

UIBlur_2_001.jpg UIBlur_10_001.jpg UIBlur_50_001.jpg

세기 = 2

세기 = 10

세기 = 50

신기능: 머티리얼 에디터 경유지 노드

이제 머티리얼 에디터에서 경유지(Reroute) 노드를 사용하여 머티리얼 그래프를 보다 깔끔하게 정리할 수 있습니다! 블루프린트에서와 똑같은 방식으로 작동하며, 머티리얼의 최종 인스트럭션 수에는 영향을 주지 않고 순전히 시각적인 목적으로 사용됩니다.

MaterialRerouteNode_Combined_Web_04.jpg

머티리얼 에디터에서 경유지 노드를 추가하는 방법은 다음과 같습니다:

  • 머티리얼 팔레트의 Utility (유틸리티) 아래 Add Reroute Node (경유지 노드 추가)를 끌어 그래프에 놓습니다.

  • 연결된 스플라인을 더블클릭하면 새로운 경유지 노드가 선 안에 추가됩니다.

신기능: 시퀀서 애니메이션 블렌딩

시퀀서가 이제 다수의 애니메이션에 가중치를 입힌 블렌딩을 지원, 기존 애니메이션에서 복잡한 애니메이션 시퀀스를 구성할 수 있습니다. 애디티브 (로컬 스페이스) 애니메이션을 포함해서 몇 개의 애니메이션을 언제든 블렌딩할 수 있습니다.

시퀀서 애니메이션 블렌딩

애니메이션의 가중치 제어는 트랙을 펼치고 원하는 타임라인에 키 값을 설정합니다. 풀 바디 애니메이션의 경우 가중치는 정규화시켜 적당한 메시 스케일을 유지합니다. 애디티브 애니메이션의 경우, 지정된 가중치 값은 변경하지 않은 채 사용합니다.

스켈레탈 메시가 애니메이션 블렌딩에 다수의 포즈를 사용하도록 하기 위해, 새로 생긴 Blend Multi by Alpha 노드를 메시에 대한 애니메이션 블루프린트의 애님 그래프에 추가할 수 있습니다. 맥락 메뉴에서 새 포즈를 추가할 수 있습니다.

신기능: 블루프린트에서 시퀀서 애니메이션 (실험단계)

새로운 Actor Sequence (액터 시퀀스) 플러그인을 설치하면 Actor Sequence (액터 시퀀스) 컴포넌트가 추가되며, 이를 통해 액터 블루프린트에 시퀀스를 삽입시킬 수 있습니다! 그러면 블루프린트 인스턴스에 애니메이션을 바인딩하고 이벤트 그래프에서 발동시키는 방식으로 시퀀스를 재사용할 수 있습니다. 월드의 아무 액터에나 액터 시퀀스 컴포넌트를 추가하여 액터 단일 인스턴스에 애니메이션을 추가할 수도 있습니다.

액터 블루프린트

액터 블루프린트 뷰포트

신기능: 콘텐츠 핫 리로드 (실험단계)

새로운 콘텐츠 핫 리로드 기능을 통해 요청시 디스크에서 패키지를 리로드하는 기능 지원이 크게 향상되었습니다.

이 기능으로 로드된 애셋을 처리할 때 모든 에디터 내 소스 콘트롤 작업 안정성이 높아집니다. 애셋 액션 아래 새로 생긴 리로드 옵션으로 디스크에서 애셋을 강제 리로드할 수 있는데, 애셋에 가한 변경사항을 저장하지 않은 상태에서 디스크 버전으로 되돌리고자 할 때 매우 유용합니다.

이 기능은 에디터 개인설정 에서 실험단계 섹션 아래 "Content Hot-Reloading" (콘텐츠 핫 리로드) 옵션으로 켤 수 있습니다.

주: 현재 에디터의 소스 콘트롤을 사용해야 에디터가 열린 상태에서 핫 리로드 기능이 작동합니다. 다른 소스 콘트롤과의 동기화를 위해서는 기술적으로 풀어야 하는 문제가 몇 가지 있습니다.

신기능: 하이 다이내믹 레인지 디스플레이 출력 (실험단계)

언리얼 엔진 4 는 이제 보다 높고 넓은 고대비나 색 공간을 활용할 수 있는 하이 다이내믹 레인지 (HDR) 디스플레이 출력이 가능합니다!

위는 시뮬레이션을 통한 이미지로, 데모 전용입니다.

HDR 디스플레이 출력 기능은 Windows Direct3D 11 (NVIDIA 전용), PS4, Mac Metal 플랫폼에 지원됩니다. 다른 디바이스는 다음 출시 또는 추가되는대로 GitHub 를 통해 배포할 예정입니다. 현재 구현에서는 표준 ACES 트랜스폼(모양 변경 -> 레퍼런스 렌더링 -> 디스플레이 출력)을 통해 렌더링된 씬을 전체 처리하고 있으며, 현재 1000 니트 또는 2000 니트 디스플레이 출력용으로 구현된 경로가 있습니다. 디바이스 전용 트랜스폼을 룩업 테이블로 구을 때 톤매핑 패스의 일부로 굽는데, 여기에는 대부분의 표준 화이트 밸런스 및 컬러 그레이딩 제어가 포함됩니다. 기본적으로 필름 매핑 커브는 LDR 제어와의 호환성이 떨어져 HDR 출력 도중에는 꺼집니다. 톤매핑 이후 필요에 따라 관련 범위 보정 및 인코딩을 적용합니다.

추가적으로 실험단계 LDR UI 합성 기능 지원이 있습니다. HDR 출력을 켜면 자동 처리되어 LDR 모양에 가급적 비슷하게 맞추도록 하는 기능입니다만, 주요 씬의 선명함으로 인해 UI 가 탈색되어 보이는 것을 방지하기 위해서는 새로운 콘솔 변수를 통해 UI 를 증폭시켜 주는 것이 좋습니다.

HDR 출력 기능 지원은 현재 실행시 자동 감지를 통해 지원되는 디스플레이가 연결된 경우에만 자동 설정됩니다. 전체화면 모드와 HDR 출력을 켜면 어플리케이션은 지원되는 디스플레이로의 이동을 자동 시도합니다. HDR 출력은 새로운 콘솔 변수 또는 GameUserSettings 를 통해 켜거나 끌 수 있는데, 현재 디바이스에 맞는 것 중 가장 가까운 설정으로 클램핑을 자동 적용하여 필요한 옵션을 설정해 줍니다..

신기능: 모바일 렌더링 프리뷰 (OpenGL ES 3.1, Metal, Vulkan)

이제 향상된 모바일 프리뷰를 통해 에디터 뷰포트에서 고사양 모바일 기능 미리보기가 지원됩니다. 이 모드는 iOS Metal, Android OpenGL ES 3.1, Android Vulkan 디바이스에서 사용할 수 있는 피처 세트를 에뮬레이션합니다.

HQPreview_Web_001.jpg

주: 프리뷰 플랫폼 메뉴에는 프로젝트 세팅에서 켜준 디바이스만 표시됩니다.

신기능: 블루프린트용 맵/세트 컨테이너

이제 블루프린트에 기존의 Array (배열) 변수 유형 말고도 아이템 컬렉션을 저장할 수 있는 변수형 Map (맵)과 Set (세트)가 추가되었습니다. 맵과 세트는 반복되는 항목 없이 고유 아이템만 저장되도록 보장해 주며, 세트를 통해서는 ‘키’도 반복되지 않도록 할 수 있습니다. 특히나, 커다란 데이터 세트에 대한 룩업 작업을 자주 할 때 좋습니다.

TMapTSet_BP_Web_001.jpg

이제 Variable Type 옵션은 드롭다운이 되어, Single Variable (단일 변수), Array (배열), Set (세트), Map (맵) 중에서 선택할 수 있습니다. 맵이 선택되면 ‘value’ 유형에 대한 이차 드롭다운이 나타납니다.

세트와 맵 변수는 이제 C++ 에서 선언하고 블루프린트에 노출시킬 수 있으나, 맵과 세트 프로퍼티에 대한 리플리케이션은 아직 C++ 또는 블루프린트에서 지원하지 않습니다.

신기능: 게임플레이 태그

엔진에 등장한지는 이미 오래 된 게임플레이 태그 시스템이 크게 개선되어 이제 완벽 지원됩니다.

게임플레이 태그는 Family.Genus.Species 또는 그냥 IndividualThing 형태입니다. GameplayTags 모듈의 GameplayTag 구조체로 구현되며, 중앙 딕셔너리에 등록됩니다. .(마침표)를 사용한 이름 중첩으로 리터럴 태그 및 모든 부모 태그 양쪽에 대한 일치 검색이 가능합니다. GameplayTagContainer 는 일치 연산에도 사용할 수 있는 태그 세트입니다.

태그는 손으로 하나하나 입력하는 대신, 디자이너와 아티스트용으로 사전 승인한 이름 목록이 있는 것이 좋습니다. 게임플레이 태그를 사용하려면 중앙 태그 딕셔너리에 등록되어 있어야 하는데, 이는 새로운 GameplayTags 프로젝트 세팅 뷰에서 접근할 수 있습니다:

GameplayTags_Full_02.jpg

Import Tags from Config (환경설정에서 태그 임포트) 옵션을 켜면, 이 페이지의 게임플레이 태그 리스트나 태그 선택에 사용되는 UI 를 통해 에디터에서 태그를 추가할 수 있습니다. 데이터에 태그 프로퍼티를 추가하고나면 블루프린트나 C++ 에서 질의한 후 그를 통해 함수 기능을 변경할 수 있습니다. BlueprintGameplayTagLibrary 에 유용한 함수가 여럿 있습니다. 태그를 실제 구성하기 위해서는, GameplayTag 또는 GameplayTagContainer 변수를 데이터 또는 함수에 추가한 뒤, 선택 UI 에서 태그를 설정하면 됩니다.

신기능: 컬러 그레이딩 제어

포스트 프로세스 세팅에 컬러 그레이딩 프로퍼티 관련해서 보다 직관적인 조작 및 정교한 제어가 가능한 완전 새로운 제어판이 추가되었습니다.

 

PostProcessUI_001.jpg

새로운 제어판의 특징은 다음과 같습니다:

  • 각 슬라이더 아래 선의 색으로 영향을 주는 컬러 채널을 알 수 있습니다.

  • 슬라이더로 값을 편집할 때의 정밀도가 향상되었습니다. Shift 키를 누른 상태로 편집하면 정밀도를 더욱 향상시킬 수 있습니다.

  • 새로운 색상환으로 X, Y, Z 채널을 한꺼번에 변경할 수 있습니다. 색상환 아래 슬라이더로 X, Y, Z 채널 진폭 제어가 가능합니다.

신기능: VR 에디터 메뉴 개선

VR 에디터의 퀵 메뉴 및 원형 메뉴의 모양과 느낌이 새롭게 업데이트되었을 뿐만 아니라 사용 편의성과 기능도 개선되었습니다.

원형 메뉴로 복제하기

퀵 메뉴로 회전하기

퀵 메뉴 불러오기/해제하기 기능은 거의 동일하지만, 퀵 메뉴가 보이는 상태에서는 시야 방해를 줄이기 위해 레이저를 숨깁니다.

신기능: VR 에디터 숫자 패드

VR 에디터의 새로운 숫자 패드 UI 를 사용하여 텍스트 칸에 숫자(0-9)는 물론 음수나 소수점 값도 빠르게 입력할 수 있습니다!

VR 에디터 숫자 패드

트리거 버튼으로 숫자 선택, 그립 버튼으로 엔터 입력, 모디파이어 키로 백스페이스입니다. 숫자 패드를 해제하려면 씬 안의 다른 곳을 클릭하거나, 표준 원형 메뉴처럼 터치패드 또는 썸스틱을 클릭해도 됩니다.

신기능: 텍스처 스트리밍 디버깅 시각화 툴

새로 생긴 세 가지 뷰 모드로 게임에 텍스처 스트리밍 시스템이 최적의 상태로 작동중인지 확인하는 작업이 쉬워졌습니다!

  • 프리미티브 거리 정확도 - 실제 GPU 거리와 비교해서 스트리머가 계산한 뷰 메시 거리의 정확도를 나타냅니다. 스트리머는 시점에서부터 텍스처 인스턴스의 축 평행 바운딩 박스(AABB)까지 거리를 계산합니다. 이 바운딩 박스는 텍스처를 사용하는 컴포넌트 LOD 섹션 AABB 를 더하는 방식으로 빌드 프로세스에서 계산됩니다.

  • 메시 UV 밀도 정확도 - 이 뷰 모드는 스트리머가 각 메시에 사용하는 메시 UV 밀도의 효과를 나타냅니다. UV 밀도가 틀린 경우, 그 메시의 텍스처는 스트리밍 부족(퀄리티 저하) 또는 스트리밍 과잉(메모리 낭비) 위험이 있습니다.

  • 머티리얼 텍스처 스케일 정확도 - 머티리얼에 사용되는 대부분의 텍스처는 메시 UV 채널 중 하나에 스케일을 적용한 값을 사용하여 샘플링합니다. 텍스처 스트리밍 빌드는 사용된 텍스처 좌표와 각각의 샘플링된 텍스처에 적용된 값을 계산을 통해 알아내려 합니다. 이 작업은 여러가지 이유로 실패할 수 있는데, 그러한 경우에 대비해 스트리머는 텍스처 좌표 0 과 스케일 1 로 텍스처를 샘플링했다 가정합니다.
    머티리얼은 다수의 텍스처를 샘플링하기에, 이 뷰모드는 샘플링된 모든 텍스처 중 (스트리밍 부족 및 과잉 측면에서) 최악의 오차를 표시합니다. 이 두 가지 극한값은 체크무늬 모양으로 표시되는데, 하나는 최악의 오버 샘플링, 다른 하나는 최악의 언더 샘플링입니다. 이 각각의 텍스처는 뷰 모드 옵션을 통해 조사할 수도 있습니다.

이제 stat streaming 콘솔 명령으로 라이브 텍스처 스트리밍 통계를 접근할 수도 있습니다. 이 통계는 텍스처 스트리머에 사용된 퍼포먼스, 메모리, 기타 척도에 대한 리포트입니다. 메모리 부분에서 pool (풀)이란 단어는 개념적 메모리를 가리키며, 실제 차지한 메모리와는 관계가 없습니다. mips (밉)이란 단어는 텍스처가 (예상치도 추정치도 아닌) 현재 차지하고 있는 메모리에 해당합니다. 메모리 척도는 세 개의 메인 풀로 분류되는데, Texture (텍스처), Streaming (스트리밍), Wanted (필요) 입니다. 이 풀 크기는 각 줄 오른쪽에 표시됩니다.

신기능: 조종 스틱 및 운전 핸들 지원 (윈도우)

새로운 Raw Input 플러그인을 통해 윈도우용 운전 핸들, 조종 스틱, 기타 X 이외 입력을 지원하는 디바이스가 지원됩니다!

새로운 디바이스 추가는 간단합니다. 프로젝트 세팅이나 DefaultInput.ini 편집을 통해 환경설정을 해 주기만 하면 됩니다. 비히클 템플릿이나 비히클 게임 모두 Logitech G920 작동이 가능하도록 환경설정되어 있습니다.

신기능: 포스 피드백 컴포넌트

새로운 Force Feedback (포스 피드백) 컴포넌트를 월드의 액터에 추가하여 독특한 햅틱 효과를 낼 수 있습니다! 이 컴포넌트에 있는 어테뉴에이션(감쇠) 프로퍼티로 플레이어와 이펙트 사이 거리에 따라 포스 피드백 패턴 재생 강도를 결정할 수 있습니다. 어테뉴에이션 프로퍼티는 컴포넌트에서 직접 지정하거나, 콘텐츠 브라우저에서 Force Feedback Attenuation (포드 피드백 어테뉴에이션) 애셋으로 만들어 다수의 컴포넌트에 재사용할 수 있습니다. 포스 피드백 컴포넌트는 오디오, 데칼, 이미터와 비슷한 방식으로 블루프린트에서 월드에 스폰시킬 수도 있습니다.

신기능: PlayStationⓇVR Aim Controller 지원

PlayStationⓇVR 의 언리얼 엔진 4 게임은 PlayStationⓇVR Aim Controller 지원을 통해 몰입도를 한층 강화시킬 수 있습니다.

AimController_01_notice.png

사용하려면 Motion Controller 컴포넌트의 Hand 값을 Gun 으로 바꿔주기만 하면 됩니다. PlayStationⓡVR Aim Controller 의 버튼은 Dual Shock 게임패드의 동일 버튼에 매핑됩니다.

신기능: 수학 머티리얼 노드

일반적인 연산에 머티리얼 함수나 커스텀 노드를 쓰지 않아도 될 수 있게끔 요청을 자주 받은 수학 머티리얼 노드를 몇 가지 추가했습니다.

Fast 태그 마킹된 노드는 실제 인스트럭션 대신 추정식을 사용합니다. 복잡한 버전의 머티리얼에 비해 퍼포먼스가 향상되지만, 입력상의 제한이나 정밀도가 떨어지는 상쇄 효과가 있습니다.

신기능: 예전 프레임 전환 머티리얼 노드

새로 추가된 Previous Frame Switch (예전 프레임 전환) 노드를 통해, 모션 벡터 생성 도중 사용되는 복잡한 머티리얼의 월드 포지션 오프셋 대체값을 지정할 수 있습니다.

Previous Frame Switch

기본적으로 월드 오프셋 머티리얼 파라미터는 두 번 컴파일하여 프레임 단위 이펙트가 디테일한 모션을 생성할 수 있도록 하지만, 파라미터가 프레임 단위로 바뀌는 경우 항상 최적의 결과를 내지는 못합니다. 새로운 스위치 노드는 사용자에게 제어할 수 있도록 하여 이 문제 해결을 시도합니다.

주: 이 기능을 사용하려면 프로젝트 세팅에서 Accurate velocities from Vertex Deformation (버텍스 디포메이션에서의 정확한 속도) 옵션을 켜야 합니다.

신기능: 미리 스키닝된 로컬 노멀 머티리얼 노드

이제 Pre-Skinned Local Normals (미리 스키닝된 로컬 노멀) 노드를 통해 (로컬 축 평행 삼면 머티리얼을 사용하여) 스켈레탈 메시의 자동 UV 매핑과 같은 효과를 낼 수 있습니다.

이 기능은 새로운 Pre-Skinned Local Normal 머티리얼 노드로 노출되어 있습니다. Pre-Skinned Local Position 노드와 비슷한 방식으로 작동하나, 스켈레탈 메시와 스태틱 메시의 로컬 서피스 노멀을 반환합니다. 이를 통해 추가적인 로컬 스페이스 메시 정렬 이펙트나, 동적인 표면 데이터를 다른 머티리얼에서 다시 읽어오는(read-back) 마스크에 써넣는 등의 좀 더 고급 활용도 가능합니다.

신기능: macOS 및 iOS 에서의 Metal 지원 강화

Metal 지원이 확장되어 macOS 10.12 Sierra & iOS 10 에서 Apple 이 추가한 다수의 신규 API 및 셰이더 언어 기능을 사용할 수 있게 되었습니다.

Mac 에서 언리얼 엔진의 테셀레이션 전체 기능이 완벽 지원됩니다. 새로운 Metal 테셀레이션 파이프라인을 사용한 Apple 과의 협업 덕분입니다. 이를 통해 전에는 불가능했던 디스플레이스먼트나 월드 포지션 오프셋 기능을 Mac 에서 사용할 수 있게 되었습니다. 엘리멘탈 샘플이 Mac Metal 에서 기본적으로 테셀레이션을 사용하도록 업데이트되었습니다.

Mac 과 iOS 둘 다 Metal Shader 표준 버전을 프로젝트 세팅으로 지정하는 기능을 지원하여, 신기능을 적용할지 하위호환성을 유지할지 여부를 개발자가 선택할 수 있습니다. 새로운 Metal v1.2 표준 기능을 켜면, 모든 Metal 플랫폼에서 Unordered Access Views (비순서 접근 뷰)로 픽셀 셰이더를 사용하여 다른 RHI 에서처럼 임의의 데이터를 생성할 수 있습니다.

Retina iMac 또는 Thunderbolt 를 통해 적합한 디스플레이가 부착된 Mac 에 HDR 렌더링을 지원하는 실험단계 옵션도 생겼습니다. 프로젝트 단위 HDR 세팅을 켜면 DCI-P3 색 공간을 지원하는 HDR 디스플레이에 렌더링할 수 있도록 Metal 을 환경설정합니다.

Metal 지원에 이제 개발용으로 기본 켜지며 Xcode 와 별도로 실행되는 내부 검증 레이어도 포함됩니다. 간헐적 또는 하드웨어 전용 문제 해결 지원을 위해 설치된 개발자 툴이 없어도 Metal 에서 실행중 발생하는 오류 관련해서 훨씬 자세한 정보를 보고받는 것이 가능합니다. 이 레이어는 퍼포먼스에 민감한 Test & Shipping 빌드에는 자동으로 컴파일에서 제외됩니다.

신기능: 시퀀서 이벤트 트랙 페이로드

시퀀서의 이벤트에 이제 데이터의 페이로드를 포함시켜, 시퀀스 재생에 대한 반응 방법 관련 보다 풍부한 맥락 정보를 가지고 이벤트를 발동시킬 수 있습니다. 페이로드가 있는 이벤트를 발동시키려면, 이벤트에 대한 파라미터를 정의하는 구조체를 만들고, 그것을 이벤트의 파라미터 구조체 프로퍼티에 적용합니다:

EventTrackPayloads_001.jpg

이벤트는 지정된 파라마터 구조체가 대상 함수의 프로토타입과 비트 단위로 호환된다는 가정 하에, 이벤트 맥락에서 함수 호출 및 커스텀 이벤트 발동이 가능합니다.

신기능: 시퀀서로 다이내믹 오브젝트 애니메이션

블루프린트를 사용해서 런타임에 시퀀스를 오브젝트에 적용할 수 있도록 시퀀서 트랙 바인딩 설정이 가능합니다! 시퀀서를 제작했던 것과 다른 오브젝트 애니메이션이 가능하다는 뜻입니다. 시퀀스에서 시퀀스 바인딩 식별자를 추출해 내려면, 새로운 GetSequenceBindings 노드를 사용하세요.

신기능: 시퀀서 UI 개선

시퀀서에 생긴 Transform Keys/Sections (키/섹션 트랜스폼) 툴을 통해 현재 선택의 위치나 스케일을 조절할 수 있습니다.

기타 개선사항:

  • 이제 트랙을 복사하여 호환되는 오브젝트에 붙여넣는 것이 가능합니다.

  • 마스터 시퀀스 안에 있는 샷을 볼 때, 이제 그와 관계된 시간에서 전체 시퀀스를 평가합니다. Evaluate Sub Sequences in Isolation (서브 시퀀스 단독 평가) 옵션을 설정하여 샷 자체를 분리해낼 수 있습니다.

  • 컴포넌트 키프레임 기능이 향상되었습니다.

  • 트랙 붙이기는 이제 단순 트랜스폼 일치가 아닌, 액터를 대상 위치에 붙입니다. 이를 통해 붙어있는 것과 상대 트랜스폼 모두 한꺼번에 키 시퀀스 작업을 할 수 있습니다.

신기능: 시퀀서 오디오 볼륨 / 피치 커브

이제 시퀀서에서 오디오 섹션의 볼륨과 피치를 제어할 수 있습니다. 디자이너가 페이드 인, 페이드 아웃, 기타 이펙트 구성이 가능합니다.

신기능: 블렌드스페이스 에디터 개선

블렌드스페이스 에디터의 모양이 바뀌고 작업방식이 개선되었습니다!

EventTrackPayloads_001.jpg

 

 

  • 여러가지 방식의 샘플 프로퍼티 변경 - 샘플 드래그 앤 드롭에 추가로, 맥락 메뉴와 스핀 박스 방식으로 샘플 값 또는 애니메이션 시퀀스를 변경할 수 있습니다.

  • Shift 를 눌러 블렌드스페이스 (핀 )미리보기 - 다양한 각도, 줌 레벨 등으로 메시를 미리볼 수 있도록 하기 위해 프리뷰 값에 핀을 설정하는 기능을 추가했습니다. Shift 키를 누른 채 미리보기 값을 움직일 수 있습니다.

  • 그리드 크기를 변경하면 새로운 그리드로 샘플 스냅 - 그리드 분할 수 또는 어느 한 축 크기가 변경되면, 가장 가까운 그리드 지점으로 기존 샘플을 끌어 붙입니다. 유효한 위치를 찾지 못한 샘플은 유효하지 않음(invalid) 마킹하고 빨갛게 그립니다.

  • 드래그 앤 드롭 작업 - 애니메이션 툴 애셋 브라우저에서의 드래그 앤 드롭 작업 확인 및 미리보기가 개선되어 샘플이 배치될 위치와 애니메이션이 블렌드 스페이스에 유효한지 여부가 표시됩니다.

  • 늘여서 맞춤 vs 가장 큰 축에 맞도록 늘이기 - 그리드가 차지하는 UI 공간이 변경되었으니, 그리드를 전체 레이아웃 공간에 맞춰 늘이거나, 가장 큰 축에 맞춰 늘이도록 하는 기능을 추가했습니다. 가장 큰 축은 그리드의 최대 폭 또는 높이가 된다는 뜻입니다.

신기능: 포즈 스냅샷

블루프린트에서 런타임 스켈레탈 메시 포즈를 캡처하여 애님 블루프린트에서 사용할 수 있는 기능을 추가했습니다!

(래그돌 시뮬레이션 이후) 사망 포즈에서 get up (일어나기) 애니메이션으로 블렌딩할 때 유용하게 쓰일 수 있습니다. 포즈 스냅샷을 변수에 저장하여 나중에 스켈레탈 메시 컴포넌트와 사용할 수도 있습니다.

신기능: 질량 프로퍼티 디버깅

피직스 오브젝트에 관련된 질량 중심 및 관성 텐서를 시각화시키는 기능을 추가했습니다.

MassProperties_Web_04.jpg

질량 프로퍼티 시각화는, 새로운 표시 플래그를 (표시> 고급> 질량 프로퍼티) 켜면 됩니다. 각 축의 두께는 해당 축의 관성 강도를 나타냅니다.

신기능: 커브를 본에 링크

애니메이션 커브는 이제 스켈레톤의 특정 본에 링크시켜 LOD 변경시 본과 함께 컬링되도록 할 수 있습니다. 얼굴 애니메이션 구성시 특히 유용합니다. 레이어 블렌딩과 함께 사용하여, 잘못된 레이어에서 온 커브 값 덮어쓰기를 방지하는 것도 가능합니다.

신기능: 커브 애니메이션 변경 노드

이제 애니메이션 그래프에서 임의 수학 로직을 사용하여 애니메이션 커브를 변경할 수 있습니다. 보다 역동적으로 구동되는 애니메이션이 가능합니다.

새로운 Modify Curve 노드를 추가한 후 우클릭하여 변경하고자 하는 커브를 선택할 수 있습니다. 그러면 각 커브는 그 로직을 연결할 수 있는 float 입력 핀으로 나타납니다.

신기능: 폰트 애셋 개선

이제 새로운 Font Face (폰트 페이스) 애셋으로 폰트 애셋끼리 폰트 데이터를 공유시켜 메모리 사용량을 줄이고 안정성을 향상시킬 수 있습니다!

폰트 페이스는 이제 폰트 데이터를 저장하는 애셋으로, 이 애셋은 단순히 폰트 애셋에 레퍼런싱됩니다. 즉 같은 폰트 데이터를 다수의 폰트 애셋, 심지어 하나의 폰트 애셋 내 다수의 타입 페이스에서도 재사용할 수 있다는 뜻입니다. 기존 폰트 애셋은 로드 도중 내부 폰트 데이터를 삽입된 폰트 페이스 애셋으로 자동 업그레이드합니다. 폰트 에디터를 사용하여 삽입된 애셋을 실제 폰트 페이스 애셋으로 분리시키고 나중에 편집 및 공유할 수도 있습니다.

신기능: 리눅스 ARM64 지원

리눅스 실행 ARM64 (AArch64) 디바이스가 지원됩니다. 참고로 엔진 실행을 위해서는 데스크탑 OpenGL 3.2 이상을 지원하는 디바이스여야 합니다.

신기능: NVIDIA SLI 용 대체 프레임 렌더링(AFR) 지원

이제 엔진에 Nvidia SLI 환경설정용 AFR 렌더링이 지원되어, 다수의 그래픽 카드가 감지되면 뛰어난 퍼포먼스를 낼 수 있습니다. 가장 큰 향상 부분은 렌더러가 GPU 사이 프레임간 종속성을 가급적 빨리 복사하는 데서 옵니다. 개발자는 NVIDIA 와의 협업을 통해 가능한 경우 AFR 로 자동 전환이 가능하도록 게임 테스트를 받아야 할 것입니다.

신기능: 모바일 VR 용 모노스코픽 파 필드 렌더링 (실험단계)

모노스코픽 파 필드 렌더링으로 원거리의 오브젝트를 한 번만 렌더링하여 퍼포먼스를 크게 증폭시킬 수 있습니다!

오브젝트가 렌더링되는 거리가 카메라에서 멀어질수록 스테레오 확산 차는 줄어듭니다. 어떤 콘텐츠에서는, 오브젝트가 카메라에서 너무 멀리 떨어져 있을 때 스테레오 렌더링 결과가 일반 모노스코픽 렌더링 결과와 구분되지 않아, 다량의 프레임에서 스테레오 렌더링을 통한 혜택을 거의 보지 못합니다. 모노스코픽 파 필드 렌더링은 씬을 근처와 원거리 두 클리핑 면으로 나누는 방식으로 이를 활용합니다. 클리핑 면 근처 부분의 모든 것은 스테레오로 렌더링하고, 원거리 부분은 한 번만 렌더링한 다음 근처 부분 결과와 합성하는 것입니다. 원거리 오브젝트가 많은 콘텐츠의 경우, 퍼포먼스상으로 커다란 이득이 될 수 있습니다.

모바일 VR 프로젝트에 모노스코픽 파 필드 렌더링을 켜려면, 프로젝트 세팅 -> 렌더링 -> VR 아래 체크박스를 선택합니다. 현재 모바일 멀티 뷰와 모노스코픽 파 필드를 동시에 지원하지는 않으며, 모바일 HDR 옵션은 꺼야 합니다.

신기능: 모바일에서 커스텀 스텐실

모바일 디바이스에서 이제 포스트 프로세싱 머티리얼의 Custom Stencil (커스텀 스텐실)을 사용할 수 있습니다. MobileHDR 옵션은 켜고 Mosaic 이외 디바이스가 필요합니다.

프로젝트에서 이 기능을 켜려면, 프로젝트 세팅 -> 렌더링 -> 포스트 프로세싱에서 Custom Depth-Stencil Pass 를 Enabled with Stencil 로 설정하면 됩니다.

신기능: 모바일 셰이더 메모리 감소 옵션

이제 모바일 게임에서 활용하지 않는 라이팅 구성에 대한 셰이더 순열을 끌 수 있습니다.

프로젝트 세팅 -> 렌더링에서 찾을 수 있는 다음 세팅을 통해 메모리 사용량과 앱 패키지 크기를 줄일 수 있습니다:

  • Allow Static Lighting (스태틱 라이팅 허용) 끄기

  • Support Combined Static and CSM Shadowing (스태틱 및 CSM 섀도 혼합 지원) 끄기

  • Support Distance Field Shadows (디스턴스 필드 섀도 지원) 끄기

  • Support Movable Directional Lights (무버블 디렉셔널 라이트 지원) 끄기

  • Max Movable Point Lights (최대 무버블 포인트 라이트) 0 으로 설정

  • Use Shared Movable Point Light Shaders (공유 무버블 포인트 라이트 셰이더 사용) 켜기

SunTemple 샘플에서 위 옵션 설정을 통해 사용되지 않는 라이팅 구성을 제거했더니 안드로이드 패키지 크기가 22MB 줄었습니다.

신기능: 안드로이드 그래픽 디버거 지원 통합

안드로이드 어플리케이션은 이제 써드 파티 Graphics Debugger (그래픽 디버거)를 지원하도록 패키징 가능합니다. 디바이스의 GPU 에 따라 Mali Graphics Debugger 또는 Adreno Profiler 중에서 선택할 수 있습니다. 그래픽 디버거 옵션은 프로젝트 세팅 -> 안드로이드에서 찾을 수 있습니다.

먼저 GPU 벤더 웹사이트에서 해당 디버거를 다운로드하여 설치해야 하는데, 각각 디바이스 디버깅을 위한 환경설정 구성을 위해 추가로 해 줘야 하는 작업이 조금 있습니다. 디버거 유형 선택 후 나타나는 지시를 따르도록 하세요.

또한 특정 GPU 디버거를 지원하도록 앱을 패키징한다면, 다른 GPU 가 장착된 디바이스에서는 정상 작동하지 않을 수 있습니다.

신기능: 안드로이드 및 iOS 에서 GPS 데이터용 위치 서비스

안드로이드 및 iOS 용 GPS 데이터 접근을 제공해 주는 위치 서비스가 새로 생겼습니다. 새로운 OnLocationChanged 델리게이트를 사용할 수 있으며, 블루프린트 노드는 Services->Mobile->Location 아래 제공됩니다.

신기능: iOS 에서 오디오 스트리밍

iOS 에서 오디오 스트리밍이 구현되었습니다. 이미 스트리밍 마킹된 애셋은 이 빌드를 시작으로 제대로 스트리밍될 것입니다.

신기능: iOS 용 원격 알림

이제 iOS 용 원격 알림 기능이 지원됩니다. 여기에는 알림 처리를 위한 게임내 콜백은 물론 앱 스토어 지원에 필요한 plist 정보를 제대로 구성하는 방법도 포함되어 있습니다.

신기능: 비히클 지원 플러그인으로 이동

PhysX Vehicle 지원을 옵션 플러그인으로 이동시켰습니다! 비히클을 사용하지 않는 게임에서 이 기능을 제외시키고 디스크 공간과 메모리를 절약하기가 쉬워집니다. 이 작업으로 엔진에 여러가지 유용한 피직스 익스텐션 포인트도 (예: OnPhysSceneInit/Term, OnPhysSceneStep) 추가되어 개발자 자체적으로 비슷한 시스템을 만들가기 쉬워졌습니다.

주: 예전 (엔진에서 폐기된) TireType 애셋을 새로운 (PhysXVehicles 플러그인에 정의된) TireConfig 애셋으로 이주시키려면, 수동 작업을 해 줘야 합니다. UE4 에디터에서 사용할 수 있는 새로운 콘솔 명령 ConvertTireTypes 를 사용하면 됩니다. 그러면 TireConfig 애셋을 새로 만들고, 프로퍼티를 복사해온 뒤, VehicleWheel 블루프린트에 할당해 줍니다. 그 후 예전 TireType 애셋은 지워도 됩니다.

기타 자세한 내용은 출시 노트 전문을 확인해 주시기 바랍니다.