top of page
post-process.gif

Rasterizer

Moteur de rendu logiciel

  • GitHub-Symbol_edited

Contexte du projet

Le projet Rasterizer a été réalisé dans le cadre de mes études de Game Programming à ISART Digital. Il s'agit d'un moteur de rendu full-CPU que j'ai développé durant  ma première année, seul, pendant un peu plus d'un mois. Étant un grand fan de programmation rendu, il s'agit du projet sur lequel j'ai appris le plus de choses, sur lequel j'ai été le plus investi.

Gouraud et Phong shading

Depth test et blending avec textures transparentes

La rastérisation, quésaco ?

Avant d'aborder la définition de rastérisation, établissons ce qu'est un moteur de rendu. Un moteur de rendu est un composant logiciel permettant d'afficher des objets. Il ne s'occupe que de l'affichage. Dans le contexte d'un Rasterizer il s'agit de modèles 3D.

La rastérisation repose surtout sur l'affichage de triangles. Chaque modèle est constitué de triangles qui sont affichés l'un à la suite des autres.

Mais encore ?

Lors de l'affichage de ces triangles, nous avons un certain nombre d'étapes à mettre en place pour avoir un résultat satisfaisant, comme le Depth Test, le Lighting et le Texturing.

Le Depth Test consiste à trier les triangles lors de l'affichage. Le Lighting permet de simuler des effets de lumière sur un objet. Et le Texturing cherche à rendre des objets plus détaillés à partir d'image.

Durant ce projet j'ai pu développer toutes ces technologies et les pousser à leur limite. En développant par exemple tous les types de texture filtering.

Je me suis également amuser à développer des effets de post-process basique comme le MSAA, le Blur et le Bloom.

Lighting coloré du Lapin de Stanford

Filtrage des textures

post-process_edited.jpg

MSAA, Box blur et Gaussian blur

Mon expérience

J'ai tout simplement adoré ce projet d'étude. J'ai pu apprendre énormément de choses, aussi bien au niveau du rendu qu'en programmation générale et dans le développement applicatif.

Je me suis énormément amusé à voir mon moteur évolué: du simple afficheur de triangles jusqu'au programme complexe capable de quasiment tout.

Pour aller plus loin

N'hésitez surtout pas à jeter un œil au repository de mon projet ici !

Vous y trouverez des informations plus détaillées sur les différentes composantes de la rastérisation. Ainsi que des références utiles pour en comprendre les fondements.

bottom of page