최근 수정 시각 : 2024-03-22 20:43:47

라이트맵

Lightmap
라이트맵

라이트맵은 3D CG에서 빛의 방향과 세기에 따라 생성되는 빛을 받는 오브젝트의 그림자, 반사면, 면의 밝기 차이 등의 라이팅 정보를 사전에 저장하는 텍스쳐를 뜻한다.

플레이어가 바라보는 시야 및 씬의 환경 배치, 광원의 수와 조도 등에 따라서 화면에 출력되는 빛은 시시각각 다르게 보여지게 되며 이를 시각적으로 처리하는 연산에는 빛의 입자 정보를 일일이 따져보아야 하는 상당한 부하가 수반된다.

게임같은 경우, 빛을 계산하는 것이 콘텐츠의 전부가 아니기 때문에 라이팅에서 컴퓨팅 비용을 많이 사용하게 되면 게임플레이 코드 처리나 물리 연산 등에서 활용할 수 있는 자원이 줄어든다. 때문에 최대한 효율적으로 빛을 처리하고 다른 부분에서의 퍼포먼스도 보장하기 위하여 고안된 방법이 바로 라이트 정보를 미리 오브젝트의 텍스쳐에 '라이트맵'이라는 별도의 채널로 저장하여 마치 빛을 받고있는 듯 보이게 하는 라이트맵 방식이다. 이를 흔히 업계에서는 '라이트맵을 굽는다' 고 표현한다.

라이트맵 자체는 3ds Max Blender 등의 모델링 툴에서 텍스쳐 UV와는 다른 채널에서 언래핑하게 되며, 이를 언리얼 엔진이나 유니티 게임 엔진에서 로드하여 라이트맵으로 사용하게 된다.

실시간 동적 조명에 비해 단순 텍스쳐 데이터를 하나 추가로 불러와 보여주는 것이기에 계산량은 월등히 줄어들게 되는 것이 가장 큰 이점. 일부 AAA급 게임이나 다이나믹 라이팅에 특화된 콘텐츠가 아닌 이상, 사실상 관련 업계 표준의 방식이라고 해도 과언이 아니다.[1] 또한 미리 텍스쳐에 라이팅 정보가 저장되므로 사양에 관계없이 동일한 고퀄리티의 라이팅을 표현할 수 있다는 것도 큰 장점 중 하나이다.

단점으로는 빛의 정보를 미리 저장하기 위해 제작된 레벨의 라이트 배치에 맞게 프로젝트에 따라 때로는 아주 긴 시간 동안 베이킹을 해주어야 한다는 점, 한 번 굽고나면 결과를 확인하고 수정한 뒤 다시 긴 시간의 빌드가 필요한 점, 실제 씬에서 라이트의 세기나 그림자 방향의 변화를 표현할 수 없기에 종종 이질감이 심할 경우가 있다는 점 등이 있다.

[1] 하지만 최근에는 하드웨어가 고성능화되면서 3D 기반 게임에서는 연산 부하가 상대적으로 큰 실시간 라이팅의 저변이 넓어지고 있는 중이다.