Une explication d´un gars que j´avais vu sur un forum :
Le principe de base de de calculer le produit scalaire entre la normale a ta surface et la direction de la lumiere. Et d´envoyer le resultat dans un filtre " step" genre: valeur entre 0.8 et 1 ( les deux vecteurs sont proches d´etre colineaire) ==> contribution de la lumiere = 1. Entre 0 et 0.2 ( vecteurs quasiement perpeticulaire) ==> contribution de la lumiere = 0 ( zone ombree). Sinon prendre couleur ( texture normal)
Ca c´est un model hyper simplifie, en fait tu prendra deja d´une le vecteur " half-angle" pour le produit scalaire, et tu utilisera une fonction plus evolue pour calculer la silouhette de ton model.