Dans cette nouvelle série de post, nous explorerons et écrirons un ray-tracer en utilisant C++. Nous n’utiliserons aucunes librairies outre et profiterons donc de cette expérience afin de réviser quelques concepts. La grande partie de ces articles se baseront sur la série “Ray Tracing in One Weekend” par Dr. Peter Shirley, qui se veut encore aujourd’hui comme l’une des meilleures portes d’entrées vers le monde du rendering offline.

Offline Rendering:

On nomme offline rendering, le processus de créer une image sans prendre en consédiration l’aspect de temps-réel, la plupart des films à la Pixar utilise cette grande famille de rendering, dans lequel se cache une panoplie d’algorithme et de technique permettant la création d’image de synthèse.

Realtime Rendering:

Il s’agit des algorithmes permettant la création d’image en temps -réel, utilisé notamment dans l’industrie du jeux vidéos, et des applications temps réel. L’un des algorithmes les plus populaire reste la rasterization, sujet dont nous pourrons explorer les fondements plus tard.

Ce dont nous avons besoin

  • Un compilateur C++
  • Un outil pour visualiser les fichiers .ppm

Cette série se veut une approche clef en main sans tomber dans la complexité ou la rapidité, nous n’utiliserons donc pas le GPU pour permettre une éxécution plus rapide, et nous nous concentrons seulement du coté du CPU.

J’utiliserais Visual Studio, mais sachez que toutes autres plateforme fera l’affaire.

Création d’une simple image en .PPM

Le format .PPM est rien d’autre qu’une autre manière de permettre à l’ordinateur de traiter de l’informations et afficher une image. Une image est simplement un allignement de pixel en 2D. Plusieurs formats sont disponibles et pourraient être utilisés, le point positif du .PPM est sa grande flexibilité et sa facilité de création et de modification.

Exemple d’un fichier .PPM

Pour l’exemple, j’ai simplement créer un petit programme C++ créant une image noire de 10px par 10px, pour un total de 100 lignes dans le fichier PPM.

La première ligne du fichier comprend l’identifieur du fichier PPM, dans notre cas P3, la ligne suivante représente le nombre de pixel en width et height de l’image. Puis nous définissons la valeur maximale de la composante de couleur, dans notre cas, chacun des pixel aura une valeur entre 0 et 255 pour les channels de rgb.

Pour mieux comprendre le fonctionnement du fichier, vous pouvez simplement ouvrir l’image en utilisant l’outil de votre choix (GIMP fonctionne très bien). J’utilise OpenSeeIt, qui est également gratuit sur Windows, sur Mac, le viewer permet d’ouvrir directement les fichiers .PPM. À la gauche, ouvrez le contenu du fichier .PPM et amuser à modifier les pixels.

Quelques points:

  • Les pixels sont écrit de gauche a droite sur la ligne du dessus. Puis passe ensuite à la deuxième ligne, etc…
  • Pour le moment, il s’agit simplement d’une image 10×10.
  • Si nous modifions la 11ème entrée, nous affectons en effet le premier pixel de la deuxième ligne.

Créons une simple image 10px par 10px.

Modifions le code source.

Leave a Reply

Your email address will not be published. Required fields are marked *