Radiance HDR (.hdr)
Standard StandardowyRadiance RGBE (HDR) to fundamentalny format o wysokiej rozpiętości tonalnej opracowany dla systemu obrazowania syntetycznego Radiance, przechowujący fotometrycznie dokładne wartości luminancji przy użyciu współdzielonego 8-bitowego wykładnika.
Inspekcja i metadane
Systemy operacyjne i analizatory plików identyfikują pliki HDR, sprawdzając początkową sekwencję bajtów binarnych:
Podpis nagłówka na poziomie bajtów (Magic Bytes)
Systemy operacyjne i analizatory plików identyfikują pliki HDR, sprawdzając początkową sekwencję bajtów binarnych:
PODPIS HEX (OFFSET 0):
23 3F 52 41 44 49 41 4E 43 45 0AREPREZENTACJA ASCII: #?RADIANCE\n
Normalizacja: Standard systemu obrazowania syntetycznego Radiance
Specyfikacja techniczna
| Architektura kontenera | Nagłówek ASCII zakończony pustą linią, po której następuje ciąg rozdzielczości i binarne linie skanowania RLE |
| Kompresja | Adaptacyjne kodowanie długości serii (RLE) stosowane dla każdej linii skanowania kanału |
| Kolejność bajtów (Endianness) | Big-Endian / Kolejność bajtów sieciowych |
| Przestrzenie kolorów | Liniowy RGB Rec.709 ze współrzędnymi chromatyczności CIE |
| Kanały i struktura | RGBE: Czerwony, Zielony, Niebieski (8-bitowe mantysy) + współdzielony 8-bitowy wykładnik |
| Maks. wymiary | Praktycznie nieograniczone (32-bitowe ciągi znaków o niesieciowej rozdzielczości) |
| Przezroczystość | Brak (fizyczne pomiary luminancji promienistej) |
| Streaming i progresywne ładowanie | Sekwencyjne strumieniowanie linia po linii |
Techniczna macierz porównawcza: HDR a konkurencja
| Atrybut techniczny | HDR (Bieżący) | EXR | TIFF | JPEG |
|---|---|---|---|---|
| Kodowanie pikseli | 32-bit RGBE (współdzielony 8-bitowy wykładnik) | 16-bit half / 32-bit float na kanał | Całkowite 8/16-bit lub 32-bit float | 8-bitowa liczba całkowita kodowana gammą |
| Główne zastosowanie | Oświetlenie środowiskowe 360 stopni (IBL) | Kompozycja wieloprzebiegowa VFX | Fotografia i prepress | Standardowa grafika internetowa |
| Zakres rozpiętości tonalnej | 76 rzędów wielkości (10^-38 do 10^38) | Praktycznie nieskończony zakres zmiennoprzecinkowy | Zmienia się w zależności od głębi bitowej | Ograniczony zakres SDR 8-bit |
| Obsługiwane kanały | Tylko RGB | Nieograniczone dowolne kanały | Wiele dowolnych kanałów | RGB / CMYK |
Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego
Obraz wyświetla poziome paski na całej szerokości klatki.
Główna przyczyna: Uszkodzony bajt licznika długości serii w dekompresji RLE linii skanowania.
Odzyskiwanie: Zrekonstruuj uszkodzone znaczniki linii skanowania za pomocą narzędzia File2File HDR Repair lub przekonwertuj do formatu EXR.
Analiza bezpieczeństwa i wektory ataku na parser
Dekodery Radiance HDR często analizują linie nagłówka ASCII za pomocą nieograniczonych procedur łańcuchowych, co może wywołać przepełnienie bufora stosu.
Znane wektory ataku
- Nieograniczone wywołania sprintf/sscanf podczas czytania nagłówków ciągów rozdzielczości ('-Y %d +X %d').
- Zapis spoza bufora sterty podczas dekodowania wadliwej linii skanowania RLE.
- Przepełnienie liczbowe podczas alokacji docelowych 32-bitowych buforów zmiennoprzecinkowych.
Najlepsze praktyki obronne: Zweryfikuj długość nagłówka ASCII i wymiary linii skanowania przed alokacją buforów obrazu.
Pochodzenie historyczne i kamienie milowe
Główne zalety
- Kompaktowe zajętość pamięci 32 bity na piksel przy jednoczesnym obejmowaniu 76 rzędów wielkości fizycznej luminancji światła.
- Uniwersalna obsługa w pakietach renderowania 3D (Blender, Unreal Engine, Unity, Cinema 4D) dla 360-stopniowych map środowiskowych.
- Prosta, solidna struktura pliku łatwa do zaimplementowania na wszystkich platformach programowych.
Ograniczenia techniczne i wady
- W skrajnie ciemnych obszarach może występować tzw. bandowanie kwantyzacji z powodu kodowania za pomocą współdzielonego 8-bitowego wykładnika.
- Kanały RGB nie mogą przechowywać liczb ujemnych ani dowolnych warstw wieloetapowych.
- W większości wyparty przez OpenEXR w produkcji efektów wizualnych składających się z wielu warstw.
Ciekawe informacje techniczne
- Każdy plik Radiance HDR zaczyna się od nagłówka tekstowego '#?RADIANCE' lub '#?RGBE'.
- Format został stworzony do symulacji fizycznego oświetlenia architektonicznego w projektowaniu budynków przed ich wzniesieniem.
- Kultowy artykuł Paula Debeveca z 1997 roku na konferencji SIGGRAPH 'Recovering High Dynamic Range Radiance Maps from Photographs' wykorzystał ten format do zrewolucjonizowania oświetlenia CGI.
Często zadawane pytania techniczne
Do czego służy plik HDRI w grafice 3D?
Pliki HDRI (.hdr) są używane jako panoramiczne mapy środowiskowe 360 stopni w celu zapewnienia fotorealistycznego oświetlenia, cieni i odbić w świecie rzeczywistym na obiektach 3D.
Jak działa 32-bitowe kodowanie RGBE?
Zamiast przechowywać trzy oddzielne liczby zmiennoprzecinkowe, RGBE używa po 8 bitów dla koloru czerwonego, zielonego i niebieskiego oraz wspólnego 8-bitowego wykładnika, mieszcząc pełną rozpiętość tonalną HDR w zaledwie 4 bajtach na piksel.
Czy mogę przekonwertować plik HDR do formatu JPG?
Tak. File2File.app potrafi przeprowadzić mapowanie tonów i przekonwertować 32-bitowe pliki Radiance HDR na standardowe obrazy JPG lub PNG bezpośrednio w Twojej przeglądarce.