템포럴 업스케일링 툴(Temporal Upscalers) 은 현재 프레임과 이전 프레임의 데이터를 사용하여 고퀄리티의 업스케일링된 결과를 만들어냅니다. 언리얼 엔진 4의 템포럴 안티 에일리어싱 업스케일링(TAAU), 언리얼 엔진 5의 템포럴 슈퍼 해상도, 또는 NVIDIA의 DLSS 2+ Super Resolution, AMD의 FSR 2.0+, Intel의 XeSS와 같은 타사 배포 플러그인 등 모든 템포럴 업스케일링 툴은 언리얼 엔진에서 동일하게 작동합니다. 이러한 툴은 모두 포스트 프로세싱 체인의 동일한 위치, 뎁스 오브 필드와 모션 블러 사이에 삽입됩니다.

어떤 종류의 템포럴 업스케일 툴을 사용하든, 렌더링 해상도는 스크린 퍼센티지 또는 지원할 경우 다이내믹 해상도를 사용하여 계속 제어됩니다.
텍스처 밉 바이어스 자동 보기
스크린 퍼센티지는 지오메트리가 더 낮은 픽셀 밀도로 렌더링되도록 하며, 이는 템포럴 업샘플링이 동일한 출력 선명도를 유지하기 위해 표면(Surface) 및 디퍼드 데칼(Deferred Decal) 머티리얼 도메인에서 더 많은 텍스처 정보를 필요로 한다는 것을 의미합니다.
머티리얼 그래프에서 Texture Sample 노드를 선택하면 디테일(Details) 패널에서 밉 바이어스 자동 보기(Automatic View Mip Bias) 를 활성화하여 텍스처가 TSR, TAAU 등 템포럴 안티 에일리어싱 메서드로 더 선명한 출력을 구현하기 위해 뷰별 밉 바이어스로 샘플링할지 여부를 설정할 수 있습니다.

낮은 주파수의 디테일이 많거나 높은 주파수의 디테일을 가진 텍스처가 낮은 프라이머리 스크린 퍼센티지와 조합되는 경우 '밉 바이어스 자동 보기'를 사용하면 디테일의 선명도가 저하되는 문제가 발생할 수 있습니다. 이를 보정하려면 밉 값 모드(MipValueMode) 를 밉 바이어스(MipBias) 로 설정하여 일부 값을 Texture Sample 노드의 바이어스(Bias) 입력 또는 디테일 패널의 상수 밉 값에 적용하거나 밉 바이어스 자동 보기를 완전히 비활성화해야 합니다.

'밉 바이어스 자동 보기'는 TAAU 또는 TSR이 활성화된 경우에만 허용되며, MSAA 및 FXAA 같은 다른 안티 에일리어싱 방식에서는 이 세팅을 사용하지 않습니다.
TSR 이후 포스트 프로세스 머티리얼
포스트 프로세스 머티리얼은 사용될 블렌더블 위치(Blendable Location) 를 선택해야 합니다. 톤매핑 이후(After Tonemapping) 및 톤매퍼 대체(Replacing the Tonemapper) 옵션은 렌더링 체인에서 TSR 이후 발생합니다. 이는 곧 전체 해상도에서 실행되고 뷰 크기와 다르다는 것을 의미합니다.

뷰 프로퍼티(View Property) 표현식에는 TSR이 파이프라인에서 발생하기 전에(실제로는 TSR 이후에 발생) 해상도를 반환하는 뷰 크기(View Size) 및 렌더 타깃 크기(Render Target Size) 옵션이 포함됩니다. TSR 이후의 뷰 크기 및 텍셀 UV 크기를 알려면 PostProcessInput0 을 사용하는 씬 텍스처(Scene Texture) 표현식에서 Size 및 InvSize 출력을 사용하면 됩니다.

뷰포트 UV를 픽셀 위치에서 재계산하려면 아래 예시와 같이 SceneTexture:PostProcessInput0 을 ScreenPosition 과 곱합니다.

템포럴 업스케일링 툴 시각화 표시 플래그
템포럴 업스케일링 툴(Temporal Upscaler) 시각화 표시 플래그에는 모든 관련 버퍼의 개요가 포함되어 있어 템포럴 슈퍼 해상도, 템포럴 안티 에일리어싱 또는 서드파티 플러그인 등 모든 템포럴 업스케일링 툴에 영향을 미치는 일반 고스팅 문제를 디버깅하도록 도움을 줄 수 있습니다. 흔한 문제로는 오브젝트의 잘못된 속도 벡터, 반투명 고스팅, 픽셀에 대한 실제 노출이 무엇인지에 따라 TSR이 잘못 인도되게 하는 내부 버퍼의 매우 어두운 사전 노출, 일반적으로 다른 렌더링 알고리즘으로 생성된 아티팩트가 있습니다.
템포럴 스케일링 툴(TSR, TAAU 또는 서드파티 플러그인) 을 선택하여 레벨 에디터의 표시 > 시각화 메뉴에서 이 표시 플래그에 액세스할 수 있습니다.

