|
@@ -0,0 +1,41 @@
|
|
|
+\section{Fonctionnement}
|
|
|
+
|
|
|
+Le cinéma 3D est fait pour fonctionner dans un contexte de réalité virtuelle, la
|
|
|
+latence d'affichage a donc été un critère crucial pour pouvoir fournir une bonne
|
|
|
+expérience à l'utilisateur. Afin de la minimizer, l'ensemble de la partie rendu
|
|
|
+fonctionne dans le module manipulant la sortie vidéo OpenGL. Cela permet
|
|
|
+d'effectuer le rendu final de la scène sur la surface de rendu au lieu de mettre
|
|
|
+l'image rendue dans la file d'image à afficher puis attendre qu'elle soit
|
|
|
+sélectionnée.
|
|
|
+
|
|
|
+Ce module de rendu est un module de type «video_output» s'occupant des détails
|
|
|
+liés à opengl, qu'on raccourcira ici pour «vout». Le code qui nous concerne sera
|
|
|
+principalement situé dans le fichier
|
|
|
+\texttt{modules/video_output/opengl/vout_helper.c}.
|
|
|
+
|
|
|
+\section{Shaders}
|
|
|
+
|
|
|
+Étant donné que le rendu s'effectue via OpenGL, le pipeline de rendu n'est pas
|
|
|
+un pipeline fixe et il faut alors écrire au moins deux programmes spéciaux pour
|
|
|
+correctement le définir: un vertex shader et un fragment shader.
|
|
|
+
|
|
|
+% TODO; expliquer fonctionnement du pipeline
|
|
|
+
|
|
|
+Le vertex shader s'exécute sur chaque vertex et permet de définir de nouvelles
|
|
|
+valeurs qui pourront être réutilisées en entrée par les fragments shaders. En
|
|
|
+particulier, les transformations de l'espace de coordonnées objet à l'espace de
|
|
|
+coordonnées monde s'effectue dans ce programme.
|
|
|
+
|
|
|
+Le fragment shader s'exécute pour chaque pixel à afficher et peut définir des
|
|
|
+règles d'interpolation sur les paramètres qu'il récupère depuis le vertex
|
|
|
+shader.
|
|
|
+
|
|
|
+Dans le fichier \texttt{modules/video_output/opengl/fragment_shader.c}, on peut
|
|
|
+retrouver le fragment shader.
|
|
|
+
|
|
|
+% TODO: expliquer chargement de texture comme paramètre pour le fragment shader
|
|
|
+% TODO: expliquer Blinn-Phong
|
|
|
+% TODO: expliquer chargement des textures et modèles
|
|
|
+% TODO: expliquer débogage (normal, position, apitrace, etc)
|
|
|
+% TODO: expliquer travail effectué au début
|
|
|
+% TODO: expliquer fonctionnement HMD
|