LitMode와 광원 사용하기

# 학습 과정 소개

월드에 광원을 적용할 수 있는 방법을 알아봅시다.

# LitMode 활성화

UseLitDefaultMaterial을 활성화하면 모든 엔티티는 LitMode가 Lit인 상태로 간주됩니다. 이에 따라 엔티티들이 다른 광원으로부터 영향을 받아 표면의 색상과 밝기가 달라지게 됩니다. 그러나 LitMode를 별도로 설정할 수 있는 엔티티의 경우 따로 지정된 LitMode의 값을 따르게 됩니다. [WorldConfig](/docs?postId=1101%7B%22target%22:%22_blank%22%7D)를 참고하세요.

[png](17690502093656710f5fb817140c9a9a28d28b004452c)

# Scene, Play 광원 활성화

Light 버튼을 활성해 Scene에서 생성한 광원이 적용된 모습을 확인할 수 있습니다. 이때 맵에 최소 1개 이상의 광원이 배치되어 있어야 정상적으로 광원의 모습이 보입니다. [png](176898121208690f5d291af7549b4ab5b626659c0fa40)

# 광원 적용하기

광원을 월드에 적용하는 방법은 크게 4가지로 구분됩니다.

  1. [LightComponent](/apiReference/Components/LightComponent%7B%22target%22:%22_blank%22%7D)를 엔티티에 추가
  2. Material에서 LitMode를 설정하고 엔티티에 연결
  3. LitMode 프로퍼티를 가진 컴포넌트를 엔티티에 추가
  4. LitMode를 설정할 수 있는 서비스의 메소드 호출



## LightComponent

엔티티에 [LightComponent](/apiReference/Components/LightComponent%7B%22target%22:%22_blank%22%7D)를 추가하고, 광원을 생성할 수 있습니다. [TransformComponent](/apiReference/Components/TransformComponent%7B%22target%22:%22_blank%22%7D)와 함께 사용하기를 권장합니다.

### 광원 종류

[LightComponent](/apiReference/Components/LightComponent%7B%22target%22:%22_blank%22%7D)에서 사용할 수 있는 광원은 4가지입니다. 크리에이터의 필요에 따라 사용할 수 있습니다.

#### Spot

원형으로 나타나는 광원입니다. 프로퍼티 값을 조정해 원형의 모양을 조정할 수 있습니다. [png](1768806563088453cd1c0bd1343fb9ae6a2831c42472a)

#### Freeform

크리에이터가 광원을 원하는 모양으로 만들 수 있습니다. [png](176880659998300d7ad91465c4202bd72461fd6d1977a)

#### Global

화면 전체에 적용되는 광원입니다. SortingLayer는 여러 개의 Global Light로부터 동시에 광원 효과를 받을 수 없습니다. [png](17688065857736f88865eafe848bb9ad57a593e2a3d4f)

#### Sprite

크리에이터가 지정한 스프라이트의 RGBA 색상 정보를 조합해 광원의 형태와 색이 나타납니다. [png](1768806616414dd2742c352b94e2593bdb10c27eaf428)

## 주요 프로퍼티

#### 빛의 혼합

OverlapOperation은 여러 개의 광원이 겹칠 경우 어떤 방식으로 빛을 계산해 보여줄 것인지를 결정하는 프로퍼티입니다. 프로퍼티의 값은 두 가지로 Additive, AlphaBlend가 있습니다.

  * Additive: 빛이 겹쳐질수록, 겹치는 부분이 밝은 빛으로 나타납니다. [png](17688093939099217ddd692914320ae627a2988768431)

  * AlphaBlend: LightOrder 값이 큰 광원의 색이 겹치는 부분에 나타납니다. [png](176889079569765366e3dcd9a428d94e0a4a05283396a)




#### 광원 적용

SortingLayer에 광원을 적용 여부를 TargetAllSortingLayers, TargetSortingLayers로 설정할 수 있습니다.

  * TargetAllSortingLayers: 모든 SortingLayer에 광원이 적용됩니다. 이 프로퍼티를 비활성화하면 TargetSortingLayers를 설정할 수 있습니다.
  * TargetSortingLayers: 광원이 적용될 SortingLayer를 크리에이터가 지정할 수 있습니다. SortingLayer마다 별도의 광원 텍스처를 생성하고 렌더링하게 됩니다. 이는 모바일 환경에서 성능 저하를 유발할 수 있으므로 유의해야 합니다. [png](1768981275922b7f81c3174424b25b3e94ef44eda830f)



# LitMode

LitMode로 셰이더 렌더링 방식을 선택할 수 있습니다. 이 종류에 따라 월드에서 어떻게 렌더링 될지 결정합니다.

  * Default: WorldConfig의 UseLitDefaultMaterial 설정에 따라 셰이더가 결정됩니다.
  * Lit: 빛이 있는 셰이더로 광원의 위치, 색상, 강도에 따라 엔티티의 표면 색상과 밝기가 달라집니다. [png](1768981320032fee08fc41e7a4be4befdd25514a49228)
  * Unlit: 빛이 없는 셰이더로 광원의 영향을 받지 않고, 엔티티의 설정 값대로 보여집니다. 연산이 가벼워 성능 부담이 적습니다. [png](176898133639077712dc343dd4c4f9f17e03b6d39a80d)



> 주의 특정 엔티티와 컴포넌트는 항상 Unlit 셰이더로 렌더링됩니다. LitMode 값에 영향을 받지 않습니다.
> 
>   * Hierarchy - ui 하위에 있는 UI 엔티티
>   * [TextComponent](/apiReference/Components/TextComponent%7B%22target%22:%22_blank%22%7D)
>   * [YoutubePlayerComponent](/apiReference/Components/YoutubePlayerComponent%7B%22target%22:%22_blank%22%7D)
>   * [WebViewComponent](/apiReference/Components/WebViewComponent%7B%22target%22:%22_blank%22%7D)
> 


#### Material

Material을 사용하는 엔티티는 Material의 LitMode를 설정할 수 있습니다. [png](1769049749888008654fbcf2f434ab5b5aed87cc9b093)

#### Components

아래 목록의 컴포넌트들은 LitMode를 개별적으로 설정할 수 있습니다.

  * [AreaComponent](/apiReference/Components/AreaParticleComponent%7B%22target%22:%22_blank%22%7D)
  * [BasicParticleComponent](/apiReference/Components/BasicParticleComponent%7B%22target%22:%22_blank%22%7D)
  * [SpriteParticleComponent](/apiReference/Components/SpriteParticleComponent%7B%22target%22:%22_blank%22%7D)
  * [DamageSkinSettingComponent](/apiReference/Components/DamageSkinSettingComponent%7B%22target%22:%22_blank%22%7D)



#### Sevices

아래 목록의 서비스들은 `Play()` 메소드 사용 시 LitMode를 설정할 수 있습니다.

  * [DamageSkinService](/apiReference/Services/DamageSkinService%7B%22target%22:%22_blank%22%7D)
  * [EffectService](/apiReference/Services/EffectService%7B%22target%22:%22_blank%22%7D)
  * [ParticleService](/apiReference/Services/ParticleService%7B%22target%22:%22_blank%22%7D)