v2.11.0 (6076)

Cours scientifiques - CSC_43043_EP : Programmation C++: Application à l'Informatique Graphique 3D

Domaine > Informatique.

Descriptif

Ce cours propose une introduction à la programmation en langage C++ via l'application en informatique graphique 3D.
Le langage C++ est le plus utilisé pour l'écriture de logiciels scientifiques de grande envergure nécessitant une interaction temps-réel. Son utilisation couvrant, par exemple, la majorité des logiciels de moteurs de jeux (Unity, Unreal, Godot, moteurs des jeux AAA), modeleurs image/vidéo et 3D (Maya, Blender, Photoshop, Catia, etc.), calculs parallèle (CUDA), frameworks d'apprentissage et de vision (PyTorch, TensorFlow, OpenCV), d'OS (Windows), ou même de web (Chrome, Firefox, AWS, etc.).

Ce cours propose de se familiariser avec les concepts de programmation C++, en particulier la notion de programmation "bas-niveau" impliquant la connaissance fine de l'utilisation mémoire des variables utilisées par le programme. Le cours propose également une ouverture vers les bonnes pratiques de programmation de logiciels de taille importante (au dela de scripts de quelques centaines de lignes), en particulier la notion de modularité et d'architecture logicielle.

Les applications de l'apprentissage du C++ se font via le cas d'application en informatique graphique 3D temps-réel, via l'utilisation de l'API OpenGL. Le cours propose de découvrir les concepts de base de la "programmation graphique", en particulier le rendu d'images, la modélisation, et l'animation 3D efficace, via l'utilisation du C++ et de la programmation sur GPU via shaders. Les concepts présentés permettent de comprendre les mécanismes sous-jacents aux moteurs de rendus graphiques pour des applications plurisdiciplinaires tel que pour le jeu vidéo, les applications de rélaité virtuelles, la visualisation scientifique, l'imagerie médicale et biologiques, en encore la simulation physique.

Le cours est principalement orienté vers la pratique, avec des exercices et un projets final demandant de réaliser une scène 3D animée en langage C++.

Objectifs pédagogiques

Partie C++
- Connaître les concepts de base de la programmation en C++ (variables, types, structures de contrôle, fonctions, classes, etc.)
- Etre familiarisé avec la programmation de bas niveau et le modèle mémoire.
- Savoir utiliser le modèle de programmation orientée objet et la programmation générique.
- Etre capable de quantifier l'impact des structures de données sur l'efficacité du code. Mise en oeuvre des structures adaptées.
- Connaitre et mettre en oeuvre les bonnes pratique de développement logiciel.

Partie Informatique Graphique
- Connaitre les étapes principales du pipeline de rendu graphique.
- Etre familiarisé avec les concepts de programmation graphique efficace (préparation des données, interfacage CPU/GPU, impact du pipeline de rendu).
- Savoir manipuler le modèle de coordonnées projectives.
- Savoir manipuler et mettre en oeuvre les transformations sur des scènes 3D, ainsi que les modèles de caméra.
- Etre familiarisé avec la programmation parallèle sur GPU via les shaders en GLSL.
- Comprendre et savoir manipuler les concepts d'illumination, de texture, de modélisation et d'animation.
 
 

 

35 heures en présentiel (10 blocs ou créneaux)

50 heures de travail personnel estimé pour l’étudiant.

effectifs minimal / maximal:

1/130

Diplôme(s) concerné(s)

Pour les étudiants du diplôme Titre d’Ingénieur diplômé de l’École polytechnique

Vous devez avoir validé l'équation suivante : UE CSC_3X071_EP Ou UE CSC_41011_EP

Niveau requis en informatique : INF371 ou INF411

Format des notes

Numérique sur 20

Littérale/grade réduit

Pour les étudiants du diplôme Titre d’Ingénieur diplômé de l’École polytechnique

Vos modalités d'acquisition :

  • Cours en amphi évalué par un examen écrit classant
  • TPs suivi d'un projet en binôme évalués par le rendu de projet.

La note du module est la moyenne entre celle de l'examen écrit et la note de projet.

Le rattrapage est autorisé (Note de rattrapage conservée)
    L'UE est acquise si note finale transposée >= C
    • Crédits ECTS acquis : 5 ECTS

    Le coefficient de l'UE est : 10

    La note obtenue rentre dans le calcul de votre GPA.

    La note obtenue est classante.

    Pour les étudiants du diplôme Programmes d'échange internationaux

    Vos modalités d'acquisition :

    • Cours en amphi évalué par un examen écrit, qui peut être rédigé en anglais (sujet fourni dans les deux langues). 
    • TPs suivi d'un projet en binôme évalués par le rendu de projet.

    La note du module est la moyenne entre celle de l'examen écrit et la note de projet.

    Le rattrapage est autorisé (Note de rattrapage conservée)
      L'UE est acquise si note finale transposée >= C
      • Crédits ECTS acquis : 5 ECTS

      La note obtenue rentre dans le calcul de votre GPA.

      Pour les étudiants du diplôme Non Diplomant

      Vos modalités d'acquisition :

      • Cours en amphi évalué par un examen écrit. 
      • TPs suivi d'un projet en binôme évalués par le rendu de projet.
      • Cours en amphi évalué par un examen écrit classant
      • TPs suivi d'un projet en binôme évalués par le rendu de projet.

      La note du module est la moyenne entre celle de l'examen écrit et la note de projet.

      Le rattrapage est autorisé (Note de rattrapage conservée)
        L'UE est acquise si note finale transposée >= C
        • Crédits ECTS acquis : 5 ECTS

        Programme détaillé

        - Concepts du langage C++: types et syntaxe

        - Modèle mémoire

        - Bonnes pratiques de développement

        - Programmation générique et efficace

        - Programmation interactive, GUI

         

        - Coordonnées projectives

        - Pipeline de rendu graphique

        - Programmation GPU, langage de shaders

        - Modélisation de surfaces

        - Animation de formes 3D

        - Simulation physique

        - Visualisation scientifique

        Mots clés

        C++, développement logiciel, Informatique graphique, GPU, 3D

        Méthodes pédagogiques

        Cours en amphi plus TPs (C++, OpenGL). Projet final en binôme.
        Veuillez patienter