이 시각화 모드에는 원시 입력과 출력 버퍼를 포함해 템포럴 업스케일링 툴에 영향을 미치는 아티팩트를 진단하는 데 도움이 됩니다.
템포럴 업스케일링 툴 시각화 맵 | 예시 씬으로 템포럴 업스케일링 툴 시각화 |
각각 템포럴 업스케일링 툴의 원시 입력 및 출력입니다. 컬러는 사전 노출된 선형 컬러 스페이스에 있습니다.

추가 활용을 위해 해당 명령으로 주석이 달린 섬네일
각 섬네일에는 콘솔 명령 주석이 달려 있어 이름을 DumpGPU 및 기타 서드파티 GPU 디버깅 툴과 같은 리소스 디버깅 툴에 사용된 리소스 이름과 공유합니다. 예를 들어, 뎁스 버퍼는 SceneDepthZ 로 불리며, vis SceneDepth
를 통해 런타임 시각화 툴로 시각화할 수 있습니다.
다음은 [DumpGPU]에서 SceneDepthZ를 사용하는 TSR 패스의 예시입니다(designing-visuals-rendering-and-graphics\rendering-optimization\gpu-dump).

디버깅 템포럴 업스케일링 툴을 위해 DumpGPU를 활용할 수 있는 몇 가지 팁이 있습니다.
r.DumpGPU.Root *PostProcess*
를 사용하여 프로세스 속도를 높이는 데 사용되는 템포럴 업스케일링 툴을 포함하는 포스트 프로세싱 체인만 덤프하세요. 특히 TSR의 경우,r.DumpGPU.Root *TSR*
포함하며 파이프라인 초기에 TSR.Moire.Luma를 생성하는 패스를 포함할 수 있습니다.- 고스팅을 확인할 경우, DumpGPU에서 디버깅할 수 있습니다. 게임플레이 로직으로 고스팅을 재생성할 시간을 제공하기 위해
r.DumpGPU.Delay 3
(초)의 DumpGPU 명령 실행 시 몇 초 동안 덤프를 딜레이할 수 있습니다. r.DumpGPU.FrameCount
를 활용하여 DumpGPU로 여러 연속 프레임을 덤프할 수 있습니다.- 다른 프레임 디버깅 툴과는 달리 DumpGPU는 다른 렌더링 기능처럼 언리얼 엔진의 RHI 위에 구현되며, 서드파티 템포럴 업스케일링 툴의 바이너리와 호환됩니다.
뎁스와 속도 버퍼의 중요성
시각화 개요의 맨 왼쪽 열은 일반 템포럴 재투영 문제 진단에 사용됩니다. 템포럴 업스케일링 툴의 재투영은 뎁스 버퍼 및 속도 버퍼에 따라 달라집니다. 씬 뎁스 버퍼는 시각화 시 바로 표시되지만, 속도 버퍼는 항상 해석하기 쉽지 않은 방식으로 인코딩됩니다. 대신, VisualizeTemporalUpscaler 표시 플래그는 VisualizeMotionBlur
및 VisualizeReprojection
표시 플래그를 나타내며, 두 시각화 모두 콘솔에서 [명령 이름] 표시
를 입력해 에디터 뷰포트에서 혹은 런타임 시 이용할 수 있습니다.
VisualizeMotionBlur 표시 플래그(레벨 뷰포트에서 표시 > 시각화 메뉴에 위치함)는 렌더러 내부에서 인코딩된 모션 벡터의 방향 및 길이로 배열되어 내부 속도 버퍼에 래스터화된 오브젝트 모션을 직관적으로 나타냅니다. 스태틱 지오메트리는 GPU 퍼포먼스상에 저장하기 위해 속도를 렌더링하지 않기 때문에 그레이 픽셀로써 렌더링합니다. 픽셀 속도는 뎁스 버퍼를 사용해 카메라 이동 시에만 컴퓨팅됩니다.

시각화 재투영 표시(레벨 뷰포트에서 표시 > 시각화 메뉴에 위치함)는 모션 벡터를 사용해 표시된 이전 프레임을 재투영하고 현재 프레임과 재투영된 마지막 프레임의 차이점을 컬러로 표시합니다. 이를 통해 모션 벡터가 오브젝트 모션과 일관되어 보이더라도 이전 프레임을 정확하게 재투영하는지 확인할 수 있습니다. 이는 템포럴 업스케일링 툴과 기타 내부 템포럴 누적의 퀄리티에 중요합니다.

