1 Pipeline graphique
Une application 3D se décompose de la façon suivante- Application (CPU)
- Géométrie (GPU)
- Transformation (GPU)
- Rasterization (GPU)
1.1 Application
L’application est le programme qui permet de charger et de piloter l’environnement 3D. La partie applicative s’occupe entre autres de :- Chargement des modèles 3D
- Entrée utilisateurs
- Animation des modèles
- Gestion des collisions
1.2 Géométrie
Position, Rotation, Scale
La position est un vecteur 3D, représenté par 3 nombres réels x,y,z. Il représente un point dans un référentiel 3D. La rotation est un vecteur 3DVertex
Un Vertex est un point 3D représenté par des coordonnées x,y,z.Face
Une face est une liste d’index vers 3 vertices représentant une surface (triangle) En règle générale les moteurs 3d temps réel ne gèrent que des triangles. Les faces de quatre côtés appelés quad sont générées à partir de 2 triangles.Strips
Le vertex strip est un assemblage de triangles connectés partageant les vertices. Les vertices se suivant les uns à la suite des autres, dans ce cas il n’est pas besoin d’avoir une liste de faces, ce qui économise de l’espace mémoire. Les strips sont une organisation de données souvent utilisée pour les maillages générés à partir de primitives mathématiques telles que les objets CAD. Le format 3DXML les utilisent beaucoup par exemple.Normal
Vecteur 3d (x,y,z) associé à un vertex. Elle est utile au calcul de la lumière. Un triangle contient 3 normales.Texture
Une texture est une image avec des attributs de tiling. Elle est référencée par un matériel qui sera appliqué au faces.Coordonnés de mapping.
Coordonnées 2D dans le référentiel de la texture associées au point 3D.Index Buffer
Un index buffer est une liste d’indices pointant vers des vertices et représentant une liste de triangles. La taille de l’index buffer est toujours un multiple de 3.Material
Un matériel définit la manière dont sera rendu une surface en fonction de ses paramètres et de l’environnement (lumière) Les paramètres varient suivant le type de matériel. Les plus communs sont :- Diffuse : Couleur.
- Specular : réflexion lumineuse.
- Emission : lumière émise par l’objet.
- Ambiant : réaction à la lumière ambiante.
- Texture : image qui sera appliquée sur la surface.
Mesh
Un mesh est un maillage qui consiste en une liste de vertices (Vertex Buffer), une liste d’index vers ces vertices (Index Buffer) qui représente les faces, et un matériel qui sera appliqué à ces faces.Light
En 3d temps réel il existe trois type de lumières. Ces 3 types de lumières sont utilisées car rapides à calculer. Point : un point qui éclaire dans toute les directions jusqu’à une certaine distance. Spot : défini par une position dans l’espace, une rotation et un angle d’ouverture de cône. Directional : Définie par une rotation et un effet infini. Elle est utilisée pour simuler la lumière ambiante en intérieur ou le soleil en extérieur. Elle possède un paramètre de couleur qui sera utilisé lors du rendu en fonction du matériel appliqué au maillage.Caméra
Une caméra est un référentiel dans l’espace qui servira de point de vue pour le rendu de la scène. Une caméra est définie par un near plan qui représente la surface de rendu, un far plan au-delà duquel la scène ne sera plus rendu et un type de projection. Il existe deux types de projections.- La projection orthographique qui est une projection parallèle (sans perspective). La zone qui sera rendue est incluse dans un parallélépipède.
- La projection en perspective est définie par une longueur de focal. La zone de rendu est une pyramide tronquée (frustum) par le near plan.
Entité
Une entité est un référentiel 3D (position, rotation, scale) qui est associé à un mesh, une caméra ou une light afin de la positionner dans l’espace.Scène
Une scène est une hiérarchie contenant les entités nécessaires à la représentation du monde 3D.2 Pipeline de Rendu
1.2 Transformation Afin d’effectuer rapidement les transformations de référentiel des modèles dans l’espace 3D les moteurs de rendu utilisent des matrices. Ces matrices sont formées à partir des attributs de positionnement des modèles dans l’espace : position, rotation et scale. Le moteur de rendu parcourt la hiérarchie des entités de la scène et multiplie récursivement les matrices de chacune par leur parent afin de créer la matrice de transformation de l’entité (et de son maillage associé) : mModel. Chaque matrice mModel sera multipliée par la matrice camera mCamera et la matrice de projection mProj, pour produire la matrice mModelCameraProjection. La carte 3D multipliera en parallèle chaque vertex du maillage par cette matrice afin de calculer la position du vertex du maillage sur l’écran. Détail : http://www.codinglabs.net/article_world_view_projection_matrix.aspx Les GPU possèdent des unités algorithmiques appeler geometry shader capableS d’effectuer des milliers de multiplications en parallèle. 1.2 Rasterisation La rastérisation est le processus de tracé de l’aire du triangle sur l’écran. Le CPU fait appel à un shader (fragment shader) pour chaque pixel du triangle. Le shader utilisera en entrée les attributs du matériel, la liste des lumières afin de calculer la couleur du point à tracer sur l’écran. Il se chargera aussi de calculer la distance entre la caméra et le point tracé afin de ne tracer que les points les plus proches et ainsi éviter les recouvrements. Taille des géométries- En mémoire
- Sur le disque dur