Normaalikartoitus (engl. normal mapping, myös engl. Dot3 bump mapping) on kolmiulotteisessa grafiikassa renderöintiin käytettävä tekniikka, jossa lopputuloksena tuotettavaan kuvaan saadaan lisää yksityiskohtia ja kaarevuutta ilman suurta polygonien määrän lisäystä.
Menetelmässä normaalivektorit lasketaan ja tallennetaan etukäteen korkeamman tarkkuuden polygonimallista ja ajonaikaisesti (esimerkiksi videopelissä) tallennettua tietoa käytetään valaistukseen ja varjostukseen pienemmän polygonimäärän mallin kanssa. Menetelmällä voidaan saada todentuntuisempi ulkoasu vähemmällä laskentamäärällä.
Normaalit tallennetaan tekstuurin kaltaiseen tiedostoon, jossa arvot ovat RGB-arvojen sijaan normaalien XYZ-koordinaatteja.[1]
James F. Blinn kuvasi normaalien käyttöä pintarakenteen epätasaisuuden esittämiseen tasaiselle geometrialle artikkelissa Simulation of Wrinkled Surfaces vuonna 1978.[2][3] Blinnin tekniikkaan on viitattu termillä bump mapping ja Robert L. Cookin myöhempään tekniikkaan artikkelissa Shade trees (1984) on viitattu nimellä displacement mapping, joka esiteltiin laajennuksena bump mapping -tekniikalle.[3][4]
Normaalikartoituksen varhaisia esittelyjä on ollut SIGGRAPH '96 tapahtumassa.[5] Tekniikkaa on tämän jälkeen kehitetty eteenpäin korkean tason yksityiskohtien esittämiseksi yksinkertaistetun mallin päällä.[6][7]
Yksi varhaisista menetelmää käyttäneistä peleistä on id Softwaren Doom 3 (id Tech 4-pelimoottorissa).[8] Tekniikkaa on kehitetty edelleen pelin seuraajassa DOOM.[9]
Tekniikalle on erilaisia toteutustapoja.[10] Muita samankaltaisia tekniikoita ovat bump mapping, height mapping ja displacement mapping. Tekniikoissa on eroja ja esimerkiksi bump map sisältää vain korkeustietoa ilman kulmaa kun taas normaalikartoitus sisältää kulman.[11]