- Créer la structure du projet
- Mettre en place l'environnement de développement
- Créer les classes de base (Point, Vecteur)
- Implémenter les opérations mathématiques vectorielles de base
- Implémenter la classe Scene
- background
- foreground
- coordoné des objet on going
- Implémenter la classe Camera
- projection plan
- distance par rapport au plan
- dim (xy) = resolution
- Créer la classe Image pour le stockage du résultat
- done ?
- Implémenter les structures de couleur (RGB) ? on going
- Implémenter la classe abstraite Objet
- Implémenter la classe Sphere on going
- Calcul d'intersection rayon-sphère on going
- Calcul de la normale au point d'intersection
- Implémenter la classe Plan
- Implémenter la classe Triangle
- Calcul d'intersection rayon-triangle
- Gestion des coordonnées barycentriques
- Implémenter la fonction principale lancerDeRayons()
- Implémenter la génération des rayons primaires
- Implémenter la recherche d'intersection la plus proche on going
- Gérer la couleur de fond (background)
- Implémenter la classe Source Lumineuse
- Implémenter le calcul de la lumière diffuse (loi de Lambert)
- Ajouter la gestion des rayons d'ombre on going
- Implémenter la lumière ambiante basique on going
- Implémenter le calcul du rayon réfléchi
- Formule de réflexion: R = I - 2(N·I)N
- Gérer la récursivité des rayons réfléchis
- Implémenter les coefficients de réflexion des matériaux
- Ajouter la limite de profondeur de récursion
- Implémenter le calcul du rayon réfracté (loi de Snell)
- Gérer les indices de réfraction des matériaux
- Implémenter la gestion de la réflexion totale
- Gérer la récursivité des rayons transmis
- Créer la classe Matériau
- Implémenter les propriétés de surface (diffusion, réflexion, transmission)
- Ajouter les indices de réfraction
- Gérer les coefficients de Fresnel
- Implémenter les boîtes englobantes (Bounding Boxes)
- Créer la structure de voxels
- Implémenter l'algorithme de parcours des voxels
- Mettre en place le multi-threading
- Optimiser les calculs d'intersection
- Implémenter la projection préalable pour les rayons primaires
- Ajouter le support pour les textures
- Implémenter l'antialiasing
- Ajouter la profondeur de champ
- Implémenter les effets de caustique basiques
(optional)
- Créer une interface pour charger les scènes
- Ajouter les contrôles de caméra
- Implémenter la prévisualisation en temps réel
- Ajouter les options de rendu (résolution, profondeur de récursion)
- Documenter l'architecture du système
- Créer des guides d'utilisation
- Documenter les formules mathématiques utilisées
- Créer des exemples de scènes