Jak tworzysz treści HDR?

33

Jak ułatwić artystom tworzenie treści dla renderera HDR ? Jakie rodzaje narzędzi należy zapewnić i jakie przepływy pracy należy zmienić, przechodząc z LDR na HDR?

Pamiętaj, że nie pytam o techniczne aspekty implementacji renderera HDR, ale o najlepsze praktyki tworzenia materiałów i oświetlenia w HDR. Trochę googlowałem, ale wydaje się, że w Internecie nie ma zbyt wiele na ten temat. Czy ktoś może wskazać mi jakieś dobre zasoby na ten temat lub podzielić się swoimi doświadczeniami?

Niektóre szczególne punkty:

  • Oświetlenie - w jaki sposób artyści oświetlenia mogą wybrać jasne kolory HDR? Czy mają standardowy próbnik kolorów LDR, a następnie mnożnik? Czy mnożnik w przestrzeni gamma czy liniowej? Może zamiast mnożnika jest to logarytmiczna luminancja? Lub fizyczny poziom jasności, taki jak liczba lumenów? Skąd będą wiedzieć, jaki mnożnik / luminancja / jasność jest „poprawna” dla danego światła?
  • Materiały - w jaki sposób artyści tekstur mogą tworzyć kolorowe mapy, takie jak neony, ekrany telewizyjne, skyboksy itp.? Czy możesz namalować jeden jako zwykły obraz LDR (8 bitów na kanał) i zastosować mnożnik (lub log-luminancję itp.)? Czy istnieją przypadki, w których konieczne jest rzeczywiste malowanie obrazów HDR? Jeśli tak, jak sobie z tym poradzisz w Photoshopie (lub innym oprogramowaniu)?
Nathan Reed
źródło
1
@Aralox, nie dowiedziałem się nic o tym, jak robią to inne zespoły / firmy. Pracowaliśmy nad tym tematem w mojej firmie, ale nie mogę (jeszcze) publicznie nic na ten temat ujawnić. Mam jednak nadzieję, że w końcu będę mógł porozmawiać o naszym przepływie pracy!
Nathan Reed,
1
Naprawdę chciałbym zobaczyć, co ludzie mają do powiedzenia na temat tworzenia treści HDR bez korzystania ze źródeł zdjęć.
1
Pamiętaj, że to starożytna historia, ale tak, światła na zewnątrz były dosłownie ustawione znacznie jaśniej niż w jaskini i silnik renderujący musiał sobie z tym poradzić. Woluminy zastosowano do kontroli otoczenia i tonu. Pomysł polegał na tym, że kamień sam w sobie nie staje się HDR, to tylko kamień, a uderzające światło sprawia, że ​​jest naprawdę jasny lub ciemny w porównaniu z tym, co render uważa za szarą ekspozycję. Jestem pewien, że widziałeś wczesne HDR, gdzie „ekspozycja” dostosowuje się do tego, gdzie jest gracz; moda czasu.
Patrick Hughes
2
Mam tło fotograficzne, tylko instynktowne wezwanie, że „na zewnątrz” jest może o 4-5 f-stopów jaśniejsze niż „wewnątrz” umiarkowanie oświetlonego wejścia do jaskini.
Patrick Hughes

Odpowiedzi:

5

Myślę, że wciąż jesteśmy w jakiś sposób w „czasach jaskiniowców”, które Patrick Hugues opisuje w swoich komentarzach.

Nie chcesz szczegółów na temat implementacji renderera, ale i tak pozwolę sobie wyjaśnić: zrozumiesz dlaczego. HDR w silnikach gier polega głównie na „szerszych” wartościach renderowania (bufor ramki). Zazwyczaj zmiennoprzecinkowe 16 bitów, które może przekroczyć 1,0, zamiast 8 bitowych liczb całkowitych, które dają nam tylko 256 wartości w zakresie [0,1]. To wyjście jest następnie konwertowane na LDR za pomocą mapera tonów , dzięki czemu ekran może go wyświetlić. Dla mnie prawdziwym „twórcą HDR” byłoby ulepszenie tego mapera tonów, więc będziesz chciał dać jak najwięcej kontroli swoim artystom. Będzie zaangażowany jakiś moduł cieniujący, więc albo masz artystów technicznych, którzy mogą sobie z tym poradzić, albo na stałe go zakodujesz i ujawniasz najbardziej przydatne parametry.

