Light

대인공·2022년 10월 17일
0

Unity

목록 보기
7/14
post-thumbnail

Light

Unity상에서 Light는 현실과 빛이 동작하는 방식과 근사하게 동작한다.

Light의 종류에는 현실처럼 두가지의 종류가 있다

조명을 많이 사용하면 시각적인 효과는 극대화되지만 프로세스가 처리해야할 부하는 늘어난다. 유니티에서 제공하는 다양한 옵션을 사용하면 부하를 효과적으로 줄일 수 있다.


조명

1. 직접 조명과 간접 조명

두 가지다 동시에 사용가능하다.

  1. 직접 조명
    - 광원에서 방출된 빛이 표면에 한번 반사된 후 카메라에 도달하는 Light
  1. 간접 조명
    - 광원에서 방출된 빛이 여러 표면에 여러번 반사된 Light

2. RunTime 조명과 Bake된 조명

두 가지다 동시에 사용가능하다.

  1. RunTime조명
    - Unity가 RunTime일시 연산하는 Light
  1. Bake된 조명
    - Unity가 연산을 미리하고 결과를 저장한 후 RunTime시 적용하는 Light


광원

빛을 방출하는 오브젝트이다.

광원의 종류

  • Directional Light
    - 태양과 같은 조명으로 월드 전체에 균일한 빛을 비춘다.
    - 월드 어느 좌표에 설정해도 무방하다. (y > 0)
  • Point Light
    - 중점을 기준으로 주변으로 퍼져나가는 조명이다.
    - 빛이 미치는 범위를 설정할 수 있는 Range속성이 있다.
  • Spot Light
    - 손전등과 같이 원뿔 모형으로 빛을 발하는 조명이다.
    - 실시간 조명중 가장 비용이 비싸다.
    - 빛이 뻗어나가는 각도를 조절할 수 있는 Spot Angle이 있다.
  • Area Light
    - 사각형 형태의 조명으로 한쪽 면에서 빛을 발하는 조명이다.
    - 다른 조명과는 다르게 실시간 조명이 아니며 Lighting에서 LightMap을 Bake해야만 확인할 수 있다.
    - 간접조명에 주로 사용된다.


전역조명 시스템

직접 조명과 간접 조명을 모두 모델링하여 사실적인 결과를 제공하는 기술이다.
조명에 대한 연산을 미리 해놓아 프로세스의 부하를 줄일 수 있다.

- Light Mapping, Light Probe, Reflection Probe로 이루어져 있다.
- 모든 랜더 파이프라인은 Bake된 전역조명 시스템을 지원한다.


Light Mapping

씬의 조명 밝기를 미리 연산하고 결과를 Light Map이라고 불리는 Texture에 저장하는 기능이다.
씬의 표면에 닿는 광원에 대한 정보를 저장한다.

오른쪽 이미지 : 조명이 배치된 씬
왼쪽 이미지 : 배치된 조명으로 만들어진 Light Map. 그림자 및 광원 정보가 모두 저장된다.

직접광과 간접광이 모두 포함될 수 있다.

  • 장점
    - 미리 연산을 해놓아 RunTime시 연산을 할 필요가 없다. 광원을 실시간으로 움직일 수 있는 유용성과 프로세스의 부하와 맞바꾸는 것이다.
  • 단점
    - RunTime시 변경할 수 없다. 실시간 광원같은 경우 Texture가 적용된 씬 위에 레이어를 추가시켜 사용해야 한다.

Light Probe

씬의 빈 공간을 지나가는 빛에 대한 정보를 Probe에 저장한다.

노란 점들을 Probe라고 한다.

RunTime시점에 동적 게임 오브젝트에 담는 간접광은 해당 오브젝트와 가장 가까운 Probe의 값을 불러와 근사화된다.

Light Map과 다르게 동적 오브젝트에게도 고품질의 조명을 제공할 수 있다.


Reflection Probe

특정 지점들의 반사광을 미리 연산하여 Probe에 저장한다.

Probe를 둘러싼 모든 방향의 정적 오브젝트를 캡쳐하여 CubeMap으로 저장하여, 반사 재질을 가지는 객체에서 사용가능하다.

참조 : https://docs.unity3d.com/kr/2021.1/Manual/LightingOverview.html

profile
이제 막 시작하는 유니티 클라이언트

0개의 댓글