Etant censé développer un moteur utilisant le cel-shading (au lieu de trainer sur le net, c´est du joli, quel programmeur je fais, vraiment), je vais essayé de t´éclairer un peu (même si je ne n´en suis pas encore au subtilité du rendu, on verra ça dans plusieurs mois.
Le cel-shading, ou aussi appelé rendu cartoon, est caractérisé par : le marquage des contours des objets (en noir en général), des textures un peu plus flashy/pastel, avec un éclairage bien aprticulier comme tu le dis très bien (éclairage très abrupt, zones d´ombres très contrastées avec les zones éclairées).
Pour le contour des objets, on a plusieurs méthodes :
- utiliser le stencil-buffer, ce qui est pas terrible car ça crée des contours parfaitement uniformes en épaiseur
- utiliser un algo qui te retourne la silhouette de l´objet (bien sur selon la caméra par laquelle est vu l´objet, et aussi selon l´orientation de ce dernier), il ne reste plus alors qu´à tracer cette silhouette en noir avec des traits d´épaisseur variables (un exemple de l´utilisation du bruit Perlin (oui, le même Perlin que celui du Marble Perlin de 3dsMax) en une dimension, idéal pour donner un rendu "fait main" à un trait ou une courbe)
- utliser le cube-mapping, je ne t´explique pas pourquoi car moi-même je n´ai pas encore tout compris (j´ai une doc made in nVIDIA là dessus, faudra que je m´y replonge)
Pour l´éclairage, c´est plus simple. Il suffit de calculer la valeur de luminosité de chaque vertex, et si celle-ci dépasse un certain seuil, on donne au vertex la luminosité "éclairé", sinon on lui donne la luminosité "ombre" (d´où le coté abrupt et la séparation bien visible). Là aussi, y´a possibilité de le faire faire par la carte graphique, mais là encore je n´ai pas potassé le sujet, mais le principe est là.
Je ne peut pas t´en dire beaucoup plus, mais nVIDIA (http://www.nvidia.com) a pondu pas mal de démos montrant du cel-shading en action, et aussi pas mal de doc montrant comment le faire faire au GeForce, donc si tu veux plus d´infos, en anglais, tu sais où aller.