게임 화면 속 세상은 정말 입체적일까요? 화면에 보이는 물체들은 겉보기에 아주 입체적입니다. 하지만 게임 엔진 내부를 들여다보면 조금 다른 사실을 알게 됩니다. 엔진은 물체의 속을 들여다보지 않습니다. 오직 겉면인 표면(Surface)만을 대상으로 계산을 수행합니다.
처음엔 이 개념이 조금 낯설 수도 있습니다. 물체의 내부가 어떻게 생겼는지는 중요하지 않기 때문입니다. 안쪽에서 빛이 어떻게 움직이는지도 대부분 고려하지 않습니다. 이는 현실을 완벽히 베끼려는 것이 아닙니다. 성능을 확보하기 위한 아주 현실적인 선택입니다.
불투명한 물체는 겉면만 봐도 충분합니다
나무나 바위 같은 불투명한 물체를 한번 떠올려 보세요. 이런 물체는 어차피 속이 보이지 않습니다. 그래서 겉면만 정확히 처리해도 시각적으로 아무런 문제가 없습니다. 카메라에서 빛을 쏘았을 때 처음 닿는 표면만 계산하면 됩니다.
그 표면의 색과 조명 결과만 알아내면 충분합니다. 이 정보만으로도 화면의 픽셀은 충분히 진짜 같은 결과를 만들어 냅니다. 그래서 실시간 렌더링 파이프라인은 표면 처리에 집중되어 있습니다. 표면을 얼마나 빨리 처리하느냐가 관건입니다.

투명한 유리나 물을 표현하는 방법
여기서 궁금한 점이 생길 수 있습니다. 속이 비치는 유리나 물은 어떻게 할까요? 현실에서 유리나 젤리는 빛이 내부로 들어가 굴절됩니다. 안에서 여러 번 반사되기도 하고 산란도 일어납니다. 하지만 이 과정을 그대로 계산하려면 엄청난 시간이 듭니다.
실시간으로 게임을 돌려야 하는 상황에서는 이를 감당하기 어렵습니다. 그래서 프로그래머는 내부에서 일어나는 복잡한 빛의 움직임을 무시합니다. 대신 표면에서 간단한 투명도와 반사 효과만으로 흉내를 냅니다. 물리적으로 완벽하지 않아도 눈으로 보기에 그럴듯하면 넘어가는 식입니다.
연기와 구름도 사실은 얇은 종이입니다
부피가 있는 연기나 구름도 비슷한 원리로 처리됩니다. 실제로는 공간 안에 퍼져 있는 덩어리입니다. 하지만 게임에서는 진짜 볼륨 렌더링을 거의 쓰지 않습니다. 대신 여러 장의 얇은 반투명 카드를 겹겹이 배치합니다.
이것을 파티클이라고 부르는데 사실은 표면을 가진 평면들입니다. 플레이어 눈에는 연기처럼 보이지만 엔진 입장에서는 종이 쪼가리를 처리하는 셈입니다. 부피가 있는 것처럼 보이게 만드는 아주 영리한 눈속임입니다.
물리적 완벽함보다 중요한 성능
왜 굳이 표면 중심으로 장면을 표현할까요? 내부 부피까지 정확히 계산하려는 시도는 위험합니다. 그 순간 주어진 프레임 예산은 바닥나고 맙니다. 반면 표면만을 대상으로 삼으면 계산할 목표가 뚜렷해집니다.
이는 GPU가 효율적으로 일을 처리할 수 있는 환경을 만들어 줍니다. 실시간 렌더링에서 중요한 것은 완벽한 물리 법칙이 아닙니다. 제한된 시간 안에 플레이어를 설득할 수 있는 화면을 만드는 것입니다. 그래서 보이지 않는 부분은 과감히 생략합니다.
보이지 않는 것은 계산하지 않는 지혜
표면 중심 접근은 어쩔 수 없는 타협이 아닙니다. 오히려 실시간 그래픽을 가능하게 만드는 필수 전제 조건입니다. 우리가 게임에서 보는 화려한 장면 뒤에는 아주 냉철한 판단이 숨어 있습니다. 보이지 않는 것은 계산하지 않는다는 원칙입니다.
이런 판단 덕분에 거대한 세계가 모니터 안에 담길 수 있습니다. 복잡한 효과들이 초당 수십 프레임으로 부드럽게 그려지는 비결이기도 합니다. 프로그래머는 항상 보이는 것과 성능 사이에서 줄타기를 합니다.