Je m'intéresse beaucoup à la synthèse d'image (en gros depuis 1995) et plus particulièrement aux méthodes basées sur le lancer de rayon (depuis 1999). Au fur et à mesure de mes lectures, j'ai développé quelques petits raytracers qui me servaient à tester les algorithmes que je découvrais. Au bout de 4 ou 5 moteurs, j'ai commencé à réfléchir à un moteur suffisamment modulaire pour me permettre de continuer à pratiquer mes lectures tout en conservant la même base. Je me suis dit qu'au final, cela ne serait pas plus mal qu'il puisse s'interfacer avec des logiciels de modélisation afin d'effectuer des tests sur des scènes complexes. J'avais posé la première pierre de Carbon. Toutefois, je me suis retrouvé confronté à quelques problèmes de conception, choses qui m'ont fait remettre à plat l'architecture. Entre temps, pour éviter un conflit sur le nom, je l'ai renommé en Crbn.
Dans la grande famille des moteurs de rendu, Crbn se situe dans la branche des moteurs photoréalistes. Ce terme un peu abscons signifie simplement que les algorithmes employés reposent sur les modèles physiques de la lumière et non sur des algorithmes dont l'appréciation n'est que visuelle.
Crbn se présente sous la forme d'une bibliothèque (libcrbn) qui centralise l'intégralité du processus : lecture de scènes depuis un fichier, écriture de scènes dans un fichier, stockage des données et mécanisme de génération de l'image finale. La visualisation n'est pas incluse, elle est à la charge du logiciel qui l'utilisera. Libcrbn utilise un ensemble de modules pour donner un sens au données. Elle ne sait donc pas ce qu'est une quadrique ou un maillage, l'algorithme de Whitted ou celui nommé Metropolis Light Transport ; juste que les premiers sont des primitives géométriques et les seconds des algorithmes d'illumination.
Après, n'importe qui peut ajouter un greffons à blender, maya, 3dsmax, ou softimage pour qu'il exploite libcrbn pour effectuer le rendu des images. Actuellement il n'existe qu'un programme en ligne de commande pour lancer l'interprètation d'un fichier de scène.
Les différents types de modules sont :
- géométrie,
- algorithme d'illumination,
- projection (point de vue),
- filtre de sur-échantillonnage (1D, 2D et 3D),
- sortie de rendu (fichier image, sortie mémoire, etc.),
- matière (BxDF),
- image pour les textures