Zanir » Blog Archive » Program 22 – Horizon Mapping

Program 22 – Horizon Mapping

06.01.2005

022_Horizon_MappingHorizon 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.

zdrojové texty a program – 800kB

Pridať komentár