123456789101112131415161718192021222324252627282930313233343536373839404142 |
- \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
|