Skip to content

massile/raytracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Moteur de rendu (raytracing)

Un moteur de rendu photoréaliste à partir de zéro.

Video associée:

(cliquer sur l'image ci-dessous)

Quelques nombres

  • Le calcul de l'intensité d'un pixel est massivement parallèle. De ce fait, pour des raisons de performance, Nvidia CUDA est utilisé pour lancer le programme sur le GPU.

  • L'image est subdivisée en blocs de 8x8px. Et un thread est lancé sur le GPU pour chaque pixel ! (720 000 threads au total)

  • Chaque pixel reçoit au total 400 rayons lumineux. (ce qui donne un total de 288 000 000 rayons à calculer)

  • Chaque rayon peut être réfléchi au maximum 45 fois.

Documentation:

Génération d'une image:

Pour simplifier le travail, le format d'image utilisé est le PPM. L'implémentation pour écrire ce fichier se trouve ici. C'est un format d'image plutôt simple à gérer (cf wikipédia)

Une classe abstraite Image a été créée afin de pouvoir gérer d'autres formats d'image à l'avenir.

Objets mathématiques de base:

Comme le ray tracing repose sur l'émission de rayons lumineux, il nous faut un moyen d'en représenter un.

Un rayon peut être modélisé par: - un point: qui donne l'origine de l'émission du rayon - un vecteur: qui donne la direction de propagation du rayon

Vecteurs

[TODO]

[TODO]

About

Raytracing engine from scratch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published