HSL rendering?

23.12.2008 23:25 in grafika 3D

Rendering w HSL

Ostatnio zastnawiałem się czy w przypadku silnika 3D model HSL nie sprawdziłby się lepiej niż RGB. Przecież to czysty zysk!

  • realizacja wielu efektów graficznych w HSL jest o niebo prostsza. Zmiana kolorów (chociażby efekt sepii)?
  • można zrealizować fajne systemy cząsteczkowe wykorzystujące HSL do różnicowania poszczególnych cząsteczek (np. małe odchylenia od barwy)
  • a przede wszystkim, w HSL można bardzo tanio zrealizować HDR!

Warstwa barwy (Hue) nie potrzebuje dokładności większej niż 8 bitów. Warstwę nasycenia można zreduować z 256 do 32 kolorów bez zauważalnej straty jakości (5 bitów). Pozostałe 3 bity możemy przeznaczyć na kanał jasności, który w HDR ma kluczowe znaczenie. Możemy ewentualnie zrezygnować z kanału alfa (albo zmniejszyć jego dokładność) tym samym jeszcze zwiększając precyzję jasności.

Koszta przygotowań: niewielkie. Wszystkie tekstury trzeba przekonwertować z RGB do HSL (np. przed spakowaniem ich do VFS). Co z modelem oświetlenia? Nasz stary dobry NdotL zostaje bez zmian. Jedyna różnica jest we wpływie światła na barwę i nasycenie. Kwestia dobrania dobrego wzoru*. No i na koniec końcową scenę trzeba potraktować pixel shaderem, który przekonwertuje nam obraz z HSL do RGB. Nie jest on trywialny, fakt, ale dla dzisiejszych kart nie jest też jakimś problemem.

PS. Obrazek pochodzi z gry GRID. Od kilku dni gram w demo i mam ochotę kupić nie tylko pełną wersję, ale i jakąś wypasioną kierownicę do komputera. :P

* PS2. OK, magic works here. Trzeba by się nad tym zastanowić. Ale ponownie, wydaje mi się, że daje to większe możliwości niż banalne materialRGB * lightRGB.

Comments:

  1. Reg

    Reg:

    Ale w takiej przestrzeni kolorystycznej nie zrobisz blendingu, np. dla cząsteczek.

    28.12.2008 14:43:51

Leave comment: