Development/Unity Engine

[Retro유니티] LightMap과 Baking

사이바 미도리 2024. 12. 9. 23:48
  • Lighting은 연산비용이 비싸므로, Unity는 Lighting Data Asset을 사용해서 Lighting의 실시간 연산량을 줄인다.
  • Lighting Data Asset에 포함된 주요 데이터 중 하나는 Lightmap이다.
    • Lightmap은 Object가 빛을 받았을 때, 어떻게 보일지를 미리 그려둔 텍스쳐이다.
  • Lighting Data Asset을 생성하는 작업을 Baking 이라고 한다.

 

Baking을 해보자.

 

Baking

매번 Scene Load시마다 Bake하면 버벅인다. 끄자.

 

Environment Lighting

환경광을 설정하자.

환경광은, Scene에서 가장 기본으로 깔리는 빛이며, 모든 Object에 적용된다.

모든 방향에서 동일세기로 들어오기 때문에, 그림자 및 명암을 만들지 않는다.

환경광 변경만으로 게임 전체 색 분위기가 바꿀 수 있다.

 

환경광을 짙은 갈색으로 변경했다.

 

Global Illumination(줄여서 GI)

물체 표면에서 직접 들어오는 빛 뿐만 아니라, 다른 물체의 표면에서 반사되어 들어온 간접광까지 포현한다.

매우 높은 처리량이 요구되어, 실시간처리는 힘들다.

두 가지 종류의 GI가 있다. 실시간 또는 Bake이다.

  • 실시간 GI는, 빛의 세기와 방향이 달라졌을 때, 그 변화를 간접광에 실시간 반영한다.
    • 미리 lightmap을 여러 방향에 대해 생성하고, 미리 빛의 예상방향과 광원의 예상이동경로를 저장한다.
    • 따라서 적은 비용으로 반사의 변화를 추측할 수 있으며, 여전히 Baking 또한 필요하다.
  • Baked GI는, 고정된 빛에 의한 간접광을 미리 Lightmap으로 구운 것이다.
    • 따라서, 런타임중 변하지 않는다.
    • 따라서, 게임 도중 갑자기 주변이 밝아지거나 어두워지면, 혼자 고고히 빛나거나 어두운게 이질감이 느껴진다.

우리는 실시간 GI를 사용할 것이다.

Baked GI는 런타임 시 더 유리하지만, 게임 도중 변화하는 빛을 반영하지 못해며, 무엇보다 굽는데 매우 오래걸리기 때문이다.

texel은, 텍스쳐의 1화소를 의미한다.

Baking에는 R5 3600, 2070S 기준으로 2분 걸린다.

 

 

 

Baking이 끝나면, Scene/Main 폴더에 LightingData가 들어있는것을 확인할 수 있다.

이것으로 Lighting 을 조정하고 Level Art를 완성했다. 이제 플레이어를 제작할 것이다.

참고) Global GI는 Static Game Object에만 적용된다. 이 말의 뜻은, 게임 도중에 위치가 변경될 수 없다는 것이다. 대신 더 좋은 최적화가 가능하다.