PART 3 - 강의 2/5

Screen Traces

화면 공간 트레이싱과 실제 지오메트리 커버리지

01

Lumen 트레이싱 파이프라인

Screen Traces가 먼저, RT는 미스 시에만

Lumen 트레이싱 흐름
[Screen Space Tracing] --> [Miss?] --> [Software/Hardware RT] | | v v [Hit Found] [Distance Field or | Triangle Intersection] v | [Surface Cache v Lookup] [Surface Cache or Hit Lighting]

Lumen은 먼저 Screen Space Tracing을 시도하고, 미스가 발생하면 Software 또는 Hardware Ray Tracing으로 폴백합니다.

02

Screen Traces 장단점

빠르지만 제한적

장점

  • 모든 지오메트리 타입 지원
  • Lumen Scene과 실제 씬 불일치 커버
  • 매우 빠른 처리

단점

  • 화면 밖 정보 없음
  • 아트 디렉션 제어 제한
  • 뷰 의존적 GI 발생 가능
뷰 의존적 GI 문제

Indirect Lighting Scale이 큰 값일 때 Screen Traces에 의존하면 카메라 회전에 따라 GI가 변하는 현상이 발생할 수 있습니다.

03

Screen Traces 알고리즘

HZB 기반 계층적 화면 공간 레이마칭

Screen Traces는 Hierarchical Z-Buffer(HZB)를 사용하여 화면 공간에서 레이마칭을 수행합니다. 저해상도 밉 레벨에서 시작하여 히트 시 더 높은 해상도로 정제합니다.

Screen Trace 알고리즘 (개념적) // HZB 기반 계층적 레이마칭 for each pixel: ray = ComputeReflectionRay(normal, viewDir) // 저해상도에서 시작하여 정밀도 증가 mipLevel = MaxMipLevel while (mipLevel >= 0): stepPos = MarchRay(ray, mipLevel) if (HZB[mipLevel][stepPos] > ray.depth): mipLevel-- // 더 정밀하게 else: AdvanceRay() // 다음 스텝 if (hit): return ScreenColor[hitPos] // 화면 색상 사용 else: FallbackToWorldTracing() // SWRT/HWRT
성능 팁

r.Lumen.ScreenProbeGather.ScreenTraces.MaxIterations로 레이마칭 반복 횟수를 조절할 수 있습니다. 값을 줄이면 성능이 향상되지만 히트율이 낮아져 더 많은 월드 트레이싱이 필요해집니다.

04

관련 설정 및 프로파일링

Screen Traces 최적화 파라미터

Console Variables // Screen Traces 기본 설정 r.Lumen.ScreenProbeGather.ScreenTraces = 1 // 활성화 r.Lumen.ScreenProbeGather.ScreenTraces.MaxIterations = 50 // 반복 횟수 r.Lumen.ScreenProbeGather.ScreenTraces.RelativeDepthThickness = 0.01 // 프로파일링 ProfileGPU // "ScreenSpaceTracing" 항목 확인 stat Lumen // Screen Probe 관련 통계
파라미터 낮은 값 높은 값
MaxIterations 빠름, 히트율 낮음 느림, 히트율 높음
RelativeDepthThickness 엄격한 히트, 노이즈 가능 관대한 히트, 아티팩트 가능
SUMMARY

핵심 요약

  • Screen Traces는 Lumen의 첫 번째 트레이싱 방법
  • HZB 기반 계층적 레이마칭으로 효율적 탐색
  • 화면 공간 정보만 사용하여 매우 빠름
  • 미스 시 Software/Hardware RT로 폴백
  • MaxIterations으로 품질/성능 트레이드오프 조절
PRACTICE

도전 과제

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

실습 1: Screen Traces 히트율 관찰

r.Lumen.Visualize.Mode = 1로 Lumen 시각화를 활성화하고, 카메라를 벽 쪽으로 향할 때와 개방된 공간을 향할 때 Screen Traces 히트율의 차이를 stat Lumen으로 확인하세요.

실습 2: MaxIterations 튜닝

r.Lumen.ScreenProbeGather.ScreenTraces.MaxIterations 값을 16, 32, 50, 100으로 변경하면서 ProfileGPU의 ScreenSpaceTracing 비용과 시각적 품질 변화를 비교하세요.

심화 과제

Screen Traces를 비활성화(r.Lumen.ScreenProbeGather.ScreenTraces = 0)하고 월드 트레이싱만으로 GI를 계산했을 때의 성능 저하와 품질 변화를 분석하세요. Screen Traces가 전체 Lumen 파이프라인에서 차지하는 역할의 중요성을 정량적으로 평가하세요.