Unity 개발/기술 향상

[Unity] 조명 설정_ 기능 및 역할 (1)

내공부방 2024. 9. 28. 20:47
반응형

 

Unity의 조명 설정은 게임의 분위기와 시각적 품질을 결정짓는 핵심 요소입니다. 

오늘은 이러한 시각적 품질의 역할을 맡고 있는 Unity의 조명 설정에 대해 자세히 알아보겠습니다.

 

Unity에서는 환경 조명, 방향성 조명, 포인트 조명 다양한 조명 설정이 있는데 각 조명별로 특정한 역할을 수행하고 있습니다. 

 

그럼 우선 Unity의 라이팅 맵을 열어 어떤 기능과 역할들이 있는 지 정리를 해보겠습니다

 

* Lighting 세팅을 위한 탭은 Window > Rendering > Lighting을 통해 열 수 있다 

 

1. Lighting Settings

- 역할 : Lighting Settings Asset을 사용하여 씬의 라이팅 세팅을 저장하고 관리하는 탭으로 다른 씬에도 동일한 설정을 할 수 있다. 

- 사용 방법 : New 버튼을 눌러 새로운 Lighting Settings Asset을 생성하거나 기존의 에셋을 할당하여 사용

- 사용 시점 : 여러 씬에서 동일한 라이팅 설정을 공유하고 싶을 때 사용

- 예시 : 프로젝트의 모든 씬에서 동일한 조명 분위기와 효과를 유지하고 싶다면 Lighting Setting Asset을 생성하여 각 씬에 할당

 

 

2. Realtime Lighting 

- 역할 : 실시간으로 조명 계산을 처리하여 동적인 조명 효과를 제공합니다. 캐릭터가 움직이거나 오브젝트가 이동할 때에도 조명 효과가 실시간으로 반영

- 사용 방법 : Realtime Global Illumination(GI)을 체크하면 실시간으로 글로벌 일루네이션이 계산된다.

- 사용 시점 : 실시간으로 조명 변화가 필요한 씬에서 사용

- 예시 : 실내에서 손전등을 켜서 방 안의 조명이 실시간으로 변화하는 씬을 구현할 때.

 

** Realtime Environment LightingIndirect Resolution은 무엇일까? 

Realtime Environment Lighting : 실시간 GI를 계산할 때, 씬의 환경 조명이 실시간으로 반영되도록 설정하는 옵션

주로 환경에서 들어오는 빛을 씬 전체에 걸쳐 반사시키고 간접 조명으로 활용

예시 : 

(1) 낮과 밤의 변화 :  낮에는 하늘에서 오는 환경광이 더 강하게 반사, 밤에는 주변 조명이 주요한 간접광 역할

(2) 동적인 환경 변화 : 환경 오브젝트(예: 색상이 변하는 하늘 스카이박스)가 변하면, 씬 내 오브젝트에 반사되는 광원도 실시간으로 업데이트

 

Indirect Resolution : 실시간 GI에서 간접광의 해상도를 결정하는 설정

값은 오브젝트 표면에서 간접 조명을 샘플링할 해상도를 결정하는데 값이 높을수록 더 정밀한 간접광의 디테일을 얻을 수 잇다.

예시 : 

(1) 실내 씬 : 빛의 창문이나 문을 통해 들어오고, 벽과 천장에 간접광이 여러번 반사되어 복잡한 조명 효과를 만들어야 할 때

(2) 정밀한 그림자 표현 : 간접광이 캐릭터나 오브젝트의 섬세한 그림자나 컬러 블리딩을 더 정확하게 표현해야 할 때

 

3. Mixed Lighting  

- 역할 : 실시간 조명과 베이킹된 조명을 혼합하여 사용합니다. Lighting Mode 옵션을 통해 Shadowmask, Distance Shadowmask, Subtractive 모드 중 선택할 수 잇다

- 사용 방법 : Baked Global Illumination 체크 후 Lighting Mode를 설정하여 혼합 조명 모드를 선택.

