Normal mapping
# Normal mapping

Nella grafica 3D, il normal mapping, o "Dot3 bump mapping", è una tecnica usata per simulare la complessità del rilievo di superfici senza doverle modellare in dettaglio. Un normal map è generalmente una immagine RGB generata per proiezione da un oggetto dettagliato, che si fa corrispondere alle coordinate x,y,z di una superficie normale (assimilabile al suo piano tangente) meno dettagliata che rappresenta lo stesso oggetto. Questa tecnica permette di migliorare l'aspetto e i dettagli di un modello poligonale semplice, tramite la creazione di un normal map da un modello poligonale dettagliato. Nei videogiochi e nelle applicazioni di grafica 3D realistica in real-time è utilizzata per migliorare l'aspetto di oggetti senza perdere in prestazioni di rendering utilizzando mesh low poly.

## Storia

L'idea di attingere a dettagli geometrici per creare un modello poligonale complesso è stata introdotta nel "Fitting Smooth Surface to Dense Polygon Meshes" (letteralmente "Montaggio di Superficie Levigata su Dense Maglie Poligonali") da Krishnamurthy e Levoy, durante il SIGGRAPH del 1996, dove questo approccio venne usato per creare il displacement mapping su curve NURBS. Nel 1998, vennero presentati due articoli che contenevano l'idea di trasferire, tramite normal mapping, dettagli da maglie di modelli poligonali complessi a modelli composti da pochi poligoni: articoli accademici come "Appearance Preserving Simplification" di Jonathan David Cohen (SIGGRAPH 1998), e "A general method for preserving attribute values on simplified meshes" di Paolo Cignoni (IEEE Visualization 1998).

Il primo ha presentato un particolare algoritmo di semplificazione vincolata, che durante il processo di semplificazione tiene traccia di come i dettagli che vengono perduti possano essere mappati sulla maglia semplificata. Il secondo ha presentato un approccio più semplice: si disaccoppia la maglia ad alta concentrazione poligonale da quella a bassa concentrazione poligonale e si permette la ricreazione dei dettagli persi in modo da non dipendere dal modo in cui il modello a bassa concentrazione poligonale è stato creato. Quest'ultimo approccio (con qualche piccola variazione) è ancora utilizzato dalla maggior parte degli strumenti attualmente disponibili.

## Storia del Normal mapping nei videogiochi

Normal mapping interattivi erano possibili, almeno in origine, solo su PixelFlow, una macchina di rendering parallelo costruita dall'Università della Carolina del Nord a Chapel Hill. Fu successivamente possibile eseguire il normal mapping su workstation di fascia alta della SGI usando rendering multi-pass e operazioni di framebuffer, o su Hardware PC di fascia bassa, con qualche trucco legato all'uso di texture palettizzate. Ad ogni modo, con l'avvento degli shader nei personal computer e nelle console da videogiochi, il normal mapping si è diffuso nei software proprietari di tipo commerciale, utilizzati da aziende creatrici di videogames, a partire dal tardo 2003 e negli anni successivi in giochi open source. La popolarità del normal mapping per rendering in tempo reale è dovuta all'ottimo rapporto tra qualità e complessità computazionale, a dispetto di altri metodi di produzione simili. La sua efficienza è stata resa possibile, in gran parte, dallo scaling dei dettagli in base alla distanza degli oggetti, una tecnica che permette di ridurre selettivamente i dettagli di un normal map di una data texture: questo significa che le superfici più lontane richiederanno simulazioni di illuminazione meno complesse.

Il normal mapping di base può essere implementato in ogni hardware che supporti texture pallettizzate. La prima console di gioco che ha sperimentato il normal mapping è stata il Sega Dreamcast. Comunque, l'Xbox di Microsoft è stata la prima console ad usare largamente l'effetto in videogiochi. In quella generazione di console solo la PlayStation 2 di Sony soffrì la mancanza del supporto integrato al normal mapping. Molti giochi per Xbox 360 e PlayStation 3 si basano in gran parte sul normal mapping e si sta diffondendo l'implementazione del parallax mapping. Il Nintendo 3DS è una console portatile in cui è stato mostrato l'utilizzo di normal mapping, come dimostrato da Resident Evil: Revelations e Metal Gear Solid 3: Snake Eater, in edizione portatile sulla console Nintendo.

