조명

실제 세계에서 우리가 지면의 물건을 볼 수 있는 이유는 빛이 끊임없이 지면에 도달하면서 일부 파장은 흡수되어 버리고, 일부 파장은 반사되어 우리 눈으로 들어오기 때문입니다. 게임 수준에서도 마찬가지로, 장면에 오브젝트를 배치했는데 그 표면에서 라이트가 반사되어 카메라로 들어오지 않으면 아무것도 볼 수가 없습니다.

게임에서 라이트를 제어한다는 것은 서로 복잡한 방식으로 상호작용할 수 있는 아주 다양한 소스의 효과를 조합한다는 의미도 포함됩니다. 수준의 조명을 설정할 때에는 다음과 같은 다양한 요인 간에 균형을 잡아주어야 합니다.

이 섹션의 항목들은 Stingray가 제공하는 다양한 조명 기술 전체에 대한 사용 방법을 설명합니다.

한 예로, 위의 장면에서는 머리 위쪽에 배치된 여러 라이트 소스가 방출하는 직접 조명과 어둑어둑한 공간에서 가장 잘 보이는 주변 전역 라이트를 사용하면서 이 조명들이 빛나 보이도록 오버헤드 유닛에는 방사성 재질을 사용하고 있습니다.

이 조명 기술들은 상호보완적인 관계이기 때문에 게임의 여러 부분에서 또는 수준 내 여러 위치에서 동시에 같이 사용할 수 있다는 점을 기억하십시오. 예를 들어, 일부 중요한 정적 오브젝트를 렌더링하기 위해 고품질 라이트 맵을 베이킹하면서 보다 덜 중요한 다른 오브젝트에 대해서는 전역 조명 맵을 사용할 수도 있습니다.

직접 조명

게임 엔진의 렌더링 시스템은 장면 내 모든 직접 조명을 실시간으로 합산하는데, 표면에서 한 번 바운스되고 나서 카메라로 직행하는 모든 라이트가 직접 조명입니다. 이 직접 조명은 수준에 배치한 라이트 소스로부터 방출됩니다.

모든 수준은 기본적으로 태양이나 달로 대표되는 멀리 떨어진 라이트 소스를 시뮬레이트하는 방향 라이트가 포함되도록 설정됩니다. 다른 종류의 라이트 소스를 생성하여 수준에 배치할 수도 있습니다. 이 라이트 소스는 대개 램프, 스포트라이트, 초, 횃불 같은 장면 내 오브젝트가 방출하는 라이트를 시뮬레이션합니다. 라이트 소스를 참조하십시오.

직접 조명은 매 게임 프레임마다 실시간으로 계산 및 렌더링되기 때문에 장면 내 오브젝트 및 라이트의 위치와 방향을 정확하게 반영하는 그림자가 생성됩니다. 예를 들어, 이 캐릭터가 움직이면 지면과 근처의 오브젝트에 움직이는 그림자를 드리웁니다.

하지만 직접 조명은 자체적으로 매우 뚜렷하고 매우 짙은 그림자를 생성합니다. 배치된 라이트에서 나오는 광선이 닿지 않는 모든 곳은 결국 사실상 검은색으로 렌더링됩니다. 이로 인해 고대비의 매우 극적인 효과가 만들어집니다. 수준 디자이너들은 수준에 더 많은 라이트 소스를 배치하여 어두운 공간을 채움으로써 이를 바로잡을 수 있지만 대개는 장면에 몇 개의 간접 조명을 추가하는 것이 더 좋은 방법입니다. 이 간접 조명이 그림자 진 공간을 채움으로써 그 표면에 직접 라이트가 비추지 않더라도 계속 눈에 보이게 됩니다.

간접 조명

실제 세계에서는 빛이 한 번 반사 후 멈추지 않고, 주변 오브젝트에 흡수되어 그 에너지가 소멸될 때까지 이 오브젝트에서 저 오브젝트로 계속 반사됩니다. 이 때문에 그림자 진 공간을 부분적으로 비추는 간접 라이트가 생기면서 전체적인 대비 효과가 감소하는 것입니다.

간접 라이트가 그림자 진 공간으로 번지는 효과를 정확하게 시뮬레이트하는 작업은 대개 너무 복잡하기 때문에 게임 중 실시간으로 정확히 시뮬레이트할 수가 없습니다. 하지만 높은 비용의 런타임 계산 없이도 간접 라이트를 시뮬레이트할 수 있는 몇 가지 기술이 있습니다.

전역 조명

장면에 전역 조명, 즉 실시간 렌더러가 수준 내 모든 표면에 균등하게 적용하는 분산 및 반사광 라이트 효과를 추가하도록 수준의 음영처리 환경을 설정할 수 있습니다.

일반적으로 이 주변 라이트는 반사 프로브에 의해 베이킹된 텍스처로 설정하여 주변 라이트가 주변 환경 및/또는 하늘에서 방출되는 것처럼 보이게 합니다.

전역 환경 조명을 참조하십시오.

베이킹된 조명

게임을 구동하는 하드웨어의 부하를 늘리지 않으면서 보다 정확하고 사실적인 간접 조명을 설정해야 하는 경우 장면의 조명을 베이킹해 보는 것이 좋습니다. 이렇게 하면 디스크에 "라이트 맵"이라고 하는 텍스처 파일들이 생성되는데, 여기에는 수준 내 각 표면에 도달하는 조명이 포함됩니다.

이 라이트 맵을 계산하는 데 시간이 더 걸리고, 라이트 맵을 게임에 로드하는 데 추가로 메모리가 소모되기는 하지만 런타임 CPU 성능과 사실성은 완전한 동적 조명보다 뛰어난 경우가 대부분입니다.

라이트 베이킹을 참조하십시오.

물리적 기반의 조명

이러한 라이트 측정을 포토메트리라고 합니다. 포토메트릭 라이트를 사용하여 장면의 라이트를 보다 정확하게 정의할 수 있습니다. Stingray에서 물리적 라이트 엔티티는 물리적 라이트의 데이터를 사용하여 장면에서 사실적인 라이트 분산을 생성할 수 있도록 해 줍니다.

물리적 기반의 조명을 참조하십시오.

방사형 발광

Stingray 재질의 emissive 특성을 사용하여 자동차 후미등, 기계장비의 LED, 네온사인 같은 모델의 일부가 빛나게 할 수 있습니다. 오브젝트에 음영을 드리우게 하는 데 사용하는 재질에서 이 방사형 효과를 설정합니다.

방사형 재질이 실제로 장면의 다른 오브젝트에 직접 라이트를 방출하는 것은 아닙니다. 실시간 렌더러는 이 재질로부터 어떠한 직접 효과도 포함시키지 않습니다. 하지만 후 처리 중 음영처리 환경에 의해 적용되는 약간의 확산 효과가 결합하면 작은 라이트 소스를 시뮬레이트할 수 있는 효과적이면서 저렴한 방법이 되어줍니다.

주변 장면에 직접 라이트를 비추는 방사형 오브젝트가 필요한 경우 이를 스포트라이트 같은 직접 라이트 소스와 결합시키거나 간접 라이트를 베이킹할 때 방사형 재질의 효과가 확실히 포함되도록 베이킹하면 됩니다.

음영처리 섹션의 항목도 참조하십시오.

관련 항목