라이트맵

Lightmap


간단한 라이트맵이 있는 큐브(오른쪽 그림).

라이트맵라이트맵에 사용되는 데이터 구조이며, 가상 장면에서 표면의 밝기가 미리 계산되어 나중에 사용하기 위해 텍스처 맵에 저장되는 표면 캐싱의 한 형태입니다.라이트맵은 비디오 게임과 같은 실시간 3D 컴퓨터 그래픽을 사용하는 애플리케이션에서 비교적 낮은 계산 비용으로 글로벌 조명과 같은 조명 효과를 제공하기 위해 정적 객체에 가장 일반적으로 적용됩니다.

역사

존 카맥의 퀘이크(John Carmack's Quake)는 라이트맵을 사용하여 [1]렌더링을 강화한 최초의 컴퓨터 게임이다.라이트맵이 발명되기 전에는 실시간 어플리케이션이 표면의 정점 조명을 보간하기 위해 Guraud 쉐이딩에만 의존했습니다.이는 저주파 조명 정보만 허용하고 투시 보정 없이 카메라 근처에 클리핑 아티팩트를 만들 수 있습니다.불연속 메싱은 정점 조명 정보의 분해능을 적응적으로 개선하기 위해 전파성 솔루션과 함께 사용되기도 했지만, 실시간 래스터라이제이션에 대한 원시 설정에서의 추가 비용은 일반적으로 엄청났다.Quake의 소프트웨어 래스터라이저는 표면 캐슁을 사용하여 폴리곤이 처음 보기 좌절 내에 나타날 때 텍스처 공간에 조명 계산을 적용했습니다(시청자가 장면을 협상할 때 효과적으로 현재 보이는 텍스처의 임시 '빛' 버전을 생성).

멀티텍스처링이 가능한 소비자용 3D 그래픽 하드웨어가 보급되면서 라이트맵이 대중화되었고 엔진은 2차 멀티블렌드 텍스처 레이어로 실시간으로 라이트맵을 결합하기 시작했습니다.

제한 사항

라이트맵은 텍스처 매핑의 텍셀과 유사한 루멜[2](루미네이션 요소)로 구성됩니다.루멜이 작을수록 고해상도 라이트맵이 생성되므로 성능 저하와 메모리 사용률 증가에 따른 비용으로 조명 디테일을 보다 세밀하게 표시할 수 있습니다.예를 들어, 세계 단위당 4루멜의 라이트맵 스케일은 세계 단위당 16루멜의 스케일보다 낮은 품질을 제공합니다.따라서 수준 설계자와 3D 아티스트는 이 기술을 사용할 때 성능과 품질을 절충해야 하는 경우가 많습니다. 고해상도 라이트맵을 너무 자주 사용하면 애플리케이션이 과도한 시스템 리소스를 소비하여 성능에 부정적인 영향을 미칠 수 있습니다.또한 라이트맵 해상도와 스케일링은 애플리케이션이 사용할 수 있는 디스크 스토리지 공간, 대역폭/다운로드 시간 또는 텍스처 메모리에 의해 제한될 수 있습니다.일부 구현에서는 이러한 제한을 회피하기 위해 여러 개의 라이트맵을 아틀라싱이라고[3] 불리는 프로세스로 함께 패킹하려고 합니다.

라이트맵 해상도와 스케일은 별개의 문제입니다.해상도는 하나 이상의 서페이스 라이트맵을 저장할 수 있는 면적(픽셀 단위)입니다.라이트맵에 들어갈 수 있는 개별 표면의 수는 척도에 따라 결정됩니다.축척 값이 작을수록 품질이 높아지고 라이트맵에서 더 많은 공간이 사용됨을 의미합니다.축척 값이 높을수록 품질이 떨어지고 사용된 공간이 적다는 것을 의미합니다.표면은 같은 면적의 라이트 맵을 가질 수 있기 때문에 1:1의 비율 또는 그보다 작기 때문에 라이트 맵은 맞도록 늘어납니다.

게임의 라이트맵은 보통 컬러 텍스처 맵 또는 정점별 색상으로 표시됩니다.그것들은 보통 빛의 방향에 대한 정보가 없는 평평한 반면, 일부 게임 엔진은 일반 지도와 결합하기 위한 대략적인 방향 정보를 제공하기 위해 여러 개의 라이트맵을 사용합니다.또한 라이트맵에는 환경혼란이나 햇빛의 그림자 등 반동적 조명용 조명정보의 개별 컴포넌트가 저장되어 있을 수 있습니다.

창조.

라이트맵을 작성할 때는 모든 조명모델을 사용할 수 있습니다.조명은 완전히 사전계산되어 실시간 퍼포먼스가 반드시 필요한 것은 아니기 때문입니다.일반적으로 주변 폐색, 샘플링된 그림자 가장자리를 사용한 직접 조명 및 완전한 방사선성[4] 바운스 라이트 솔루션을 포함한 다양한 기술이 사용됩니다.최신 3D 패키지에는 광지도 UV 좌표를 적용하고, 여러 표면을 단일 텍스처 시트로 아틀라스로 만들고, 지도를 렌더링하기 위한 특정 플러그인이 포함되어 있습니다.또는 게임 엔진 파이프라인은 커스텀 라이트맵 작성 툴을 포함할 수 있다.또 다른 고려사항은 블록 아티팩트의 영향을 받기 쉬운 압축 DXT 텍스처를 사용하는 것입니다.최적의 결과를 얻으려면 개별 표면이 4x4 텍셀 청크로 충돌하지 않아야 합니다.

모든 경우, 간단한 폐색 테스트(기본 광선 추적 등)를 사용하여 빛에 보이는 루멜을 판별하는 경우 정적 지오메트리의 부드러운 그림자가 가능합니다.그러나 섀도의 실제 부드러움은 엔진이 표면에 걸쳐 루멜 데이터를 어떻게 보간하느냐에 따라 결정되며, 루멜이 너무 클 경우 화소화된 것처럼 보일 수 있습니다.텍스처 필터링을 참조해 주세요.

Lightmaps 또한 real-time[5]에 실시간 ray-tracing 여전히 너무 현대 하드웨어에 대부분의 3D엔진에서 공연하는 것이 너무 느리다고 비록 그림자 창조 아직도 스텐실 그림자 물량 또는 그림자 매핑과 같은 또 다른 메서드를 사용하여 수행해야 하는 고러드 채색의 결함인 성향을 보이지 않다 질 좋은 색깔의 조명 효과로 계산할 수 있다.s.

광자 매핑은 라이트 맵의 전역 조명을 계산하는 데 사용할 수 있다.

대체 수단

정점 조명

정점조명에서는 정점별로 조명정보를 계산하여 정점색 속성으로 기억한다.두 가지 기법은 결합될 수 있다. 예를 들어, 높은 상세 메쉬를 위해 저장된 정점 색상 값. 반면 라이트 맵은 거친 기하학에만 사용된다.

불연속 매핑

불연속 매핑에서는, 명암에 있어서의 주요한 변화에 따라서 씬(scene)을 한층세분화해, 음영을 보다 잘 정의할 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Abrash, Michael. "Quake's Lighting Model: Surface Caching". www.bluesnews.com. Retrieved 2015-09-07.{{cite web}}: CS1 maint :url-status (링크)
  2. ^ Channa, Keshav (July 21, 2003). "flipcode - Light Mapping - Theory and Implementation". www.flipcode.com. Retrieved 2015-09-07.{{cite web}}: CS1 maint :url-status (링크)
  3. ^ "Texture Atlasing Whitepaper" (PDF). nvidia.com. NVIDIA. 2004-07-07. Retrieved 2015-09-07.{{cite web}}: CS1 maint :url-status (링크)
  4. ^ Jason Mitchell, Gary McTaggart, Chris Green, Shading in Valve's Source Engine. (PDF) 2019년 6월 7일 취득.
  5. ^ 2003년 11월 16일OpenGL의 다이내믹 라이트맵Joshbeam.com 2014년 7월 7일 취득.