cinema.tex 1.9 KB

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