Oświetlenie HDR (Direct3D 9)
Oświetlenie w świecie rzeczywistym charakteryzuje się bardzo wysokim zakresem dynamicznym (HDR) wartości luminancji. Rzeczywisty świat ma około 10 rzędów zakresu dynamicznego (DR) dla wartości luminancji rozłożonych od ciemności do jasności. Z drugiej strony ekran komputera ma bardzo ograniczoną gamę kolorów (lub zakres wartości luminancji): około dwóch rzędów zakresu dynamicznego. Wyzwaniem do produkcji renderowanych obrazów HDR jest mapowanie rzeczywistych wartości HDR na ograniczoną gamę ekranu komputera.
Mapowanie tonów jest techniką używaną przez DirectX do mapowania informacji HDR na bardziej ograniczony zakres. Mapowanie tonów zastosowane do renderowania CGI może znacznie poprawić ilość szczegółów oświetlenia w renderowaniu, umożliwiając wyświetlanie szczegółów w najciemniejszych obszarach i zapewniając kontrast w obszarach, które są tak jasne, że wydają się przepalone. Wynikowe sceny są renderowane z znacznie bardziej widocznymi szczegółami oświetlenia.
HDRLighting Sample to przykład zestawu SDK, który demonstruje oświetlenie HDR.
Mapowanie tonów
Mapowanie tonów zwykle symuluje zjawiska optyczne, których nie można osiągnąć z powodu zakresu dynamiki monitora. Przykładami tego są odblaski lub światło rozproszone (które są głównie właściwościami obiektywów), przesunięcie barwy na niebiesko, które występuje w ludzkim oku w warunkach słabego oświetlenia, oraz inne adaptacje wynikające z biochemii oka. Gdyby zakres dynamiki wyświetlacza był wystarczająco duży, mapowanie tonów nie byłoby konieczne, z wyjątkiem zapewnienia efektów artystycznych lub niektórych właściwości obiektywu aparatu, albo urządzenia z ładunkiem sprzężonym (CCD).
Mapowanie tonów dzieli zakres wartości jasności w scenie na kilka stref. Każda strefa obejmuje zakres wartości luminance.
HDR używa następujących terminów:
- Strefa — zakres wartości luminance
- Środkowy szary — środkowy obszar jasności sceny
- Zakres dynamiczny — stosunek najwyższej luminacji sceny do najniższej luminacji sceny
- Klucz - subiektywny pomiar oświetlenia sceny: różni się od jasnego przez umiarkowane do ciemnego
Aby obliczyć lumincję na podstawie wartości RGB, użyj następującego polecenia:
L = 0.27R + 0.67G + 0.06B;
Średnia logarytmiczna jasność jest przydatnym przybliżeniem kluczowej wartości sceny. Ogólne równanie wygląda następująco:
Lw = exp[ 1 / N( sum[ log( delta + Lw( x, y ) ) ] ]
Gdzie:
- Lw — logarytmiczna średnia luminancja
- N — liczba pikseli na obrazie
- delta — mały czynnik, aby uniknąć problemów z czarnymi pikselami
- Lw( x, y ) - luminancja w przestrzeni światowej dla piksela ( x, y )
Aby zamapować tę wartość na wartość środkowo-szarą, oto operator skalowania jasności:
L( x, y ) = a * Lw( x, y ) / Lw
Gdzie:
- L( x, y ) — skalowana lumincja dla pikseli ( x, y )
- a — wartość klucza obrazu po zastosowaniu skalowania
I wreszcie, oto prosty operator mapowania tonów do kompresji wysokich jasności.
Ld( x, y ) = L( x, y ) / ( 1 + L( x, y ) )
Gdzie:
- Ld( x, y ) — skompresowana i skalowana lumincja dla pikseli ( x, y )
- a — wartość klucza obrazu po zastosowaniu skalowania
Ten operator skaluje wysoką lumincję o 1/L i niską lumincję o 1. Aby uzyskać więcej informacji, zobacz następujący dokument.
Reinhard, Erik, Mike Stark, Peter Shirley i James Ferwerda. "Fotograficzna reprodukcja tonów dla obrazów cyfrowych". ACM Transactions on Graphics (TOG), Materiały z 29. Dorocznej Konferencji na temat Grafiki Komputerowej i Technik Interaktywnych (SIGGRAPH), str. 267-276. Nowy Jork, NY: ACM Press, 2002.
Tematy pokrewne