VisualizeReprojection은 이미지를 표시해 재투영 실패를 나타냅니다. 텍스처 디테일이 부족해 오브젝트의 모션 벡터가 잘못된 것 같다면, 보다 많은 텍스처 디테일을 갖춘 머터리얼을 적용해 보세요. 이 머터리얼에는 오브젝트 스페이스 정렬 그리드가 있으며, 본 트랜스포메이션 이전에 애니메이션된 스켈레탈 메시에서 작업할 수도 있습니다.
참고로 다음 씬에서는 스태틱 지오메트리 드로잉을 검은색으로 표시하기 위해 원시 내부 속도 버퍼( vis SceneVelocity
)를 활용해 VisualizeMotionBlur 및 VisualizeReprojection 표시 플래그를 사용합니다.

포스트 DOF 반투명의 중요성
반투명은 재투영에 대한 뎁스와 속도를 종종 드로잉하지 않기 때문에 템포럴 업스케일링 툴이 올바르게 재투영하는 데 있어 특정 문제가 될 수 있습니다. 대부분의 템포럴 업스케일링 툴이 이전에 씬을 구성하지만, TSR은 포스트 DOF 반투명을 가져와 씬 컬러를 재투영하고 구성합니다. VisualizeTemporalUpscaler는 이를 위해 포스트 DOF 반투명 버퍼와 포스트 DOF 반투명의 알파 채널 버퍼를 모두 표시합니다.
반투명 머티리얼은 또한 배경에서 발생하는 VFX의 뎁스 오브 필드에 문제가 될 수 있습니다. 이는 머티리얼 에디터에서 뎁스 오브 필드 이전 또는 이후에 드로잉하도록 설정되었는지 여부에 관계없이 카메라에 따라 달라지고 반투명 정렬 문제를 생성할 수 있습니다. 템포럴 업스케일링 툴 문제를 줄이기 위해, 기본적으로 r.Translucency.AutoBeforeDOF
는 반투명 머티리얼이 포커스 거리 뒤에 있을 경우 자동으로 포스트 DOF를 드로잉합니다. 이를 통해 반투명 정렬 문제가 간소화되고 템포럴 업스케일링 툴을 위해 최대한 많은 포스트 DOF를 남기기 위해 반투명을 사용하는 콘텐츠를 보다 많이 장려합니다.
포커스 거리 뒤의 포스트 DOF 반투명이 DOF 이전에 드로잉되는 경우, 전체 이미지의 DOF 블러는 뎁스 오브 필드의 블러가 씬 컬러 입력에 들어오는 노이즈를 최소화하기 때문에 고스팅 도입 없이 템포럴 업스케일링 툴의 재투영을 보다 간편하게 합니다.
포스트 DOF 반투명 포맷은 알파 = 반투명 = 1 - 오파시티로 RGBA가 미리 곱해집니다. 씬에 구성되기 때문에 SceneColor.rgb = SceneColor.rgb * PostDOFTranlucency.a + PostDOFTranslucency.rgb
입니다.
요약
왼쪽 하단 모서리의 요약 에는 템포럴 업스케일링 툴을 구동하는 유용한 정보가 표시됩니다.

요약 항목 | 설명 |
---|---|
TemporalUpscaler | 어떤 템포럴 업스케일링 툴이 사용되고 어떤 엔진 퀄리티 레벨이 엔진 내 레벨에 대해 설정되었는지 표시합니다. |
입력 | 템포럴 업스케일링 툴이 받아들이는 현재 해상도 및 픽셀 포맷. |
출력 | 템포럴 업스케일링 툴로 출력되는 현재 해상도 및 픽셀 포맷. |
사전 노출 | 이러한 유형의 문제를 진단하기 위한 컬러 픽셀 포맷의 현재 사전 노출. 사전 노출이 오버라이드될 경우(r.EyeAdaptation.PreExposureOverride ), 이 정보도 지정됩니다. 템포럴 업스케일링 툴이 올바로 기능하려면 템포럴 업스케일링 툴이 톤매퍼가 표시하는 렌더링된 픽셀의 노출이 무엇인지 아는 것이 중요합니다. 사전 노출이 너무 낮은 경우, 씬 컬러는 내부 버퍼에서 비정상적으로 어두워 보일 수 있고 템포럴 업스케일링 툴에서 퍼포먼스상의 이유로 사용되는 모든 종류의 낮은 비트 뎁스 인코딩 문제를 발생시켜 고스팅을 일으킬 수 있습니다. 이론적으로, 사전 노출은 렌더러로 내부에서 자동 컴퓨팅되어야 합니다. 이와 같은 엣지 케이스는 템포럴 업스케일링 툴을 실패하게 할 수 있습니다. 이는 사전 노출이 대부분 자동으로 일어나야 하기 때문에 r.EyeAdaptation.PreExposureOverride 사용이 권장되지 않는 경우입니다. 그러나, 렌더러의 특정 문제를 방지하기 위해 문제를 해결하도록 사전 노출을 오버라이드하는 데 유용할 수 있습니다. |
Support Alpha | SceneColor 및 템포럴 업스케일링 툴의 출력 알파 채널이 r.PostProcessing.PropagrateAlpha 로 설정되었을 경우 표시되는지 여부 |