- 사용 시점 : 베이킹된 조명과 실시간 조명을 함께 사용하고, 특히 그림자 처리에 대해 더 세밀한 제어가 필요할 때 사용

- 예시 : 실내에서 정적 조명과 창문을 통해 들어오는 실시간 그림자가 필요한 경우 (캐릭터가 창문 근처로 가면 실시간 그림자가 생기고 그렇지 않을 때에는 베이킹된 조명이 적용되는 효과!) 

4. Lightmapping Settings

- 역할 : Lightmap을 생성할 때 사용할 샘플링 수, 필터링, 해상도 등의 다양한 옵션을 제공하여 최종 조명 결과를 제어

- 사용 방법 (옵션 설명) : 

  • Lightmapper: Progressive CPU 또는 GPU를 선택하여 라이팅을 베이킹할 때 사용할 계산 방식을 설정
  • Progressive Updates: 베이킹 도중 실시간으로 결과를 확인할 수 있도록 업데이트
  • Importance Sampling: 더 많은 계산 자원을 중요한 영역에 사용하여 더 높은 품질의 결과를 얻을 수 있다.
  • Direct Samples: 직사광선 샘플 수를 설정합니다. 값이 높을수록 더 부드럽고 정밀한 그림자가 생성
  • Indirect Samples: 간접광 샘플 수를 설정합니다. 값이 높을수록 더 정밀한 간접 조명이 계산
  • Environment Samples: 환경광 샘플 수를 설정합니다. 값이 높을수록 주변 환경에서 반사되는 광원이 더 정확하게 표현
  • Max Bounces: 빛이 반사되는 최대 횟수를 설정합니다. 값이 높을수록 더 많은 반사광을 계산하지만 성능이 저하될 수 있다.
  • Filtering: 라이팅 맵의 필터링 방식을 설정
  • Lightmap Resolution: Lightmap의 해상도를 설정, 단위는 texels per unit으로 설정되고 값이 높을수록 더 세밀한 조명이 표현되지만 메모리 사용량이 증가
  • Lightmap Padding: Lightmap 텍스처에서 각 오브젝트 간의 패딩(간격)을 설정, 값이 낮으면 경계선에서 아티팩트가 생길 수 있다.
  • Max Lightmap Size: 씬에서 사용하는 라이트맵 텍스쳐의 최대 크기를 설정
  • Lightmap Compression: 라이트맵 텍스쳐 압축 방식을 설정, 압축을 통해 메모리 사용량을 줄이고 성능을 향상시킬 수 있다. (None : 압축 X, 메모리 사용량이 많고, 품질이 가장 좋다, Low Quality: 성능이 우선, High Quality: 메모리 절약과 품질을 균형 있게 유지)
  • Ambient Occlusion: 오브젝트의 홈이나 접촉 면과 같이 환경광이 적게 도달하는 부분을 어둡게 표현
  • Directional Mode: 라이트맵의 방향성을 설정 (Directional : 방향성 정보를 포함하여 라이트 맵 생성, 실시간 조명와의 상호작용이 좀 더 자연스러움, Non- Directional : 간단한 라이트맵, 성능에 유리)
  • Indirect Intensity: 간접광의 강도를 조절하는 설정, 씬 내에서 간접적으로 반사되는 빛의 세기를 조정하여 씬의 밝기와 분위기를 조절 (값이 높아지면 간접광의 강도 증가, 전체적으로 씬의 밝기를 조절하고 싶을 때)

- 사용 시점 : 정적 오브젝트와 환경에서 조명 품질을 최적화하고자 할 때 사용 

- 예시 : 복잡한 건물의 내부를 묘사하는 씬에서 간접 조명과 반사광을 정밀하게 표현하고 싶을 때 

 

** 다음 포스팅에서는 이 설정으로 얼마나 차이를 보이는 지 적용하여 비교해보자 

반응형