Introduction to Precomputed Realtime GI – 번역

Introduction to Precomputed Realtime GI – 번역

원문 링크

 

Introduction to Precomputed Realtime GI

확인 완료한 버전: 5.5 – 난이도: 중급

유니티는 글로벌 일루미네이션(Global Illumination(GI))이나 반사되는 라이팅(Bounced 라이팅)을 미리계산하는데 사용되는  서로 대비되는 두 가지 기술을 지원합니다: 하나는 Baked GI이고, 다른 하나는 미리계산된 실시간 GI(Precomputed Realtime GI)입니다. 이 글은 미리계산된 실시간 GI((Precomputed Realtime GI))에 초점을 맞췄습니다.

미리계산된 실시간 GI(Precomputed Realtime GI)를 사용하면, 씬(Scene)내의 스태틱 메쉬 주변에 반사되는 빛을 미리 계산하는 과정을 거친 다음, 런타임에 사용하기 위해서 이 데이터를 저장합니다. 이 과정은 런타임에 처리하는 라이팅 계산량을 줄이기 때문에, 프레임 속도를 유지하면서도 실시간으로 반사되는 라이팅을 적용할 수 있습니다.

Baked GI를 사용하면, 라이팅을 미리 계산하는 과정에서, 전통적으로 사용되는 라이트맵(lightmap) 텍스쳐가 오프라인으로 생성됩니다. 이렇게 생성된 텍스쳐는 프로젝트에 애셋(Asset) 형태로 존재하게되며, 런타임시에 변경할 수 없습니다. 미리계산된 실시간 GI는 같은 방법으로 라이트맵 애셋을 생성하지 않습니다. 그 대신, 저해상도 라이트맵을 생성하고 업데이트하는데 필요한 정보를 포함하는 라이팅 데이터 애샛 형태로, 라이팅 데이터를 런타임에 저장합니다.

라이팅을 미리 계산하는 과정을 위해서, 씬이 적절하게 준비되지않고 최적화되지 않은 경우에는, 라이팅을 계산하는 과정에서 시간이 과도하게 걸릴 수 있습니다. 이 글에서는 라이팅을 계산하는 과정에 걸리는 시간을 단축시킬 수 있도록, Enlighten(유니티에서 미리 계산된 실시간 GI와 Baked GI를 구현하는데 사용되는 백엔드(Backend) 솔루션)을 사용하는 씬을 최적화하는 방법에 대해서 살펴볼 예정입니다.

이 글을 통해서 다음 내용을 다룰 예정입니다:

  • 씬에 적합한 라이팅 해상도를 결정하는 방법.
  • 라이팅을 미리 계산하는 과정에 영향을 주는 챠트(Chart)는 무엇이며, 이 챠트가 라이팅 계산과정에 어떻게 영향을 주는지에 대한 내용.
  • 라이팅을 미리 계산하는 과정을 시작하는 방법.
  • 프로브 라이팅(probe lighting)을 이용해서 라이팅 솔루션의 복잡도를 줄이는 방법.
  • 유니티의 미리 계산된 실시간 GI(Precomputed Realtime GI)에 의해서 생성된 auto-unwrapped UV의 품질을 향상시키는 방법.
  • 글로벌 일루미네이션이 적용된 라이팅(Globally Illuminated Lighting)을 생성하는데 사용되는 클러스터(Cluster)는 무엇이고, 이 클러스터가 어떻게 사용되는지에 대한 내용.
  • 라이트맵 파라미터를 이용해서 개별 오브젝트 기반으로 라이팅을 적절하게 튜닝하는 방법.

이 기술에 대해서 배우고 적용하면, 미리 계산된 실시간 GI를 사용해서 얻을 수 있는 이점을 활용할 수 있습니다: 라이팅을 구현하는데 필요한 시간을 최소화하고, 게임이 플레이되는 동안에 처리되는 실시간으로 반사되는 라이팅(bounced lighting)과 라이팅 처리 과정에 대해서 더빠른 실험이 가능합니다.

 

라이팅을 미리 계산하는 시간 최소화하기(Reducing precompute times from hours to minutes)

이 글에서 사용되는 라이팅 튜토리얼 씬은, 기본설정을 사용하고 최적화를 진행하지않은 상태에서, 테스트 장비에서 라이팅을 계산하는데 7.5시간이 걸렸습니다. 이정도의 복잡도를 가진 씬에서, 이는 받아들일 수 없는 결과입니다.

enlighten_image
Default Scene: 라이팅 계산과정에 7.5시간 걸림. 최적화된 씬: 라이팅 계산과정에 2.25분 걸림.

이 글에서 다루는 기술을 사용해서 대략 30분에 걸친 씬 준비과정을 통해서,  production-quality의 결과를 내는데 라이팅을 계산하는데 2.25분이 걸렸습니다.
게임 플레이 중에 GI를 다시 계산하거나 GI 라이팅을 변경하지 않고, 씬 라이팅 구현 과정을 신속하게 반복할 수 있다는 점을 감안하면, 이 기술에 대한 매력이 충분하다고 할 수 있습니다.

 

이 튜토리얼에 사용된 애셋 다운로드 (Downloading assets for this tutorial)

이 글에서는, 유니티 애셋 스토어에서 제공되는 Lighting Optimization Tutorial 프로젝트를 사용합니다.

이 글에서는, Scenes/Article 폴더에 포함된 예제씬을 사용합니다: LightingTutorialOptimal, LightingTutorialNonOptimal, LightingTutorialStart.

  • LightingTutorialOptimal은 이 강좌의 내용을 토대로 준비된 씬입니다. LightingTutorialOptimal 씬은 유니티의 미리 계산된 실시간 GI(Precomputed Realtime GI)를 사용해서 production-ready 라이팅 결과를 얻기 위해서 필요한, 라이팅 계산 시간을 최소화하는 방법을 보여줍니다.
  • LightingTutorialNonOptimal은 프로젝트에서 흔히 볼 수 있는 많은 문제를 보여줍니다. 즉, 베이킹(Baking)을 완료하지 않거나, 허용할 수 없을 정도로 시간이 오래걸리는 문제를 보여줍니다. LightingTutorialNonOptimal씬은 씬에서 사용하지 말아야할 방법에 대한 좋은 참고자료라고 할 수 있습니다.
  • LightingTutorialStart는 이 글을 통해서 작업할 씬입니다. 이 글에 나온 단계를 따라서, 이 씬을 production-ready 결과를 내는 완성된 씬으로 만들 예정입니다.

 

내용 끝까지 읽어주셔서 감사합니다.

배너 클릭은 저에게 많은 힘이 됩니다.

감사합니다 🙂

 

다음글 – Realtime Resolution

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, C++/C#, 1인 기업에 관심이 많습니다.

2 Responses

  1. 감사합니다 댓글:

    좋은글 번역해주셔서 감사합니다 🙂 좋은 하루되세요

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Please turn AdBlock off

Notice for AdBlock users

Please turn AdBlock off