- 정적 조명(Static Lighting) : 씬의 조명을 미리 계산하여 조명맵(빛이 어떻게 분포되는지에 대한 정보)에 저장하는 방식이다. Lightmass라는 조명 계산 시스템으로, 라이트와 오브젝트의 반사, 굴절 등을 고려하여 간접 조명까지 계산하여 조명맵을 생성한다. 이후 사용되는 조명 맵은 각 표면에 적용되어 사전 계산된 조명 데이터를 기반으로 하므로 실시간 연산을 요구하지 않는다. 따라서 오브젝트가 움직이거나 씬이 변경될 경우 조명 맵을 다시 계산해야 하므로 유연성이 떨어지며, 동적 요소에 대해 정확한 조명을 제공하지 못한다.
- 동적 조명(Dynamic Lighting) : 씬에서 실시간으로 조명이 계산되는 방식으로, 주로 움직이는 오브젝트나 플레이어 캐릭터에 적용 된다. 따라서 라이트 소스의 위치, 각도, 색상에 따라 매 프레임마다 실시간으로 계산하기 때문에 더 많은 연산을 요구한다. 이 과정에서 Shadow Mapping 기술을 사용하여 라이트 소스의 시점에서 씬을 렌더링하여 깊이 정보를 담은 그림자 맵(Shadow Map)*(1)를 생성 한다. 이 과정에서 깊이 값을 포함한 텍스처가 만들어지고, 각 픽셀의 깊이 값이 해당 라이트 소스에 대해 저장된다. 이후 주 카메라에서 씬을 렌더링할 때, 픽셀의 깊이 값을 계산하여 깊이 맵 (DepthMap)*(2) 을 생성하고 이를 통해 그림자가 어떻게 투영될지를 결정한다. 계산이 복잡하기 때문에 품질이 낮을 수 있다(예: 간접 조명이 부정확할 수 있음).
- 정적 그림자 (Static Shadows) : 정적 조명에서 조명 맵을 생성할 때 함께 생성된 고정된 그림자. Lightmass를 사용하여 간접 조명과 그림자가 매끄럽고 사실적으로 보이도록 계산. 따라서 높은 품질의 그림자를 생성할 수 있다.
- 동적 그림자 (Dynamic Shadows) : 동적 조명에서 생성된 실시간 그림자로, 오브젝트의 움직임에 따라 변화. 이 경우 성능에 영향을 미칠 수 있다.
- Contact Shadows*(3): 오브젝트와 표면 간의 접촉 부분에서 더 부드럽고 사실적인 그림자를 생성한다.
- 정적 조명 시스템에서는 일반적으로 정적 그림자가 기본적으로 사용되지만, 필요에 따라 동적 그림자를 추가할 수도 있다.
라이트 타입:
- Directional Light: 태양과 같은 광원으로, 모든 방향에서 균일하게 빛을 비춘다.
- Point Light: 점에서 모든 방향으로 빛을 방출하는 광원으로, 구형으로 빛이 퍼진다
- Spot Light: 특정 방향으로 제한된 범위의 빛을 비추는 조명
- Sky Light: 하늘의 빛을 기반으로 한 조명으로, 간접 조명 효과를 제공
조명의 속성:
- Intensity: 조명의 강도
- Color: 빛의 색상으로, 장면의 분위기를 조절
- Attenuation Radius: 라이트가 영향을 미치는 범위
- Cast Shadows: 라이트가 그림자를 생성하는지 여부
*(1) 그림자 맵(Shadow Map) : 특정 라이트 소스의 시점에서 깊이 정보를 저장하는 맵으로, 주 카메라 시점에서 픽셀이 해당 깊이보다 가까운 물체가 있는지를 판단하여 그림자를 생성하는 데 사용.
*(2) 깊이 맵 (Depth Map) : 카메라의 시점에서 깊이 정보를 저장하는 맵으로, 주로 거리 계산이나 물체 간의 충돌 감지, 포스트 프로세싱 효과에 사용
*(3) Contact Shadows : 픽셀 단위로 깊이 정보를 제공하는 그림자 맵을 보완하여 가까운 물체 간의 그림자 효과를 강조. 그림자의 가장자리를 부드럽게 하고, 경계에서의 깊이를 조정하여 더 자연스러운 결과를 만든다.