PART 2 · 강의 7/7

TSR/FSR 업스케일링

템포럴 업스케일링으로 고해상도 렌더링 최적화

01

업스케일링 기술 개요

낮은 해상도에서 고해상도 출력 생성

업스케일링은 낮은 내부 해상도로 렌더링한 후 고해상도로 재구성하는 기술입니다. 성능을 크게 향상시키면서 품질 손실을 최소화합니다.

기술 제공사 특징 하드웨어 요구
TSR Epic Games UE5 기본, Nanite/Lumen 최적화 모든 GPU
DLSS NVIDIA AI 기반, 최고 품질 RTX 20xx+
FSR AMD 오픈 소스, 크로스 플랫폼 모든 GPU
XeSS Intel AI 가속 (옵션) Intel Arc / 모든 GPU
02

TSR (Temporal Super Resolution)

UE5 기본 업스케일러

Project Settings // Project Settings > Engine > Rendering > Default Settings Anti-Aliasing: Anti-Aliasing Method: TSR (Temporal Super Resolution) // 또는 콘솔 r.AntiAliasingMethod 4 // 4 = TSR

TSR 품질 프리셋

콘솔 변수 // Screen Percentage (내부 렌더링 해상도) r.ScreenPercentage 100 // 100% = 네이티브 r.ScreenPercentage 66 // 66% = 품질 모드 r.ScreenPercentage 50 // 50% = 성능 모드 // TSR 품질 설정 r.TSR.History.ScreenPercentage 200 // 히스토리 버퍼 품질 r.TSR.ShadingRejection.Flickering 1 // 깜빡임 감소 // 프리셋 // Quality: r.ScreenPercentage 66, TSR.History.ScreenPercentage 200 // Balanced: r.ScreenPercentage 58, TSR.History.ScreenPercentage 175 // Performance: r.ScreenPercentage 50, TSR.History.ScreenPercentage 150
💡 TSR과 Nanite

TSR은 Nanite와 최적화되어 있어, Nanite 사용 시 TSR이 권장됩니다. DLSS/FSR보다 Nanite 지오메트리 재구성 품질이 우수합니다.

03

AMD FSR

크로스 플랫폼 오픈 소스 업스케일러

FSR 활성화 // Project Settings 또는 플러그인 활성화 필요 // Edit > Plugins > AMD FidelityFX Super Resolution // 콘솔 변수 r.FidelityFX.FSR.Enabled 1 r.FidelityFX.FSR.QualityMode 1 // 0: Ultra Quality, 1: Quality, 2: Balanced, 3: Performance // FSR 2.x (템포럴) r.FidelityFX.FSR2.Enabled 1 r.FidelityFX.FSR2.QualityMode 1
FSR 모드 스케일 1440p에서 렌더링
Ultra Quality 1.3x 1107p
Quality 1.5x 960p
Balanced 1.7x 847p
Performance 2.0x 720p
04

C++ 동적 제어

런타임에서 업스케일링 조절

C++ #include "Engine/Engine.h" // 스크린 퍼센티지 동적 조절 void UGraphicsSettings::SetScreenPercentage(float Percentage) { // 30 ~ 100 범위로 클램프 Percentage = FMath::Clamp(Percentage, 30.0f, 100.0f); static IConsoleVariable* ScreenPercentageCVar = IConsoleManager::Get().FindConsoleVariable( TEXT("r.ScreenPercentage")); if (ScreenPercentageCVar) { ScreenPercentageCVar->Set(Percentage); } } // 업스케일러 전환 void UGraphicsSettings::SetUpscaler(EUpscalerType Type) { static IConsoleVariable* AAMethodCVar = IConsoleManager::Get().FindConsoleVariable( TEXT("r.AntiAliasingMethod")); if (AAMethodCVar) { switch (Type) { case EUpscalerType::TSR: AAMethodCVar->Set(4); // TSR break; case EUpscalerType::TAA: AAMethodCVar->Set(2); // TAA break; case EUpscalerType::FXAA: AAMethodCVar->Set(1); // FXAA break; } } } // FPS 기반 동적 해상도 void UGraphicsSettings::UpdateDynamicResolution(float CurrentFPS, float TargetFPS) { static float CurrentScreenPercentage = 100.0f; if (CurrentFPS < TargetFPS * 0.9f) { // 성능 부족 - 해상도 낮춤 CurrentScreenPercentage = FMath::Max( CurrentScreenPercentage - 5.0f, 50.0f); } else if (CurrentFPS > TargetFPS * 1.1f) { // 여유 있음 - 해상도 높임 CurrentScreenPercentage = FMath::Min( CurrentScreenPercentage + 2.0f, 100.0f); } SetScreenPercentage(CurrentScreenPercentage); }
05

품질 vs 성능 가이드

상황별 업스케일러 선택

TSR 권장 상황

  • Nanite 사용 프로젝트
  • 크로스 플랫폼 (콘솔 포함)
  • 일관된 품질 필요
  • Lumen 사용 시

DLSS 권장 상황

  • NVIDIA RTX GPU 타겟
  • 최고 품질 요구
  • 레이 트레이싱 사용
  • 4K 해상도 목표

FSR 권장 상황

  • AMD GPU 타겟
  • 구형 하드웨어 지원
  • 오픈 소스 필요
  • 폭넓은 호환성
⚠️ 업스케일링 주의사항
  • 고스팅 — 빠르게 움직이는 오브젝트에서 잔상 발생 가능
  • 텍스트 — UI 텍스트는 업스케일링 후 렌더링 권장
  • 샤프닝 — 과도한 샤프닝은 아티팩트 유발
SUMMARY

핵심 요약

  • TSR — UE5 기본, Nanite/Lumen 최적화, 모든 GPU
  • DLSS — NVIDIA RTX 전용, AI 기반, 최고 품질
  • FSR — AMD 제공, 오픈 소스, 크로스 플랫폼
  • Screen Percentage — 내부 렌더링 해상도 (50~100%)
  • 동적 해상도 — FPS 기반 자동 조절 가능
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: TSR 기본 설정 및 비교

Project Settings > Rendering에서 Anti-Aliasing Method를 TSR로 설정하세요. r.TSR.History.ScreenPercentage를 50%, 67%, 100%로 변경하면서 해상도와 화질 차이를 비교하세요.

실습 2: TSR vs FSR 성능 비교

동일한 오픈월드 씬에서 TSR과 FSR 2.x를 전환하면서 FPS, GPU 시간, 화질을 비교하세요. stat GPU로 업스케일링 패스의 비용을 측정하고, r.ScreenPercentage를 조정하여 최적점을 찾으세요.

심화 과제: 오픈월드 RPG 최적 업스케일링 전략

카메라 이동이 빠른 전투 씬과 정적인 NPC 대화 씬에서 TSR의 고스팅(ghosting) 아티팩트를 분석하세요. 씬 유형에 따라 동적으로 Screen Percentage를 조절하는 Blueprint/C++ 시스템을 구현하세요.