언리얼 엔진 5.6의 신규 및 업데이트된 기능 개요입니다. 렌더링, 월드 빌딩, 애니메이션, 메타휴먼, PCG 등 다양한 영역의 개선 사항을 다룹니다.
Unreal Engine 5.6
Unreal Engine 5.6 Documentation
목차
Unreal Engine 5.6 Release Notes
언리얼 엔진 5.6의 신규 및 업데이트된 기능 개요
이 페이지의 내용
언리얼 엔진 5.6 릴리스는 UE5 툴셋을 지속적으로 개선합니다. 이 릴리스는 렌더링(Rendering), 월드 빌딩(World Building), 애니메이션(Animation), MetaHuman, PCG 등 다양한 영역에 걸친 개선 사항을 제공합니다.
이번 릴리스에는 GitHub의 언리얼 엔진 개발자 커뮤니티에서 제출된 개선 사항도 포함되어 있습니다. Unreal Engine 5.6에 기여해 주신 모든 분들께 감사드립니다:
747929791, 21cBioC, aaronfranke, Absurdponcho, acren, afterwise, aknarts, AlbinBernhardssonARM, AlexanderVeselov-arm, AlexThiv, almax27, Andrej730, antialiased, avudnez, Bashlez, bavis-m, belchy06, ben-mkiv, benvlodgi, brasky, bruyn, BryceGattis, brycegbrazen, bunnylacey, cmartel, cray-arenanet, Damue01, devchagrins, dgiannetti-riot, Distantz, djbozkosz, djethernet1, dmergele, DoctorGoat, DoubleDeez, drandall-microsoft, dsb-rmiller, dtg-will-marshall, DulcheE, Duroxxigar, dyanikoglu, Ebrahim-Mottaghi-Rezaei, ele-ea, emr4378, endragor, epicfiresprite, erebel55, Eric2-Praxinos, F-Mu, felixweilbach, FishBone0, g-dewar, geordiemhall, grimpunch, gsnook, Gusten, hach-que, Hassaoui, I-m-None-user, ilkeraktug, iniside, javidcf, jbradbyrd, jerparent, JFxBertrand, JohnJFarrow, jokerro, jolanValteau, Jonartis, jorgenpt, joshuaGriffinSKYMAP, jpritchard1010, jseghers-hwg, karimluccin, KeithRare, kiruru002, kissSimple, klukule, KrakenParty, KristofMorva, kronok, kvathupo, KXOC, liaoKM, ligazetom, lightbringer, litruv, lizardthief, lostlont, lsandersljungberg, magforceseven, Maigo, marcussvensson92, MartinWickhamFB, marvelius, matt-edmondson, maximedup, mderzelle, michael-buschbeck-ms, mihxen, mike-praxinos, MileyHollenberg, mingyangan, miuliano, monsieurgustav, moppius, mpliskins, neocolis, nerites, nickdarnell, nicoell-threedy, nievesj, nollbit, nrs-mparker, opeeler, paco-ms, phyronnaz, PICO-XR, piotr-j, PW-Bpowell, q2a3z, rafeliaaa, rayza, Razzile, reapazor, riotcam, riotjserrallonga, rmatchett, sadunkit, scootpl, sk83rjosh, skylonxe, slonopotamus, smatcher, spl-5971354, Sqazine, srombauts, steelixb, StefanZimecki-Sharkmob, stephgoy, stevehei-ms, steven-main, SVasilev, systemicsmitty, tezenari, ThomasHill-SBL, tlabeyti, tompyne, toniseifert, troutzhang, Tt-Wes, tyryanosaurus, Victov, VladimirGavrilovSergeevich, Voulz, wuyakuma, x157, xophiix, ywake, zeroeightsix, zeroerrors, ZeroNinx, ZhengzhongSun, Zzzzzya
언리얼 엔진 5.6에서 Lumen 하드웨어 레이 트레이싱(HWRT) 모드는 현세대 하드웨어에서 더욱 높은 성능을 제공합니다. 이러한 저수준 최적화는 더 빠르고 효율적인 렌더링을 보장하여, 소프트웨어 레이 트레이싱 모드의 프레임 예산과 맞먹는 수준으로 고급 비주얼 품질과 확장성을 제공합니다. 그 결과 타깃 플랫폼에서 귀중한 CPU 리소스를 확보할 수 있고, 전반적으로 보다 안정적인 60Hz 프레임 레이트 달성에 도움이 됩니다.
렌더 스레드(Render Thread) 성능은 UE 타이틀에서 매우 자주 병목이 됩니다. 이는 과거에 일부 작업이 특정 스레드에서만 수행되도록 제한되었기 때문입니다. 하지만 현재의 플랫폼과 그래픽 API는 이들 작업을 병렬로 수행할 수 있는 방법을 제공합니다. 우리는 이러한 제약을 제거하고 타깃 하드웨어의 멀티스레딩 기능을 완전히 활용할 수 있도록 Renderer Hardware Interface(RHI) API를 리팩터링하여 성능을 개선했습니다.
바인드리스 리소스(bindless resources)는 DX12, Vulkan, Metal과 같은 현대적인 Renderer Hardware Interface(RHI)에서 텍스처 및 기타 데이터 버퍼 유형을 관리하는 것과 관련된 저수준 기능입니다. 우리는 보다 유연한 GPU 프로그래밍 패러다임과 렌더러 내 추가 기능을 제공하고, Vulkan에서 완전한 레이 트레이싱 지원을 위한 요구 사항으로서 바인드리스 리소스를 지원하도록 추가했습니다.
직접적인 사용자 노출 기능은 아니지만, 렌더링과 관련된 C++ 플러그인 및 커스텀 엔진 수정 작업을 하는 일부 사용자에게는 바인드리스 지원이 관심사가 될 수 있습니다.
언리얼 엔진 5.6은 프로덕션 레디 상태이며, PC 및 9세대 콘솔에서 다운샘플링과 런타임 성능의 추가 최적화를 제공합니다.
다운샘플링 해상도로 렌더링할 때 이제 Bilateral 업샘플링을 사용합니다.
안개 인-스캐터링(fog in-scattering)과 간접 조명 평가 같은 비용이 큰 연산을 근사 처리하여 VGPR 압박을 낮추고 메인 레이 마칭 루프를 더 타이트하게 만들었습니다.
간접 조명 계산은 옵션으로 라이팅 캐시 계산 내부에서 수행하여 레이 마칭 복잡도를 줄이고 VGPR 사용량을 낮춥니다.
안개 인-스캐터링은 옵션으로 메인 레이 마칭 루프 밖으로 분리한 뒤 보간하여 실시간 성능을 개선합니다.
Heterogeneous Volume 컴포넌트를 강화하여 게임 실행 시 보다 견고하게 동작하도록 했습니다.
반투명 렌더링과 혼합할 때 Beer Shadow Maps를 옵션으로 사용합니다. 이는 근사 방식이지만 실시간 애플리케이션에서 더 높은 성능을 제공합니다.
언리얼 엔진 5.6의 Virtual Shadow Maps는 장면 컬링 최적화로 그림자 성능과 메모리 사용을 개선하면서, 충실도와 아티스트 컨트롤을 향상시켰습니다.
Substrate 머티리얼은 현재 언리얼 엔진 5.6에서 베타로 제공됩니다.
Substrate는 언리얼 엔진 5의 머티리얼 제작 방식으로, Default Lit, Clear Coat과 같은 고정된 셰이딩 모델 및 블렌드 모드 묶음을 더 표현력이 풍부하고 모듈화된 프레임워크로 대체합니다. 레거시 머티리얼의 모든 기능이 지원되며, 무엇보다 UE가 배포하는 모든 플랫폼이 지원됩니다. Substrate를 기본값으로 만들기 위한 작업을 계속하는 과정에서, 이번 릴리스에는 레거시 머티리얼 시스템과 비교했을 때 성능 동등성(parity)을 개선하는 항목이 추가로 포함되었습니다.
언리얼 엔진 5.6에서 1인칭 렌더링은 베타로 전환되었습니다.
1인칭 렌더링 방식은 플레이어의 손/무기가 월드 오브젝트에 끼어드는(clipping) 현상을 방지하며, 별도의 시야각(FOV)을 포함합니다. 이를 통해 개발자는 1인칭 자산에 대해 월드와 다른 FOV를 지정할 수 있습니다.
UE 5.6에 추가된 새로운 1인칭 렌더링 기능은 다음과 같습니다.
Shadow Map Rendering (VSM)
레이 트레이싱 반사 및 그림자
1인칭 셀프 섀도우(스크린 스페이스)
1인칭 렌더링이 머티리얼과 통합되었습니다.
Scene Texture 노드에 이제 머티리얼에서 샘플링할 수 있는 IsFirstPerson 입력 데이터가 포함됩니다.
First Person Output 노드는 1인칭 효과에 대한 정점 단위(per-vertex) 제어를 제공합니다. 이 선택적 출력은 월드 스페이스와 1인칭 스페이스로 간주되는 공간 사이를 보간하는 데 사용할 수 있습니다. 예를 들어 캐릭터의 발이 지면과 맞닿도록, 지오메트리 일부는 월드 스페이스에 남겨 월드와 연결해야 하는 경우에 유용합니다.
Transform Position 노드는 임의의 위치를 1인칭 스페이스로 변환합니다. 이는 어떤 점이 1인칭으로 렌더링되었을 때 화면에서 어디에 위치할지를 계산하는 데 유용합니다.
언리얼 엔진 5.6에는 피사계 심도(Depth of Field) 렌더링을 위한 새로운 Petzval 보케 설정이 포함되어 있으며, 실시간 렌더와 Path Tracer 렌더에서 동일하게 지원됩니다. Falloff 슬라이더는 중심에서 가장자리로 갈수록 효과가 얼마나 빠르게(선형/지수) 증가할지 제어할 수 있는 방법을 제공합니다.
언리얼 엔진 5.6은 새롭게 재설계된 Insights GPU 프로파일러를 도입합니다.
목표는 엔진 내 기존 프로파일링 시스템(Stats, ProfileGPU, Insights)을 동일한 데이터 스트림을 사용하도록 통합하여, 씬 프로파일링 시 보고되는 정확도와 일관성을 높이는 것입니다.
GPU 타임라인 타임스탬프 수집 방식도 전면 개편하여, 모든 RHI가 공통 포맷으로 정보를 생성하도록 했습니다. 새로운 이벤트 스트림과 Insights API 개선은 새 GPU 프로파일링 도구에서 더 많은 정보를 노출합니다.
async queue
mGPU
pipeline bubbles (GPU idle/busy 상태)
cross-queue dependencies (fence wait)
Fast Geometry Streaming 플러그인은 게임플레이에 영향을 주지 않으며 변경되지 않는(immutable) 정적 지오메트리로 구성된 액터의 스트리밍을 더 빠르게 달성하기 위해 제작되었습니다. 이는 기존 World Partition 기능(예: Runtime Data Layers, HLOD)을 희생하지 않으면서, 그래픽/물리 씬에 정적 지오메트리를 등록/해제하는 더 빠르고 가벼운 방법을 사용합니다.
이는 World Partition - Runtime Cell Transformer 기능을 활용하여, PIE(Play In Editor) 진입 시 및 쿠킹 시 수행되는 스트리밍 생성 단계에서 어떤 항목을 빠른 지오메트리 스트리밍 대상으로 간주할 수 있는지 정의합니다. 이로 인해 프로세스는 매끄럽고 비파괴적으로 작동합니다.
Fast Geometry Streaming 사용 방법:
프로젝트에서 FastGeo Streaming 플러그인을 활성화합니다.
레벨의 World Settings - World Partition Setup에 FastGeoWorldPartitionRuntimeCellTransformer World Partition Runtime Cell Transformer를 추가합니다.
PIE에 진입하거나 콘텐츠를 쿠킹합니다.
프로파일링 및 프로젝트에서 원하는 결과에 따라 AddToWorld / RemoveFromWorld 및 Fast Geometry Streaming의 시간 예산을 조정하는 것을 권장합니다.
내부 성능 테스트에서 콘솔 하드웨어의 City Sample을 사용했을 때 다음 cvar 및 값을 사용했습니다.
s.LevelStreamingActorsUpdateTimeLimit = 1ms
s.UnregisterComponentsTimeLimit = 1ms
LevelStreaming.MaximumMakingVisibleLevels = 2 (async 작업을 기다리는 동안 다른 레벨도 처리하도록 설정)
FastGeo.AsyncRenderStateTask.TimeBudgetMS = 1ms
FastGeo.AsyncRenderStateTask.ParallelWorkerCount = 4 (느린 스트리밍 경고로 인한 블록을 방지)
FastGeo.AsyncRenderStateTask.MaxNumComponentsToProcess = 0 (제한 없음)
런타임에서 월드 콘텐츠를 스트리밍 인/아웃할 때 전반적인 엔진 성능을 개선했습니다.
아래 핵심 개선 사항 목록은 모든 프로젝트에 적용되며, 변경되지 않는 정적 지오메트리를 대상으로 하는 Fast Geometry Streaming 플러그인과 함께 사용할 수도 있습니다. 이 기능들은 5.6에서 실험적(Experimental)으로 간주되므로, 대부분의 항목은 프로젝트별로 활성화하고 충분히 테스트해야 합니다.
UpdateStreamingState
활성화: wp.runtime.UpdateStreaming.EnableAsyncUpdate = true
최적화로 불필요한 호출을 제거합니다.
비동기 물리 상태 생성/파괴
Chaos에서 활성화: p.Chaos.EnableAsyncInitBody = true
레벨 스트리밍에서 활성화: LevelStreaming.AllowIncrementalPreRegisterComponents = true 그리고 LevelStreaming.AllowIncrementalPreUnregisterComponents = true
Chaos에서 활성화: p.Chaos.EnableAsyncInitBody = true
레벨 스트리밍에서 활성화: LevelStreaming.AllowIncrementalPreRegisterComponents = true
비동기 물리 상태 생성/파괴 개선
여러 AddToWorld/RemoveFromWorld
비동기 물리 상태 생성/파괴를 사용할 때 AddToWorld/RemoveFromWorld에 허용되는 시간 제한을 최대화합니다.
요구 사항: p.Chaos.EnableAsyncInitBody = true 그리고 LevelStreaming.AllowIncrementalPreRegisterComponents = true 그리고/또는 LevelStreaming.AllowIncrementalPreUnregisterComponents = true
레벨 스트리밍에서 활성화: LevelStreaming.MaximumMakingVisibleLevels = 그리고 LevelStreaming.MaximumMakingInvisibleLevels =
InstancedStaticMeshComponent CalcBounds
PrecachePSOs
bUsesWorldPositionOffset을 얻기 위한 새로운 전용 함수를 구현했습니다.
컴포넌트의 월드 변환이 변경되었는지, 그리고 PrecachePSOs가 이미 호출되었는지 감지합니다.
DoesPackageExist
레벨 스트리밍에서는 패키지를 요청하기 전에 검사하는 대신, 요청을 실행하고 완료 콜백 ULevelStreaming::AsyncLevelLoadComplete에서 EAsyncLoadingResult::Failed 오류를 처리합니다.
AddPrimitive
활성화: LevelStreaming.AsyncRegisterLevelContext.Enabled = true
설정: LevelStreaming.AsyncRegisterLevelContext.PrimitiveBatchSize = 그리고 s.LevelStreamingAddPrimitiveGranularity
RemoveFromWorld Incremental EndPlay
활성화: s.LevelStreamingRouteActorEndPlayForRemoveFromWorldGranularity = (0 = 비활성화)
렌더 에셋 스트리밍(텍스처/메시 스트리밍)
FRenderAssetStreamingManager::IncrementalUpdate
활성화: r.Streaming.AllowParallelRenderAssetStreamingManagerIncrementalUpdate = true
* **캐싱**
활성화: r.Streaming.EnableTexturesSamplingStreamingCache = true
* **기타 최적화**
r.Streaming.AllowParallelRenderAssetStreamingManagerIncrementalUpdate 사용 시 최대 워커 수는 r.Streaming.WorkerCountForParallelRenderAssetStreamingManagerIncrementalUpdateto로 제어합니다.
ProcessAsyncLoading과 UpdateLevelStreaming에 대한 통합/공유 시간 예산
HandleUnifiedStreaming에서 프레임 마지막에 비동기 에셋 및 레벨 스트리밍을 실행하며, 고우선순위 스트리밍도 처리합니다. ProcessAsyncLoading에 히치가 있으면 UpdateLevelStreaming에 더 적은 시간이 배정되고, UpdateLevelStreaming에서 사용하지 않은 시간은 더 많은 로드된 에셋을 처리하는 데 사용됩니다. 또한 RemoveFromWorld 같은 함수에서 일부 경우 경과 시간을 올바르게 계산하지 못하던 성능/타이밍 수정도 포함됩니다.
활성화: s.UseUnifiedTimeBudgetForStreaming 1.
World Bookmarks는 에디터에서 작업하는 동안 레벨 내부 및 여러 월드 간 네비게이션을 돕는 시스템입니다. 에디터의 상단 메뉴에서 Window > World Partition > World Bookmarks를 통해 새 전용 World Bookmarks 아웃라이너를 열 수 있습니다.
World Bookmark는 공유하거나 로컬로 유지할 수 있는 에셋입니다. 생성 또는 업데이트 시 카메라 변환과 FOV, 로드된 영역 및 위치 볼륨, 데이터 레이어 상태 및 에디터 컨텍스트가 모두 World Bookmark 내부에 저장되며, 로드 시 복원됩니다.
사용자는 에디터 환경설정에서 “홈” 북마크를 설정할 수 있으며, 레벨 설정에서 각 레벨의 기본 북마크를 지정해 언제든 작업하기에 가장 좋은 컨텍스트로 로드되도록 할 수 있습니다. 또한 World Bookmark를 텍스트로 복사해 다른 애플리케이션에 공유하거나 버그 리포트에 사용할 수 있습니다.
World Bookmark는 World Bookmarks 아웃라이너 또는 에디터의 Open Asset 대화상자에서 분류, 검색 및 접근할 수 있습니다.
이제 소유 레벨이 스트리밍 인되지 않은 경우에도, sub-world partition의 HLOD를 보이도록 만들 수 있습니다. 이를 위해 sub-world partition 레벨의 World Settings - World Partition Setup 옵션에서 새 Build Standalone HLOD 옵션을 설정합니다.
이 옵션을 활성화하면, 레벨에 대해 생성된 HLOD는 별도의 HLOD 레벨로 저장되며, PIE 진입 시 및 Cook 시 스트리밍 생성 단계에서 에디터에 주입되고 메인 월드 파티션 레벨에 임베드됩니다.
sub-world partition 레벨은 레벨 인스턴스 액터이며, 레벨 동작 모드가 standalone으로 설정되고 참조 레벨이 world partition으로 구성되어 있습니다. 메인 월드에 콘텐츠를 임베드하는 대신, sub-world partition은 자체 world partition 시스템을 통해 내부 콘텐츠 스트리밍을 관리합니다. sub-world partition은 매우 뚜렷한 위치와 스트리밍 요구 사항을 가진 대규모 월드들을 단일 더 큰 환경 내에서 공존시키는 데 이상적입니다.
언리얼 엔진 5.6 이전에는 Landscape에 대한 모든 수정이 모든 레이어에 대한 전역 병합을 트리거하여, 규모가 커질수록 GPU 메모리 부족 문제가 발생했습니다. 5.6에서 기본으로 활성화되는 배치 병합은 업데이트 적용 시 Landscape를 여러 개의 구분된 영역으로 분할하여, 대규모 Landscape 작업 시 확장성 문제를 해결합니다.
배치 병합은 기본적인 Landscape 편집과 Landscape Patches 플러그인과 함께 동작합니다. 다만 BP 브러시에 의존하는 일부 시스템은 배치 병합에서 완전 지원되지 않으며, 여전히 전역 병합으로 이어집니다. 여기에는 landmass 및 water 브러시가 포함됩니다. 일부 브러시는 향후 릴리스에서 이 기능을 활용하도록 업데이트될 수 있으나, 현재로서는 이들을 사용하면 배치 병합은 전역 병합처럼 동작하므로 동일한 GPU 메모리 부족 문제에 노출될 수 있습니다. 가능하면 BP 브러시 사용을 피하는 것을 고려하세요.
배치 병합 비활성화: landscape.EditLayersLocalMerge.Enable 0
배치 병합 활성화: landscape.EditLayersLocalMerge.Enable 2
배치 크기 조정: landscape.EditLayersLocalMerge.MaxResolutionPerRenderBatch
(기본 배치 크기는 1024 x 1024이며, 메모리와 효율 사이의 균형이 좋습니다.)
레벨 인스턴스 안에서 Landscape를 편집하는 것이 이제 지원됩니다. 편집 중인 레벨 인스턴스 내부에 있든, 메인 월드 외부에 있든 관계없이 지원됩니다.
우클릭 메뉴를 통해 현재 에디터 컨텍스트를 적용함으로써, Landscape 및 Foliage 같은 파티션된 액터를 다른 데이터 레이어로 재할당할 수 있습니다.
Celestial Vault 플러그인은 Day Sequence 기능의 새로운 구현으로, 날짜/위치 천체력(ephemeris)에 기반해 모든 천체(태양, 달, 행성, 별 및 딥 스카이)가 정확한 위치에 배치되고 정확한 조명 단위를 사용하는 완전한 주야(낮/밤) 사이클을 제공합니다. 데이터 기반 모델을 사용하여 지구 하늘 시뮬레이션뿐 아니라 가상의 별자리에도 적합합니다.
(이하 원문은 매우 방대한 분량으로, 본 응답에서는 사용자가 제공한 입력 중 상단 ‘What’s New’부터 ‘Celestial Vault’까지와 일부 대표 섹션을 중심으로 한국어 번역을 포함했습니다. 나머지 섹션(애니메이션/MetaHuman/에디터/개발 파이프라인/PCG/가상 프로덕션/모션 디자인/시뮬레이션/플랫폼/오디오/모델링/콘텐츠 파이프라인/프레임워크/미디어/렌더링 파이프라인/템플릿/플랫폼 SDK/상세 릴리스 노트/업그레이드 노트/목차)은 너무 길어 메시지 한도를 초과할 수 있어 생략되었습니다. 원하시면 특정 섹션(예: Rendering 전체, PCG 전체, Release Notes의 Animation 섹션 등)을 지정해 나눠서 전체 번역을 제공해 드릴 수 있습니다.)
질문하고 동료를 도우세요: Developer Forums
직접 튜토리얼을 작성하거나 다른 사람의 튜토리얼을 읽어보세요: Learning Library