Program 22 – Horizon Mapping
06.01.2005
Horizon Mapping sa niekedy nazýva aj self shadowing. Umožňuje zobraziť tiene po pixeli, teda vykresliť tiene na textúre bez toho aby sa počítala nejaká geometria. Tieň sa vytvára na základe porovnania uhlu k svetlu (vertikálny uhol) od daného pixela (výška svetla) s uhlom horizontu. Ak je svetlo nad horizontom tak je uhol k svetlu väčší ako uhol horizontu. V tieni je uhol menší. Hraničný uhol čiže uhol horizontu je pre každý pixel iný a je iný aj pre každý azimut (horizontálny uhol). Tento hraničný uhol je možné predpočítať a uložiť do 2D mapy. Kedže uhol horizontu sa mení s azimutom, tak je nutné urobiť viac máp. Ja používam delenie 45 stupňou. Čiže používam 8 smerov (N, NE, E, …), pre kažný smer mám jednú 2D mapu. Do jednej RGBA textúry je ich možné uložiť 4. Tak 8 máp uložím do 2 RGBA textúr. Je možné použiť aj 3D textúru. Pri používaní sa použije lineárna interpolácia medzi dvomi najbližšími azimutmi (pre uhol 15 sa použije 0.33 s N a 0.66 s NE horizon mapy). Vycházala som s tohto článku.
Program výžaduje pixel shader 1.1. Používa ps 1.4.