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 라이트맵은 PC, Mac & Linux 스탠드얼론, Xbox One과 PlayStation 4에서 사용할 수 있습니다. Player 설정의 Other Settings 패널에 이러한 플랫폼을 위한 Lightmap Encoding 옵션이 있습니다. 이 옵션은 라이트맵의 인코딩/압축을 제어합니다.
High Quality 를 선택하면 HDR 라이트맵 지원이 활성화되고, Normal Quality 를 선택하면 RGBM 인코딩 사용으로 전환됩니다.
조명 창에서 라이트맵 압축(Compression) 을 활성화하면 라이트맵이 BC6H 압축 포맷을 사용하여 압축됩니다.
HDR 라이트맵은 인코딩 방식을 사용하여 라이트맵 값을 인코딩하지 않으므로 지원 범위는 0부터 65504까지의 범위를 가지는 16비트 부동 소수점 텍스처 포맷에 의해서만 제한됩니다.
BC6H 포맷은 DXT5 + RGBM 포맷 인코딩보다 품질이 우수하고 RGBM 인코딩에 수반되는 컬러 줄무늬 결함이 발생하지 않습니다.
샘플 HDR 라이트맵이 필요한 셰이더는 샘플링된 값을 디코드할 필요가 없으므로 ALU 명령이 몇 개 더 적어집니다.
BC6H 포맷의 GPU 메모리 요구 사항은 DXT5와 같습니다.
다음은 인코딩 방식과 각 방식의 텍스처 압축 포맷을 타겟 플랫폼별로 나열한 목록입니다.
타겟 플랫폼 | 인코딩 | 압축 - 크기(픽셀당 비트 수) |
---|---|---|
스탠드얼론(PC, Mac, Linux) | RGBM / HDR | DXT5 / BC6H - 8 bpp |
Xbox One | RGBM / HDR | DXT5 / BC6H - 8 bpp |
PlayStation4 | RGBM / HDR | DXT5 / BC6H - 8 bpp |
WebGL 1.0/2.0 | RGBM | DXT5 - 8bpp |
iOS | dLDR | PVRTC RGB - 4bpp |
tvOS | dLDR | ASTC 4x4 블록 RGB - 8bpp |
Android* | dLDR | ETC1 RGB - 4 bpp |
Samsung TV | dLDR | ETC1 RGB - 4 bpp |
Nintendo 3DS | dLDR | ETC1 RGB - 4 bpp |
Nintendo 3DS | dLDR | ETC1 RGB - 4 bpp |
*타겟이 Android 일 때에는 빌드 설정(Build Settings) 에서 기본 텍스처 압축 포맷을 DXT1, PVRTC, ATC, ETC2, ASTC 포맷 중 하나로 오버라이드할 수 있습니다. 기본 포맷은 ETC입니다.
GI 시스템의 입력 범위와 인코딩은 출력과 다릅니다. 표면 알베도는 감마 공간에서 부호 없는 8비트 정수 RGB고, 이미션은 선형 공간에서 16비트 부동 소수점 RGB입니다. 메타 패스를 사용한 커스텀 입력 제공에 관한 권고 사항은 메타 패스 문서를 참조하십시오.
복사 조도 출력 텍스처는 RGB9E5 공유 지수 부동 소수점 포맷(그래픽 하드웨어에서 지원하는 경우)을 사용하여 저장되거나, 범위가 5인 RGBM이 폴백(fallback)으로 사용됩니다. RGB9E5 라이트맵의 범위는 [0, 65408]입니다. RGB9E5 포맷에 대한 자세한 내용은 Khronos.org: EXT_texture_shared_exponent를 참조하십시오.
참고 항목: