라이트 프로브 프록시 볼륨 컴포넌트
반사 프로브의 타입

반사 프로브

CG 필름 및 애니메이션에서는 일반적으로 매우 실감나는 반사 효과를 보여주는데, 이는 씬에 있는 오브젝트 간의 “상호 작용”을 표현하는 데 중요한 역할을 하는 요소입니다. 하지만 이러한 반사의 정확도를 향상시키려면 작업을 처리하는 데 더 많은 시간이 소요됩니다. 영화 제작의 경우 시간 비용이 크게 문제가 되지 않지만, 게임의 오브젝트에 반사 효과를 실시간으로 적용하려면 시간적인 제한이 따를 수 밖에 없습니다.

일반적으로 게임은 반사 매핑 이라는 기술을 사용하여 오브젝트로부터의 반사를 시뮬레이션하는 동시에 프로세싱 오버헤드를 적정 수준으로 유지하였습니다. 이 기술은 씬에 있는 모든 반사 오브젝트가 정확히 동일한 주변 환경을 “본다”(그에 따라서 반사한다)고 가정합니다. 이 방식은 게임의 메인 캐릭터(빛나는 자동차 등)가 열린 공간에 있을 경우 꽤 효과적이지만, 캐릭터가 다른 주변 환경을 지나가는 경우에는 현실감이 떨어집니다. 예를 들어, 자동차가 터널을 지나가는데 차창에 여전히 하늘이 반사되어 보인다면 이상할 수 있습니다.

Unity는 반사 프로브(Reflection Probes) 를 사용하여 기본 반사 매핑을 향상시킵니다. 반사 프로브는 시각적 환경을 씬의 전략적 지점에서 샘플링하도록 해줍니다. 일반적으로 반사 프로브는 터널, 건물 근처, 지면 컬러가 변하는 지점 등 반사하는 오브젝트의 외관이 확연히 바뀔 만한 지점마다 배치해야 합니다. 반사 오브젝트가 프로브 근처를 지나가면 이 프로브에서 샘플링한 반사가 해당 오브젝트의 반사 맵에 사용됩니다. 뿐만 아니라, 여러 개의 프로브가 근처에 있을 경우 Unity는 이 프로브를 보간하여 반사가 점진적으로 변화하도록 해줍니다. 따라서 반사 프로브를 사용하면 적당한 프로세싱 오버헤드를 감수하는 선에서 상당히 실감나는 반사 효과를 만들어낼 수 있습니다.

반사 프로브 동작 방식

씬의 한 지점에 대한 시각적 환경은 큐브맵으로 표현할 수 있습니다. 큐브맵의 개념은 여섯 방향(위, 아래, 왼쪽, 오른쪽, 앞, 뒤)에서의 뷰의 플랫 이미지로 상자 내부 표면을 채색한 것과 같습니다.

스카이박스 큐브맵의 내부 표면(전면은 제거됨)
스카이박스 큐브맵의 내부 표면(전면은 제거됨)

오브젝트에 반사를 보여주려면 오브젝트의 셰이더는 큐브맵을 나타내는 이미지에 액세스할 수 있어야 합니다. 오브젝트 표면의 각 지점은 그 표면이 향하는 방향의 큐브맵의 작은 영역을 “볼” 수 있습니다(즉, 해당 표면의 노멀 벡터 방향). 셰이더는 이 지점의 큐브맵 컬러를 사용하여 오브젝트의 표면에 어떤 컬러가 나타나야 할지를 계산합니다. 거울 머티리얼은 컬러를 완전히 반사할 것이며, 빛나는 자동차의 경우 다소 흐려진 옅은 컬러를 사용할 수도 있습니다.

위에 언급한 것처럼 일반적인 반사 매핑은 전체 씬의 주변 환경을 나타내기 위해 하나의 큐브맵만 활용합니다. 이 큐브맵은 아티스트가 직접 채색할 수도 있고, 또는 씬의 한 지점에서 큐브의 각 면에 적용할 여섯 개의 “스냅샷”을 찍어 얻을 수도 있습니다. 반사 프로브는 이를 개선하여 큐브맵 스냅샷을 찍을 수 있도록 씬에 여러 개의 사전 정의 지점을 설정하도록 해줍니다. 따라서 씬에서 반사가 두드러지게 달라지는 어느 지점에서든지 주변 환경 뷰를 기록할 수 있습니다.

프로브는 씬의 뷰 포인트 뿐만 아니라 보이지 않는 박스 형태로 정의되는 효과 영역도 가집니다. 프로브의 영역을 지나가는 반사 오브젝트는 이 프로브에 의해 일시적으로 제공되는 반사 큐브맵을 갖게 됩니다. 오브젝트가 하나의 영역에서 다른 영역으로 이동함에 따라 이 큐브맵 역시 그에 맞게 변화합니다.

라이트 프로브 프록시 볼륨 컴포넌트
반사 프로브의 타입