PART 2 - 강의 1/5

래스터라이저 시스템

HW/SW 듀얼 래스터라이저와 삼각형 크기별 최적 선택을 이해합니다

01

듀얼 래스터라이저

하드웨어와 소프트웨어의 조합

Nanite는 두 가지 래스터라이저를 상황에 따라 선택적으로 사용합니다. 삼각형의 화면 크기에 따라 최적의 래스터라이저가 자동으로 선택됩니다.

래스터라이저 선택 흐름
[Cluster List] --> [Screen Size 분류] | +--------------+--------------+ v v [HW Rasterizer] [SW Rasterizer] (큰 삼각형) (작은 삼각형) - 고정 함수 사용 - Compute Shader - DrawIndirect - DispatchIndirect
HW
> 1 pixel triangles
SW
< 1 pixel triangles
3x
SW faster for small
02

Hardware Rasterizer

GPU 고정 함수 파이프라인 활용

Hardware Rasterizer는 GPU의 고정 함수 래스터화 유닛을 사용합니다. 1픽셀보다 큰 삼각형에 최적화되어 있습니다.

HW Rasterizer 특징
  • 고정 함수 하드웨어 - GPU 전용 래스터화 유닛 사용
  • DrawIndirect - 단일 드로우 콜로 모든 큰 삼각형 처리
  • 1+ 픽셀 삼각형에서 최고 효율
  • Edge Function 기반 정밀 래스터화
왜 1픽셀이 경계인가?

GPU 하드웨어 래스터라이저는 2x2 픽셀 Quad 단위로 동작합니다. 1픽셀 미만의 삼각형은 Quad의 대부분이 낭비되어 효율이 급격히 떨어집니다.

03

Software Rasterizer

Compute Shader 기반 커스텀 래스터화

Software Rasterizer는 Compute Shader로 구현된 커스텀 래스터라이저입니다. 1픽셀 미만의 작은 삼각형에서 하드웨어 래스터라이저보다 3배 빠릅니다.

SW Rasterizer 최적화 (UE 5.7) // UE 5.7 SW 래스터 최적화 // 슬라이딩 윈도우 버텍스 캐시 // 마스크드 폴리지에서 ~20% 성능 향상 // 프로그래머블 래스터 지원 확장 // - 알파 마스크 // - 양면 머티리얼 // - WPO (World Position Offset)
SW Rasterizer 특징
  • Compute Shader 구현 - 유연한 커스터마이징
  • DispatchIndirect - 가변 워크로드 처리
  • Quad 낭비 없음 - 픽셀 단위 정밀 처리
  • 슬라이딩 윈도우 캐시 - 버텍스 재사용 최적화 (5.7)
04

성능 비교

삼각형 크기별 최적 선택

삼각형 크기 최적 래스터라이저 이유
> 1 pixel Hardware 고정 함수 하드웨어 최적화
< 1 pixel Software Quad 낭비 없음, 3배 빠름
Masked Material SW (Programmable) 알파 테스트 지원
WPO 사용 SW (Programmable) 버텍스 변형 지원
성능 주의

Masked나 WPO를 사용하는 머티리얼은 프로그래머블 래스터화가 필요하여 별도 Raster Bin으로 분류됩니다. 이는 추가 오버헤드를 발생시킵니다.

05

관련 콘솔 변수

래스터라이저 제어 및 디버깅

Console Variables // 래스터라이저 관련 설정 r.Nanite.MaxPixelsPerEdge = 1 // LOD 품질 // 프로파일링 NaniteStats // 래스터 통계 r.Nanite.ShowMeshDrawEvents = 1 // 드로우 이벤트 표시 // 디버그 시각화 r.Nanite.Visualize.Clusters = 1 // 클러스터 시각화 r.Nanite.Visualize.Triangles = 1 // 삼각형 시각화
SUMMARY

핵심 요약

  • 듀얼 래스터라이저 - HW/SW를 삼각형 크기에 따라 자동 선택
  • HW Rasterizer - 1픽셀 이상 삼각형에 최적, 고정 함수 사용
  • SW Rasterizer - 1픽셀 미만에서 3배 빠름, Quad 낭비 없음
  • UE 5.7 - 슬라이딩 윈도우 캐시로 마스크드 폴리지 20% 향상
  • 프로그래머블 래스터 - Masked, WPO 등 특수 머티리얼 지원
PRACTICE

도전 과제

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

실습 1: HW/SW 래스터라이저 비율 확인

r.Nanite.Visualize.Triangles = 1로 삼각형 밀도를 시각화하고, 카메라를 가까이/멀리 이동하면서 HW 래스터라이저와 SW 래스터라이저의 처리 비율 변화를 stat Nanite로 관찰하세요.

실습 2: 프로그래머블 래스터 영향 측정

동일한 메시에 Opaque 머티리얼과 Masked 머티리얼을 각각 적용하고 r.Nanite.ShowMeshDrawEvents = 1로 Raster Bin 분류를 확인하세요. 각 머티리얼 유형별 래스터화 시간 차이를 ProfileGPU로 비교하세요.

심화 과제

1픽셀 미만의 삼각형이 대다수인 원거리 씬에서 SW 래스터라이저의 성능 이점을 정량적으로 측정하세요. r.Nanite.Visualize.Overdraw = 1로 Quad 낭비 패턴도 함께 분석하세요.