Version: 2023.1
언어: 한국어
앰비언트 오클루전
라이트매핑 및 셰이더

라이트맵: 기술 정보

Unity 에디터는 타겟 플랫폼과 라이팅 창의 압축 설정에 따라 압축과 인코딩 방식이 다른 라이트맵을 저장합니다.

인코딩 방식

Unity 프로젝트에서는 두 가지 기법을 사용하여 베이크된 광원 강도를 필요한 경우 LDR(low dynamic range) 텍스처로 인코딩할 수 있습니다.

  • RGBM 인코딩. RGBM 인코딩에서는 컬러를 RGB 채널에 저장하고 멀티플라이어(M)를 알파 채널에 저장합니다. RGBM 라이트맵의 범위는 선형 공간에서는 0부터 34.49(52.2)까지이고, 감마 공간에서는 0부터 5까지입니다.

  • dLDR(Double Low Dynamic Range) 인코딩. dLDR 인코딩은 모바일 플랫폼에서 사용되며, 간단히 [0, 2] 범위를 [0, 1]에 매핑합니다. 값이 2보다 큰 베이크된 광원 강도는 고정됩니다. 디코딩 값은 감마 공간을 사용할 때는 라이트맵 텍스처의 값에 2를 곱하고, 선형 공간을 사용할 때는 4.59482(22.2)를 곱하여 계산합니다. 일부 플랫폼에서는 RGBM을 사용할 때 하드웨어 압축을 거치면 시각적 결함이 발생하기 때문에 해당 플랫폼에서는 라이트맵을 dLDR로 저장합니다.

선형 색 공간을 사용할 때 라이트맵 텍스처는 sRGB로 표시되고 (샘플링 및 디코딩 후에) 셰이더에서 사용되는 최종 값은 선형 색 공간에 놓입니다. 감마 색 공간을 사용하면 최종 값이 감마 색 공간에 놓입니다.

참고: 인코딩을 사용하면 라이트맵에 저장되는 값(GPU 텍스처 메모리)은 항상 감마 색 공간에 놓입니다.

UnityCG.cginc 셰이더 포함 파일의 Decode Lightmap 셰이더 기능은 셰이더의 라이트맵 텍스처에서 값을 읽어온 후 라이트맵 값의 디코딩을 처리합니다.

HDR 라이트맵 지원

Windows, Mac, Linux, iOS, tvOS, Android에서 HDR 라이트맵을 사용할 수 있습니다. 해당 플랫폼용 라이트맵의 인코딩/압축을 제어하려면 Edit > Project Settings > Player > Other Settings > Lightmap Encoding으로 이동합니다.

High Quality 를 선택하면 HDR 라이트맵 지원이 활성화되고, Normal Quality 를 선택하면 RGBM 인코딩 사용으로 전환됩니다. Low Quality 를 선택하면 모바일 플랫폼에서 dLDR 인코딩으로 전환됩니다. 이는 다른 플랫폼의 Normal Quality 에 해당합니다.

Lighting 창에서 라이트맵 Compression 을 활성화하면 데스크톱과 콘솔 플랫폼에서 라이트맵이 BC6H 압축 포맷을 사용하여 압축됩니다. 모바일 플랫폼의 경우 Unity는 아래 표에 따라 HDR 포맷을 선택합니다.

고품질(BC6H) 라이트맵의 장점

  • HDR 라이트맵은 인코딩 방식을 사용하여 라이트맵 값을 인코딩하지 않으므로 지원 범위는 0부터 65504까지의 범위를 가지는 16비트 부동 소수점 텍스처 포맷에 의해서만 제한됩니다.

  • BC6H 포맷은 DXT5 + RGBM 포맷 인코딩보다 품질이 우수하고 RGBM 인코딩에 수반되는 컬러 줄무늬 결함이 발생하지 않습니다.

  • 샘플 HDR 라이트맵이 필요한 셰이더는 샘플링된 값을 디코드할 필요가 없으므로 ALU 명령이 몇 개 더 적어집니다.

  • BC6H 포맷의 GPU 메모리 요구 사항은 DXT5와 같습니다.

다음은 인코딩 방식과 각 방식의 텍스처 압축 포맷을 타겟 플랫폼별로 나열한 목록입니다.

타겟 플랫폼 인코딩 압축 - 크기(픽셀당 비트 수)
스탠드얼론(PC, Mac, Linux) RGBM / HDR DXT5 / BC6H - 8 bpp
WebGL 1.0/2.0 RGBM DXT5 - 8bpp
iOS ASTC (1) dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
iOS PVRTC dLDR / RGBM / HDR PVRTC RGB - 4 bpp / ETC2 RGBA - 8 bpp / RGB9E5 - 32 bpp
tvOS dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
Android ASTC (2) dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / ASTC HDR - 3.56 bpp
Android ETC2 dLDR / RGBM / HDR ETC2 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp
Android ETC dLDR / RGBM / HDR ETC1 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp

[1] iOS 의 라이트맵에 사용되는 텍스처 압축 포맷은 플레이어 설정Texture compression format 설정에 따라 다릅니다.

[2] Android 에서 라이트맵에 사용되는 텍스처 압축 포맷은 플레이어 설정빌드 설정에 따라 다릅니다. 이러한 설정이 상호 작용하는 방법에 대한 자세한 내용은 텍스처 압축 설정을 참조하십시오.

미리 계산된 실시간 전역 조명(GI)

GI 시스템의 입력 범위와 인코딩은 출력과 다릅니다. 표면 알베도는 감마 공간에서 부호 없는 8비트 정수 RGB고, 이미션은 선형 공간에서 16비트 부동 소수점 RGB입니다. 메타 패스를 사용한 커스텀 입력 제공에 관한 권고 사항은 라이트매핑 및 셰이더 문서를 참조하십시오.

복사 조도 출력 텍스처는 RGB9E5 공유 지수 부동 소수점 포맷(그래픽 하드웨어에서 지원하는 경우)을 사용하여 저장되거나, 범위가 5인 RGBM이 폴백(fallback)으로 사용됩니다. RGB9E5 라이트맵의 범위는 [0, 65408]입니다. RGB9E5 포맷에 대한 자세한 내용은 Khronos.org: EXT_texture_shared_exponent를 참조하십시오.

참고 항목:


  • 2019–04–26 페이지 수정됨

  • Unity 2017.2에서 베이크된 라이트맵 추가됨 NewIn20172

  • Unity 2017.3에서 HDR 라이트맵 지원 추가됨 NewIn20173

  • Unity 2019.1에서 모바일 플랫폼용 라이트맵 인코딩 설정 추가됨 NewIn20191

  • Android 및 iOS용 라이트맵 텍스처 압축 포맷 업데이트됨

앰비언트 오클루전
라이트매핑 및 셰이더