Radiance HDR 이미지 (.hdr)
Radiance 표준Radiance RGBE (HDR)는 Radiance 합성 이미징 시스템을 위해 개발된 기초적인 고다이나믹 레인지(HDR) 포맷으로, 공유 8비트 지수를 사용하여 측광학적으로 정확한 휘도 값을 저장합니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 HDR 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 HDR 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
23 3F 52 41 44 49 41 4E 43 45 0AASCII 표현: #?RADIANCE\n
표준화: Radiance Synthetic Imaging System Standard
기술 사양
| 컨테이너 아키텍처 | ASCII header ending with empty line followed by resolution string and binary RLE scanlines |
| 압축 | Adaptive adaptive run-length encoding (RLE) applied per-channel scanline |
| 바이트 엔디안 | Big-Endian / Network byte order |
| 색 공간 | Linear Rec.709 RGB with CIE chromaticity coordinates |
| 채널 및 구조 | RGBE: Red, Green, Blue (8-bit mantissas) + shared 8-bit Exponent |
| 최대 크기 | Practically unlimited (32-bit unsigned resolution strings) |
| 투명도 | None (physical radiant luminance measurements) |
| 스트리밍 및 프로그레시브 | Sequential scanline-by-scanline streaming playback |
기술 비교 매트릭스: HDR 대 경쟁사
| 기술적 속성 | HDR (현재) | EXR | TIFF | JPEG |
|---|---|---|---|---|
| 픽셀 인코딩 | 32비트 RGBE (공유 8비트 지수) | 채널당 16비트 half / 32비트 float | 정수 8/16비트 또는 32비트 float | 8비트 감마 인코딩 정수 |
| 주요 사용 사례 | 360도 환경 조명 (IBL) | VFX 멀티패스 합성 | 사진 및 프리프레스 | 표준 웹 그래픽 |
| 다이나믹 레인지 범위 | 76 orders of magnitude (10^-38 ~ 10^38) | 사실상 무한한 부동소수점 범위 | 비트 심도에 따라 다름 | 제한된 8비트 SDR 범위 |
| 지원 채널 | RGB 전용 | 제한 없는 임의 채널 | 다수의 임의 채널 | RGB / CMYK |
일반적인 손상 모드 및 헥스 복구 가이드
이미지 전체 프레임 너비에 걸쳐 수평 스트릭 밴드가 표시됩니다.
근본 원인: 스캔라인 RLE 압축 해제 중 손상된 런레인지 카운트 바이트.
복구: File2File HDR Repair를 사용하여 손상된 스캔라인 마커를 복구하거나 EXR로 변환합니다.
보안 분석 및 파서 공격 벡터
Radiance HDR 디코더는 종종 스택 버퍼 오버플로우를 유발할 수 있는 제한 없는 문자열 루틴을 사용하여 ASCII 헤더 라인을 파싱합니다.
알려진 공격 벡터
- 해상도 문자열 헤더('-Y %d +X %d')를 읽을 때 제한 없는 sprintf/sscanf 호출.
- 형식이 잘못된 RLE 스캔라인 디코딩 중 힙 범위를 벗어난 쓰기.
- 대상 32비트 부동소수점 버퍼를 할당할 때의 정수 오버플로우.
방어적 모범 사례:
역사적 배경 및 주요 이력
주요 장점
- 76자릿수의 물리적 광휘도 범위를 아우르면서도 픽셀당 32비트의 컴팩트한 메모리 용량을 제공합니다.
- 360도 환경 맵을 위해 3D 렌더링 패키지(Blender, Unreal Engine, Unity, Cinema 4D) 전반에서 범용적으로 지원됩니다.
- 모든 소프트웨어 플랫폼에서 쉽게 구현할 수 있는 단순하고 견고한 파일 구조를 가지고 있습니다.
기술적 제한 사항 및 단점
- 공유 8비트 지수 인코딩으로 인해 극도로 어두운 영역에서 양자화 밴딩 현상이 발생할 수 있습니다.
- RGB 채널은 음수나 임의의 멀티패스 레이어를 저장할 수 없습니다.
- 멀티패스 시각효과(VFX) 제작 분야에서는 OpenEXR로 대체된 경우가 많습니다.
흥미로운 기술적 상식
- 모든 Radiance HDR 파일은 '#?RADIANCE' 또는 '#?RGBE' 텍스트 헤더로 시작합니다.
- 이 포맷은 건물이 지어지기 전에 건축 설계에서 물리적 건축 조명을 시뮬레이션하기 위해 만들어졌습니다.
- 폴 데베벡의 상징적인 1997년 SIGGRAPH 논문 '사진으로부터 고다이나믹 레인지 레이디언스 맵 복구(Recovering High Dynamic Range Radiance Maps from Photographs)'는 이 포맷을 사용하여 CGI 조명을 혁신했습니다.
자주 묻는 기술 질문
3D에서 HDRI 파일은 어떤 용도로 사용되나요?
HDRI(.hdr) 파일은 3D 객체에 포토리얼리스틱한 현실 세계의 조명, 그림자, 반사를 제공하기 위한 360도 파노라마 환경 맵으로 사용됩니다.
RGBE 32비트 인코딩은 어떻게 작동하나요?
RGBE는 세 개의 분리된 부동소수점 숫자를 저장하는 대신 빨강, 초록, 파랑에 각각 8비트를 사용하고, 공유되는 8비트 지수(exponent)를 더해 전체 HDR 다이나믹 레인지를 픽셀당 단 4바이트에 담습니다.
HDR을 JPG로 변환할 수 있나요?
네. File2File.app을 사용하면 브라우저에서 직접 32비트 Radiance HDR 파일을 톤맵핑하여 표준 JPG 또는 PNG 이미지로 변환할 수 있습니다.