Nie jestem pewien, czy koniecznie potrzebujesz 16-bitowych lampek, z wyjątkiem może stworzenia lampek emitujących „bielsze niż białe”. Ale jeśli chcesz, w dowolnym edytorze używanym do oświetlenia, potrzebujesz pewnego rodzaju próbnika kolorów lub kilku suwaków, które dają te wartości zmiennoprzecinkowe. Och, jeśli chcesz GUI, prawdopodobnie zaczniesz od wartości zmiennoprzecinkowych zwykłego tekstu w pliku.

Tekstury HDR (16 bitów na kanał) istnieją, ale nie są powszechnie używane, być może dlatego, że zajęłoby to o wiele więcej pamięci niż zwykłe tekstury LDR (8 bitów na kanał). Podejrzewam również, że istnieją większe ograniczenia sprzętowe w konsolach obecnej generacji, więc większość silników dużych gier nie przesadza z tym. Na przykład wydaje się, że nieco trudniej jest zaimportować teksturę HDR do użycia z UDK . Niemniej jednak, aby stworzyć 16-bitowe tekstury, potrzebujesz oprogramowania, które je obsługuje, takiego jak Photoshop . Są prawdopodobnie inne, ale nie wydaje się to tak częste, npjegobyła to od dawna prośba o GIMP to jest nadal w toku. Będziesz także musiał użyć 16-bitowego formatu obrazu, takiego jak PNG.

Laurent Couvidou
źródło
1
Właśnie sprawdziłem, w jaki sposób światła są edytowane w UDK. Wygląda na to, że używają klasycznego próbnika kolorów RGB z 8-bitowymi wartościami kolorów, z dodatkowym współczynnikiem „jasności”, który może przekraczać 1,0 i skaluje wszystkie trzy kolory jednocześnie.
Laurent Couvidou,
1

jak powiedział Lorancou, tak naprawdę nie tworzysz treści HDR, ponieważ generalnie są one dynamiczne do ilości światła. Ale prawdopodobnie mógłbyś to naśladować w lightmapie, która wymagałaby po prostu modyfikacji dowolnych shaderów wstępnego obliczania, aby to uwzględnić.

CobaltHex
źródło
1

Cóż, trzy lata później i właśnie napisałem wpis na blogu o tworzeniu treści HDR , więc teraz mogę odpowiedzieć na własne pytanie. :)

Podsumowując

  • Dobrym sposobem na obsługę szerokiego zakresu wartości jasności HDR jest użycie skali logarytmicznej. Fotografowie mają taką skalę, z której korzystają od dziesięcioleci, zwaną wartością ekspozycji lub EV.
  • Wykorzystanie EV w silniku / narzędziach jest przydatne, ponieważ wartości zmierzone w prawdziwym życiu za pomocą miernika punktowego fotografa mogą być wykorzystane jako dane odniesienia do skonfigurowania oświetlenia w grze. Photoshop korzysta także z EV (choć nie nazywa tego tak) w trybie 32-bitowym.
  • Selektory kolorów dla źródeł światła, materiałów emisyjnych i tak dalej mogą mieć zwykłe komponenty LDR RGB w połączeniu z komponentem EV, który skaluje ich ogólną jasność HDR. Jest to przydatne, aby zapobiec przypadkowej zmianie koloru, gdy chcesz tylko zmienić jasność lub odwrotnie.
  • Nie jest konieczne posiadanie tekstur HDR dla zwykłych map rozproszonych i lustrzanych, ale jest to przydatne w przypadku tekstur emisyjnych. Kompresja BC6 jest tutaj potrzebna, ponieważ tekstury BC1 pokazują okropne pasy i artefakty, jeśli są skalowane do wysokiej jasności (np. W przypadku neonów).
  • Zwykle nie jest konieczne malowanie tekstur emisyjnych w zmiennoprzecinkowym. Tryb 16-bitowy programu Photoshop (który jest stałym punktem) prawdopodobnie wystarcza dla tekstur emisyjnych. Jednak tryb 32-bitowy Photoshop zapewnia całkiem dobrą obsługę edycji zmiennoprzecinkowej, jeśli jest potrzebna.
Nathan Reed
źródło