Unreal

Unreal - GPU Lightmass (GPULM)

+하람쥐 2023. 2. 5. 23:07

참고자료

https://docs.unrealengine.com/5.0/ko/gpu-lightmass-global-illumination-in-unreal-engine/

 

GPU 라이트매스 글로벌 일루미네이션

프리컴퓨티드 라이팅 데이터를 생성하는 GPU 기반 시스템을 살펴봅니다.

docs.unrealengine.com

언리얼 GPU 라이트매스가 무엇인가?

GPU 라이트매스(GPULM)는 언리얼에서 라이트를 굽는 방법중 하나다. 기존에는 CPU로 스테틱 혹은 스테이셔너리 라이트를 구웠는데. GPU 라이트매스는 이름 그대로 GPU로 라이트를 굽는다.

 

가장 큰 특징은

  • GPULM을 사용하면 복잡한 씬의 라이트를 빠르게 베이크 할 수 있다.
  • GPULM는 라이트가 빌드되는걸 실시간으로 볼 수 있다. ( Blnder 의 Cycle rener처럼)
  • CPULM른 전체씬을 베이크해야되지만 GPULM는 내가 바라보고있는 화면만 라이트 빌드가 가능하다.

GPU 라이트매스사용을 위한 세팅방법

GPULM을 사용하기위해서는 프로젝트 파일에서 기본적으로 세팅을 한번 바꿔줘야한다.

세팅방법은 아래와 같다.

  1. 편집(Edit) > 플러그인(Plugins) / 내장 플러그인(BUILT-IN) >GPU 라이트매스(GPU Lightmass) 활성화

2. 편집 > 프로젝트 세팅(Project Settings) > 레이 트레이싱(Ray Tracing) > 레이 트레이싱 활성화

  1. 플랫폼(Platforms) > 창(Windows) > 1. 타겟팅된 RHIs(Targeted RHIs) > 기본 RHI(Default RHI): DirectX 12

 

GPU 타임아웃 감지 복구 크래시 빈도를 줄이기위해 리얼타임 레이트레이싱 기능 비활성화

[ 콘솔창 버전 ]

~ r.RayTracing.ForceAllRayTracingEffects 0

[프로젝트 설정]

[/Script/Engine.RendererSettings]
r.RayTracing.ForceAllRayTracingEffects=0

 


 

GPU 라이트매스사용방법

세팅을 완료하고나면 GPU라이트매스 옵션이 빌드에 생긴다.

 

다른 패널과 마찬가지로 에디터에 GPU라이트매스 패널을 도킹 가능하다.

 

세팅 후 GPU 라이트 매스에서 라이팅 빌드(Build Lighting) 을 누르면 라이트가 빌드된다.

 


GPU 라이트매스 굽기모드.

  • 전체 굽기 → 조명을 계산후 씬에 있는 모든 오브젝트를 전체 라이트맵 해상도로 렌더링.
  • 보이는것만 굽기 → 전체 씬이 아니라 뷰포트에 보이는 오브젝트만 라이팅 빌드
    • 실시간으로 뷰포트를 움직여서 다시 자동으로 라이트 빌드 가능하다.

[ 보이는것만 굽기 빌드 예시 ]

콜로소 라이팅 강의에서 받은 예제 씬에서 테스트 렌더링을 해보았다.

 


GPU 라이트매스 스피드 모드

GPULM는 실시간 빌드다보니 크래시가 나지 않기 위해 기본 렌더링 모드는 슬로우 모드이다.

빌드 속도를 더 빠르게 스피드 모드로 바꿀 수 있다.

 

GPU 라이트매스 패널의 실시간 뷰포트 체크박스를 뷰포트 실시간 모드로 토글합니다.

 

레벨 뷰포트의 드롭다운 메뉴에서 실시간 모드를 토글합니다. (단축키 Ctrl + R)

 

  1. 내장 파라미터에서도 라이팅 빌드 속도를 높이는 세팅이 있다.
  • 실시간 워크로드 인수(Realtime Workload Factor)
  • 뷰포트에서 실시간 모드가 켜짐 일 때 라이팅 빌드 속도를 개선할 수 있는 배수입니다. 이 값이 너무 높으면 지오메트리가 많은 씬에서 에디터가 응답하지 않을 수 있습니다.
  • 비실시간 워크로드 인수(Non-Realtime Workload Factor)
  • 실시간 모드가 꺼짐 일 때 라이팅 빌드 속도를 개선할 수 있는 배수입니다.
⚠️ 워크로드 인수 옵션을 사용한다고 반드시 빌드 속도가 즉시 빨라지는 것은 아니므로 신중히 사용해야 합니다. 
이러한 배수는 GPU로 전송하는 작업 청크 크기를 결정하며, 이 크기의 효율성은 GPU의 최종 속도를 결정하는 수많은 인수 중 하나입니다. 
예를 들어, 비실시간 워크로드 인수  를 사용하면 어떤 프로젝트에서는 빠른 굽기의 속도가 더 느려질 수 있습니다. 
모든 상황에 맞는 만능 세팅은 없습니다.

 


GPU 라이트매스 세팅

 

프로그레스 바 표시(Show Progress Bars)

True인 경우 렌더링이 진행되는 동안 초록색 프로그레스 바가 표시된다.

프로그레스바가 있으면 실시간 렌더링 진행상황을 확인 가능하다.


모드(Mode)

  • 실시간 워크로드 인수(Realtime Workload Factor)
  • 뷰포트에서 실시간 모드가 켜짐 일 때 라이팅 빌드 속도를 개선할 수 있는 배수입니다. 이 값이 너무 높으면 지오메트리가 많은 씬에서 에디터가 응답하지 않을 수 있습니다.
  • 비실시간 워크로드 인수(Non-Realtime Workload Factor)
  • 실시간 모드가 꺼짐 일 때 라이팅 빌드 속도를 개선할 수 있는 배수입니다.

노이즈 제거(Denoise)

GPU로 렌더링을 하고 이후 CPU로 노이즈를 제거해준다.

  • 없음(None): 라이트맵에서 아무런 노이즈도 제거하지 않는다.
  • 완료 시(On Completion): 굽기가 완료되면 전체 라이트맵에 노이즈 제거가 적용된다.
  • 인터랙티브 프리뷰 시(During Interactive Preview): 각 타일을 완료하는 대로 노이즈를 제거합니다. 씬의 일부분을 프리뷰하기에는 용이하지만 효율은 떨어진다.

GI 샘플(GI Samples)

표면에 튈 GI의 샘플값 제어. 샘플값을 높이면 퀄리티가 올라가지만 빌드 시간이 늘러간다.


복사도 캐싱 사용(Use Irradiance Caching)

인테리어 씬에서 활성화 하면 물리적으로 더 정확한 GI 강도를 얻을 수 있다.

  • 활성화 하면 씬이 전체적으로 밝아진다.
  • 야외 씬에서는 비활성화 해야한다.

첫 바운스 레이 가이딩 사용(Use First Bounce Ray Guiding)

첫번쨰 바운드 샘플링에서 가장 밝은 부분을 추적해서 라이트가 더 정확하게 계산하게 만든다.

  • 창문과같은 특정 광원이 있는 인테리어 씬의 결과가 개선이 잘된다.

 


GPU 라이트매스 한계

GPULM은 아직 CPULM에서 지원하는 옵션중 지원하지 않는 옵션이 존재한다.